mirror of
https://codeberg.org/PostERG/xamxam.git
synced 2026-06-25 16:19:19 +02:00
021c58925efdf7f11e99ae348f7a47606c083d3d
ThesisEditController::save() previously only regenerated the identifier when the year field changed during an edit. If a thesis had its year corrected in a past edit (or via other means) and the identifier still carried the old year prefix, subsequent edits that didn't touch the year field would leave the mismatched identifier in place. Now saves() also checks whether the existing identifier's 4-digit prefix matches the thesis year, and regenerates if not — regardless of whether year changed in the current edit. The migration runner (run.php) only scanned for .sql files, so PHP migrations (013, 016, 018, 038) were never auto-applied. Extended the runner to also discover and execute .php migrations in a subprocess. If a PHP migration fails with an idempotent error (no such column, already exists, duplicate column), the runner treats it as already-applied and continues rather than aborting — preventing a stale migration like 016 (banner_path already dropped by 028) from blocking migrations that come after it alphabetically (e.g. 038). Updated migrations 016 and 038 to accept an optional $argv[1] DB path. Fixed 016 to gracefully handle the banner_path column already being gone (exit 0 instead of fatal).
XAMXAM
(Anciennement Posterg)
Répertoire des travaux de fin d'études de l'ERG (École de Recherche Graphique).
Requirements
- PHP 8.4
- SQLite3 (
php8.4-sqlite3) - nginx (production)
Development
MacOS
Logiciels:
- un IDE pour éditer → VSCode
- git (ou une interface graphique) pour partager les modifications → git-gui (officiel) ou Github Desktop
- un server web avec PHP pour visualiser le project dans le navigateur → MAMP
Workflow
- Faire un changement dans ton IDE
- Démarrer le site via MAMP, en sélectionnant le dossier
public - Vérifier que ça marche sur le site en local, depuis ton navigateur
- Une fois qu'un changement spécifique est fait,
commitles changements sur les fichiers qui sont relatif à ce changement - Vérifier que vous avez syncroniser avec le
remote→pull+rebase! pas merge pushles changements vers le remote
just serve # http://localhost:8000 (public) and /admin/
Deployment
Files are pushed to the server with rsync — there is no repo on the remote.
just deploy # rsync app files → xamxam:/var/www/xamxam/
just deploy-db # push local xamxam.db → remote (only if remote DB is absent)
deploy-db refuses to run if a database already exists on the server, to avoid
accidental overwrites of production data.
First-time server setup
ssh xamxam
sudo mkdir -p /var/www/xamxam
sudo chown www-data:xamxam /var/www/xamxam
sudo chmod 775 /var/www/xamxam
exit
Then deploy once and apply nginx config:
just deploy
just deploy-nginx
Admin users (htpasswd)
just manage-admin-users
# Then on server:
ssh xamxam "sudo bash /tmp/manage-admin-users.sh"
Security notes
- Admin panel protected by nginx
auth_basic+ PHP session (AdminAuth) - Uploads stored outside webroot, served via controlled
media.php - Rate limiting on public search (
src/RateLimit.php) - See
nginx/docs/SECURITY_HEADERS.mdfor security headers reference
Description
Languages
PHP
78.2%
CSS
11.4%
JavaScript
6.9%
Shell
1.5%
Just
1.3%
Other
0.7%