Aujourd'hui, j'ai essayé de migrer mon ancien code de commentaires (pour les articles) vers une classe PHP5. J'avais environ 8 fichiers à migrer plus la table MySQL. Ça m'a pris une journée pour juste cette classe (plus de 8h). C'est vrai que j'ai repensé et recodé souvent. Ce que j'ai tenté de faire, c'est d'avoir une classe de commentaires qui soit très flexible pour le type d'objets commentés. Elle doit pouvoir se réutiliser dans plusieurs projets. Pour ce faire, j'ai ajouté plusieurs callback et des variables globales avec le préfixe 'YSMCOMMENT_'. Je ne pense pas devoir utiliser plusieurs type de commentaire sur la même page, il ne devrait donc pas y avoir de conflits avec les variables globales. Une autre approche serait de définir une classe dérivée (je crois que je vais essayer ça demain). Par exemple, les commentaires pour les articles de mon CMS définissent ces variables: le fichier de configuration, le courriel de l'administrateur et 4 callbacks: obtenir l'item commenté, obtenir l'URL de l'item commenté, obtenir les permissions et réécrire les requêtes.
Voici des cas d'utilisation de ces 4 callbacks:
- Lorsque le formulaire d'envoie d'un commentaire est affiché, un lien vers l'item commenté et le titre de l'item doit être affiché. (callback GetRefItem)
- Lorsque la liste des commentaires à modéré est affichée, les liens vers chaque item commenté doit être affiché. De plus, le titre des items et les commentaires doivent être sélectionnés dans une seule requête. (callback RewriteQuery et GetItemLink)
- Lors de la modification ou modération d'un commentaire, seul les administrateurs du CMS peuvent éditer ces commentaires. (callback HasRights).
Demain, je vais essayer de convertir les commentaires de mon blogue vers ce nouveau système pour mettre à l'épreuve sa flexibilité. Ensuite, je ferai de même pour les commentaires sur le site DomGecko. Et peut-être que je pourrais même le faire pour mes photos.