Yacs et Yii

YACS (Yet Another Community System) pourrait être porté sur Yii, mais il y a plusieurs points à considérer avant de se lancer

1. Structure actuelle de YACS

YACS est un CMS léger écrit en PHP sans dépendance à un framework majeur.

Il utilise une architecture propre, mais assez personnalisée pour la gestion des pages, utilisateurs, forums, etc.

Beaucoup de fonctionnalités sont directement codées sans utiliser de patterns MVC stricts.

2. Différences avec Yii

Yii est un framework MVC (Model-View-Controller) complet avec un ORM (ActiveRecord) et des composants pour la sécurité, la validation, les formulaires, etc.

Porter YACS sur Yii signifierait :

  • Recréer la logique métier en modèles Yii.
  • Refondre les pages en views Yii.
  • Adapter ou recréer les contrôleurs pour respecter la structure MVC.
  • Remplacer la gestion des sessions, des permissions et des bases de données par les composants Yii correspondants.


3. Avantages d’un portage

  • Utilisation des fonctionnalités natives de Yii (sécurité, ORM, RBAC, modules, etc.).
  • Meilleure maintenabilité et possibilité de profiter des mises à jour du framework.
  • Intégration plus facile avec d’autres packages ou extensions Yii.


4. Inconvénients / Challenges


C’est un travail non trivial : presque une réécriture complète.

Certaines fonctionnalités “custom” de YACS (ex. la structure de pages ou le moteur de forum) peuvent nécessiter des adaptations importantes.

Risque de divergences avec la communauté YACS si la version Yii est trop différente.

? Conclusion :

Oui, c’est faisable techniquement, mais ce serait plutôt une réécriture adaptée à Yii qu’un simple portage. Si l’objectif est juste d’avoir YACS “sur Yii”, il vaut mieux évaluer si l’investissement en vaut la peine par rapport à rester sur la version existante ou envisager un CMS Yii natif qui couvre déjà vos besoins.


Étape 1 : Analyse et planification

Lister toutes les fonctionnalités de YACS :

  • Gestion des pages et articles
  • Système de forum / commentaires
  • Utilisateurs, permissions et groupes
  • Gestion des médias (images, fichiers)
  • Modules existants (si présents)

Identifier les dépendances externes :

  • Bibliothèques PHP tierces
  • Scripts JS/CSS
  • Plugins spécifiques

Cartographier la structure existante :

  • Tables SQL
  • Fonctions utilitaires
  • Templates

Objectif : savoir exactement ce qu’il faut migrer et ce qui peut être réécrit via Yii.

Étape 2 : Préparer Yii 2

  1. Créer un nouveau projet Yii 2 (basic ou advanced selon la complexité)

  2. Configurer 

    • Base de données (MySQL, PostgreSQL, etc.)
    • Composants essentiels (user, authManager, mailer, log)
  3. Installer les extensions Yii nécessaires :

    • yii2-bootstrap ou autre framework CSS
    • yii2-imagine pour la gestion d’images
    • yii2-gridview si besoin de tableaux avancés

Étape 3 : Modèles (Models)


  1. Pour chaque table YACS, créer un ActiveRecord Yii 2
    Exemple : users, articles, comments, media
  2. Ajouter les règles de validation (correspondant aux contraintes SQL et business)
  3. Créer les relations entre les modèles :
    • User → Articles (un à plusieurs)
    • Article → Comments (un à plusieurs)


Étape 4 : Contrôleurs (Controllers)

  1. Créer un contrôleur par grande entité fonctionnelle :
    • SiteController pour les pages publiques
    • ArticleController pour la gestion des articles
    • ForumController pour le forum / commentaires
    • UserController pour l’authentification et la gestion des profils
  2. Implémenter les actions CRUD (create, view, update, delete) via Yii
  3. Intégrer les composants Yii pour :
    • Authentification / RBAC
    • Pagination et tri
    • Upload de fichiers


Étape 5 : Vues (Views)

  1. Reproduire les templates YACS dans des views Yii 2 (.php)
  2. Adapter :
    • La syntaxe pour les liens, formulaires, affichage de données
    • Les widgets Yii pour la pagination, les formulaires, les grilles
  3. Refaire le layout global (main.php) pour inclure le header/footer commun

Étape 6 : Gestion des extensions / plugins

  • Les modules ou extensions de YACS devront être réécrits en modules Yii 2.
  • Si le CMS avait des hooks ou des événements, utiliser le système d’events de Yii 2.


Étape 7 : Migration des données

  1. Écrire des scripts pour migrer les données SQL YACS vers les tables Yii 2.
  2. Vérifier que les identifiants, relations et permissions restent cohérents.
  3. Tester la cohérence après migration.


Étape 8 : Sécurité

  • Activer CSRF pour tous les formulaires.
  • Vérifier les permissions via authManager (RBAC).
  • Vérifier le filtrage des contenus HTML (XSS) et les uploads (sécurité des fichiers).

Étape 9 : Tests et déploiement

  1. Créer des tests unitaires et fonctionnels avec codeception (intégré à Yii 2)
  2. Tester toutes les fonctionnalités :
    • Articles, pages, commentaires
    • Authentification / rôles
    • Uploads et médias
  3. Déployer sur un serveur de test avant production


Étape 10 : Maintenance et documentation

  • Documenter la structure Yii 2 (modèles, contrôleurs, vues)
  • Prévoir un guide de migration pour les futures mises à jour de YACS
  • Intégrer éventuellement des tests automatisés pour garantir la stabilité