← Écosystème

JoeCMS

cms.giorgiopalermo.com bientôt

Le CMS PHP sur lequel tournent les autres projets : un moteur open source à l'arrêt depuis des années, remis en marche sous PHP 8 et transformé en un paquet qui s'installe depuis le navigateur.

Le problème

Chaque nouveau projet repartait des mêmes fondations : utilisateurs, droits, e-mails, langues, cache, back-office. Le moteur sur lequel je travaillais depuis des années, VGallery, était resté à PHP 7 et ne démarrait même pas sous PHP 8 : des constructions retirées du langage et des centaines d'appels sur des valeurs nulles devenus des erreurs fatales.

Les alternatives étaient un CMS générique plié à chaque projet, ou un framework sur lequel tout reconstruire. J'ai choisi de récupérer le moteur : une migration prudente, qui reproduit le comportement de PHP 7 au lieu de le réécrire, et un installateur qui transforme une archive ZIP en un site qui fonctionne.

Comment ça marche

Structure

Les contenus sont des nœuds typés avec des champs dynamiques : il n'y a pas une table par type de contenu, et en ajouter un relève de la configuration, pas du code. Autour, un routage déclaratif en XML, des gabarits à balises et à blocs, et un back-office dont les grilles et formulaires sont générés à partir de la base de données.

Parcours d'usage

On décompresse le ZIP dans le dossier du site et on ouvre le navigateur. Un assistant en dix étapes vérifie les prérequis, crée la base de données, teste l'envoi d'e-mails, recueille les informations de l'entreprise et laisse un site multilingue déjà rempli, avec pages légales, robots.txt et règles Apache liées au vrai domaine.

Choix techniques

Des corrections prudentes plutôt que des réécritures, sur un code sans tests : conversions de type et contrôles, et un lint après chaque modification de masse. L'installateur est indépendant du framework, car il doit fonctionner quand le CMS ne démarre pas encore. Une erreur fatale devient une page 500 avec un code à chercher dans les journaux, jamais un fichier et une ligne à l'écran.

Limites connues

C'est un moteur qui a presque vingt ans d'histoire : il cohabite avec quelques classes dupliquées du framework et des parties héritées laissées inertes. Le nouvel espace de gestion des contenus est encore en développement, et la validation complète sur d'autres hébergements que le mien reste à terminer.

Chiffres

Fichiers PHP au point de départ, environ 14 400
Fichiers corrigés lors de la migration vers PHP 8 913
Tables du schéma 218
Étapes de l'assistant d'installation 10
Intégrations tierces configurables 31
Langues du paquet de base 4

Stack

  • PHP 8
  • MySQL / MariaDB
  • Apache
  • SCSS
  • JavaScript
  • Linux
Capture d'écran de JoeCMS

JoeCMS dérive de VGallery (GPL-3) d'Alessandro Stucchi.