← Ecosistema

JoeCMS

cms.giorgiopalermo.com in arrivo

Il CMS PHP su cui girano gli altri progetti: un motore open source fermo da anni, riportato in vita su PHP 8 e trasformato in un pacchetto che si installa dal browser.

Il problema

Ogni progetto nuovo ripartiva dalle stesse fondamenta: utenti, permessi, email, lingue, cache, backend. Il motore su cui lavoravo da anni, VGallery, era fermo a PHP 7 e su PHP 8 non si avviava: costrutti rimossi dal linguaggio e centinaia di chiamate su valori nulli diventate errori fatali.

Le alternative erano un CMS generico da piegare a ogni progetto o un framework su cui ricostruire tutto da capo. Ho scelto di recuperare il motore: una migrazione conservativa, che replica il comportamento di PHP 7 invece di riscriverlo, e un installer che da un archivio ZIP tira su un sito funzionante.

Come funziona

Struttura

I contenuti sono nodi tipizzati con campi dinamici: non esiste una tabella per ogni tipo di contenuto, e aggiungerne uno è configurazione, non codice. Intorno ci sono routing dichiarativo in XML, template a segnaposto e blocchi, e un backend con griglie e form generati dal database.

Flusso d'uso

Si scompatta lo ZIP nella cartella del sito e si apre il browser. Un wizard in dieci passi controlla i requisiti, crea il database, prova l'invio email, raccoglie i dati aziendali e lascia un sito multilingua già popolato, con pagine legali, robots.txt e regole Apache legate al dominio vero.

Scelte tecniche

Correzioni conservative invece di riscritture, su una base senza test: cast e controlli, e un lint dopo ogni modifica di massa. L'installer è indipendente dal framework, perché deve funzionare quando il CMS non si avvia ancora. Un errore fatale diventa una pagina 500 con un codice da cercare nei log, mai file e riga a video.

Limiti noti

È un motore con quasi vent'anni di storia: convive con alcune classi duplicate del framework e con parti ereditate lasciate inerti. La nuova area di gestione dei contenuti è ancora in sviluppo, e la validazione completa su hosting diversi dal mio è da chiudere.

Numeri

File PHP nel punto di partenza, circa 14.400
File corretti nella migrazione a PHP 8 913
Tabelle nello schema 218
Passi del wizard di installazione 10
Integrazioni di terze parti configurabili 31
Lingue nel pacchetto base 4

Stack

  • PHP 8
  • MySQL / MariaDB
  • Apache
  • SCSS
  • JavaScript
  • Linux
Schermata di JoeCMS

JoeCMS deriva da VGallery (GPL-3) di Alessandro Stucchi.