Installation steps, external libraries, migrations and environment
The installer steps, rules of the base schema and migrations, location and installation modes of external libraries, the update manager, language files and the system check measurements.
Installation runs on the "System check and installation" tab of the extension's edit page as separate, idempotent AJAX steps: check → composer → schema → migrate → defaults → register → finish. The install button is only active without red errors.
Steps
- Base schema:
install/schema/baseline.sql(onlyCREATE TABLE IF NOT EXISTS), then the migrations. - The
defaultsstep generates the cron secret if missing and writes the cron rows. - External libraries when web installation cannot run (e.g.
execdisabled): extractlibraries.zipinto the storage folder with the cPanel file manager, then "Install libraries"; on a terminal without Composerphp install/composer/install.php <storage> --from=<package or vendor folder>(the temporary folder is removed even on failure); with Composerphp install/composer/install.php <storage> [--composer=<path>]— Composer is found on the PATH, at/opt/cpanel/composer/bin/composerand as~/composer.phar. - Running cron: every minute
php cron.phpfrom the framework root (recommended), or the worker URL with themasterdata/cronqueue.runendpoint and the cron secret (the secret is not shown in lists or logs).
External libraries
Composer packages (install/composer/composer.json, PHP ≥ 8.0, platform 8.0.30) in the framework's shared vendor folder with a package manifest; updated stock packages are moved into place from a stage folder. The system check's package row shows the version and the location.
| Package | Version | Purpose |
|---|---|---|
tecnickcom/tcpdf | ^6.7 | PDF generation (the PDF base only swallows the 6.9+ deprecation notice from TCPDF files) |
setasign/fpdi, setasign/fpdf | ^2.6, ^1.8 | importing PDF pages (watermark, merging) |
smalot/pdfparser | ^2.11 | PDF text extraction |
google/apiclient | ^2.15 | Drive storage, conversion (Drive service only) |
guzzlehttp/guzzle, psr7, promises, psr/http-message | ^7.15.2, ^2.13.2, ^2.6, ^1.1 | HTTP; stock packages are updated within the same major version for security |
qualityunit/tnef-decoder | ^1.0 | e-mail attachments (optional) |
Migrations and updates
- Global SemVer (
install.json, currently 1.1.0). New migrations only underinstall/migrations/<version>/, with a header (@id,@requires,@skip-if,@post,@reversible), a prefix placeholder in table names, expand-only (no DROP, RENAME, narrowing, UPDATE without WHERE). - The runner splits conditional DDL to stay portable to MySQL 5.7, runs in exception mode and logs (
migrationtable: version, batch, times, duration, error, SHA-256 checksum, kind, reversibility). The file of an applied migration must not change. - Update manager: signed package (Ed25519); preparation (approval, download, signature and hash, staging, pre-check, backup) and activation (maintenance, delta backup, migration from the staging code, atomic code switch, library sync, health check; automatic code rollback on failure). Independent recovery tool (CLI; web only in an allowed window).
Languages
Every caption comes from a language key in three language folders (en-gb, hu-hu, de-de). The Hungarian language pack re-merges the extension's own translations after copying the pack. Document language: the template language; recipients' e-mails in the person's notification language; the data room switches language without a page reload.
Environment
| Area | Requirement |
|---|---|
| PHP | ≥ 8.0.0 (≥ 8.2 recommended), 64-bit recommended; framework 4.0.2.x |
| Required extensions | mysqli, curl, mbstring, zip, dom, simplexml, libxml, openssl, sodium, gd, zlib, iconv, json, ctype |
| Recommended, optional | fileinfo, OPcache, soap; imap, exif, imagick, intl |
| ini | memory_limit ≥ 128M (512M suggested), max_execution_time ≥ 120 (300 suggested), upload_max_filesize ≥ 32M (64M suggested), post_max_size ≥ upload, max_input_vars ≥ 3000 (5000 suggested), file_uploads = On |
| Database | MariaDB ≥ 10.2.7 or MySQL ≥ 5.7.8; privileges: CREATE, ALTER, INDEX, DROP, CREATE TEMPORARY TABLES; GET_LOCK(); utf8mb4 |
| Writable folders | storage, logs, cache, upload, image (required); extension (recommended) |
| Optional programs | ghostscript, pdftotext, qpdf, tesseract (+hun), imagemagick, composer |