{
    "schema": "eupdate-package-specification-v1",
    "author": "PB <pavel.bartos.pb@gmail.com>",
    "project_id": "722cefc7e20e6bc9",
    "software_id": "isedu",
    "software": "isEDU",
    "module": null,
    "release_id": "cdba98e67f791c6e2c7863347ba9e15b",
    "version": "0.3.0",
    "release_date": "2026-09-15",
    "published_at": "2026-09-15T15:09:52+00:00",
    "bytes": 169314,
    "sha256": "6bf3231bfe2dba8d338e7c090821e7b9a584930ee3f058ba8650eeb827d227d5",
    "file_count": 141,
    "languages": {
        "PHP": {
            "bytes": 221157,
            "files": 32
        },
        "SQL": {
            "bytes": 49635,
            "files": 7
        },
        "CSS": {
            "bytes": 9781,
            "files": 3
        },
        "HTML": {
            "bytes": 8567,
            "files": 68
        },
        "Python": {
            "bytes": 8078,
            "files": 1
        }
    },
    "installation_url": "https://update.estudium.eu/package.php?software_id=isedu&version=0.3.0",
    "update_url": "https://update.estudium.eu/package.php?software_id=isedu",
    "install_json": {
        "software": "isEDU",
        "software_id": "isedu",
        "version": "0.3.0",
        "release_date": "2026-09-15",
        "author": {
            "name": "PB",
            "email": "pavel.bartos.pb@gmail.com",
            "website": ""
        },
        "description": {
            "cs": "Společná evidence studentů a lektorů; původní SQLite tabulky v MySQL, instituce u programů, centrální služby eLoaderu.",
            "en": "Shared student and lecturer register; original SQLite table names in MySQL, program institutions and central eLoader services."
        },
        "package": {
            "type": "release",
            "target": "eloader_app"
        },
        "requirements": {
            "php": ">=8.2 <9.0",
            "eloader": ">=1.18.2 <2.0.0"
        },
        "eloader": {
            "api": 1,
            "data_schema": 1,
            "entry": "app.php",
            "database_tables": {
                "mysql": {
                    "prefix": "isedu_"
                }
            },
            "shared_shell": 1
        },
        "installation": {
            "web_root": ".",
            "commands": {
                "linux": {
                    "command": null,
                    "supported": false,
                    "mode": "unsupported"
                },
                "windows": {
                    "command": null,
                    "supported": false,
                    "mode": "unsupported"
                },
                "macos": {
                    "command": null,
                    "supported": false,
                    "mode": "unsupported"
                },
                "other": {
                    "command": null,
                    "supported": false,
                    "mode": "unsupported"
                },
                "source": {
                    "command": null,
                    "supported": false,
                    "mode": "manual"
                }
            }
        },
        "license": "custom",
        "license_custom": "Copyright (c) 2026 PB. All rights reserved.",
        "compatibility": {
            "os_types": [
                "source"
            ],
            "os_versions": [],
            "distribution_ids": [],
            "distributions": [],
            "native_windows_supported": false,
            "native_macos_supported": false,
            "any_linux_distribution": false
        },
        "documentation": {
            "readme": "README.md"
        },
        "project": {
            "website": ""
        },
        "homepage": "",
        "archive_metadata": {
            "working_directory": ".",
            "publisher": "dcf6d41fbcdf0e16",
            "updated_at": "2026-09-15T15:09:52+00:00",
            "application_author": "PB <pavel.bartos.pb@gmail.com>"
        }
    },
    "readme": "# isEDU 0.3.0\n\nSpolečná evidence studentů a lektorů v eLoaderu. MySQL schéma 3 přebírá původní názvy a sloupce SQLite s prefixem `isedu_`. Instituce uskutečňuje studijní program; studenti ani třídy se mezi instituce nerozdělují. Dokumenty a testy patří do dalších aplikací. `students_exams` se nevytváří ani neimportuje.\n\n## Instalace a aktualizace\n\nVyžaduje eLoader **1.18.2 nebo novější 1.x**, PHP 8.2–8.x, PDO MySQL/SQLite a mbstring. Ověřeno na PHP 8.3 a MariaDB 10.11. SQL používá syntaxi společnou s MySQL 8; samostatný běh na MySQL 8 nebyl v tomto prostředí ověřen.\n\n1. V eLoaderu nainstalujte ZIP isEDU nebo nastavte jeho zdroj v eUpdate. V **Nastavení → Databázová spojení** přidělte aplikaci spojení a databázi. Přístupové údaje k MySQL spravuje eLoader.\n2. Při nové instalaci otevřete isEDU jako superadmin, zadejte název organizace a potvrďte vytvoření tabulek. DDL a výchozí role jsou v `sql/install.sql` a `sql/seed.sql`. Nevytváří se databáze serveru ani ukázkoví studenti.\n3. Máte-li zapnutý modul pro staré schéma (např. Student List 1.0.1), nejdříve jej v eLoaderu vypněte. Po aktualizaci použijte kompatibilní vydání; příklad Student List 1.1.0 je v balíčku. Při aktualizaci existujícího isEDU otevřete aplikaci jako superadmin a zvolte **Zálohovat a aktualizovat databázi**. Tento krok je samostatný; pouhá instalace ZIPu nepřevádí data. Převod vytvoří soukromý SQL soubor v datovém adresáři aplikace `backups/` a zachová původní tabulky jako `isedu_backup2_*`. Během převodu je zápis blokován. Účet MySQL potřebuje také práva pro CREATE/DROP/ALTER/RENAME, LOCK TABLES a dočasné TRIGGER. Podrobnosti a obnova: [SCHEMA.md](docs/SCHEMA.md).\n4. Instituce založte v **Nastavení → Instituce** a přiřaďte je jednotlivým programům včetně údaje o akreditaci. Počet institucí není omezen. Studenta lze založit ještě před institucemi, bez studia.\n5. U dříve importované databáze převod doplní chybějící pole z již uloženého archivu a zachová současné úpravy. Tabulky, které starší isEDU nikdy neimportovalo, doplníte novým **ručním** importem stejné SQLite se stejným identifikátorem zdroje.\n\nNespouštějte `install.sql` přes stávající schéma 1/2 jako náhradu převodu. Přechod 2 → 3 koordinuje `src/SchemaUpgrade.php`; `sql/schema-2.sql` slouží pouze k jeho inventáři. Přechod ze schématu 1 nejdříve používá `sql/upgrade-0.1.0-0.2.0.sql`.\n\n## Evidence a přístupy\n\n- Student má všechna původní osobní a kontaktní pole přímo v `isedu_students`, včetně dvou adresních řádků, zákonného zástupce, země narození a fakturačních údajů. Jejich oprávněná úprava se projeví ve všech jeho studiích.\n- Lektor má původní pole přímo v `isedu_lectors`, včetně veřejného e-mailu, popisů, obrázku a interních údajů. Starý příznak `administrator` je jen historický údaj a nepřiděluje roli.\n- Studijní programy, plány, předměty, sylaby, třídy a jejich vazby zachovávají názvy ze SQLite. Plány a sylaby mají navíc verze, aby úprava nepřepsala publikovanou historii.\n- Poznámky, platby a závěrečné práce jsou na kartě studenta. Původní `students_logs` je dostupná pouze oprávněným správcům ke čtení; nové logy jsou výhradně v CentralLog.\n- Lektor vidí jen studenty přiřazeného programu, předmětu nebo třídy. Přiřazení předmětu může zahrnout programy různých institucí. Studijní oddělení lze omezit podle institucí programů; tím nevzniká vlastnictví studenta institucí. Společné třídy a lektory spravují celkové role.\n- Student upravuje vlastní osobní údaje. Přihlašovací údaje, aktivaci, úhrady a interní agendu mění oprávněný správce. Veřejná přihláška se souhlasy a automatickým cenovým procesem se tímto vydáním nezavádí; [audit registrace](docs/POLOZKY-0.3.0.md) rozlišuje její datová a procesní pole.\n\n## Přihlášení a společné služby\n\nKořenový `login.json` čte `isedu_students` a `isedu_lectors`; zvláštní tabulka přihlášení neexistuje. Student `active=0` se po ověření PINu dostane pouze k aktivaci, `active=1` má přístup i bez aktivního studia, absolvent `active=2` a ostatní stavy přístup nemají. Lektor musí mít `active=1`. U obou zdrojů se vyžaduje `login_enabled=1`. Kontaktní e-mail je oddělen od ověřovacího `login_email`.\n\neLoader zajišťuje přihlášení, přidělení MySQL, CentralLog, maily/SMS a další spárované komunikační brány, workspace, menu/submenu, hlavičku a patičku. Obsah používá `html/academic-blue`, `html/b-w`, `html/ea` a katalogy `lang/cz.json`, `lang/en.json`; nastavení vzhledu a systémové kolečko v menu přebírá z eLoaderu. Sdílené knihovny se nebalí do aplikace.\n\nModuly a aktualizace vyřizuje centrální správce balíčků eLoaderu. Manifest deklaruje prefix `isedu_` pro jeho odinstalaci, včetně záložních tabulek této aplikace. Budoucí aplikace pro testy potřebuje vlastní prefix a oprávnění. Ukázkový modul Student List 1.1.0 je v `examples/student-list/`; [rozhraní modulů](docs/MODULES.md).\n\n## Ruční import SQLite\n\n1. Otevřete **Nastavení → Import SQLite**. Vyberte soubor z privátního `import/`, nebo jej přetáhněte/vyberte ve formuláři. Samotné vložení ani přetažení import nespustí.\n2. Zvolte **Načíst a zkontrolovat**. Náhled ukáže počty, chybějící volitelné tabulky a nevyřešené vazby.\n3. Přiřaďte **pouze programy** k institucím. Při opakování zachovejte identifikátor původního zdroje, aby platilo mapování existujících záznamů. Zkontrolujte údaje a potvrďte spuštění.\n4. Import je transakční, zdroj je otevřen jen pro čtení. Opakovaný stejný zdroj nepřepisuje současné úpravy. Změněné zdrojové záznamy hlásí jako konflikt. Původní chybná vazba se uchová a označí `_import_valid=0`, aby omylem nerozšířila přístup. Nový identifikátor zdroje znamená nový soubor mapování, nikoli aktualizaci starého.\n\nLimit souboru je **200 MiB (209 715 200 bajtů)**. Pro celý multipart požadavek je potřeba rezerva: PHP `upload_max_filesize=200M`, PHP POST a Nginx alespoň `210M` / `210m`. Absolutní cesta s read-only příznakem PDO funguje i při `open_basedir`. [Postup konfigurace uploadu](docs/UPLOAD-200MB.md). Instalace aplikace nemění Nginx ani PHP-FPM na hostingu.\n\nDistribuce neobsahuje skutečná osobní data, SQLite ani produkční hesla. Ověření popisují `tests/README.md` a výsledky 0.3.0. Produkční nasazení nebylo provedeno.",
    "download_url": "https://update.estudium.eu/download.php?project=722cefc7e20e6bc9&release=cdba98e67f791c6e2c7863347ba9e15b",
    "package_target": "eloader_app",
    "requirements": {
        "php": ">=8.2 <9.0",
        "eloader": ">=1.18.2 <2.0.0"
    },
    "license": {
        "id": "custom",
        "name": "Vlastní",
        "custom_text": "Copyright (c) 2026 PB. All rights reserved."
    },
    "deployment": {
        "archive_root": ".",
        "web_root": "."
    },
    "project_type": "application",
    "hosting": null
}