Structure finale de l’extension phpBB Reactions
📂 Arborescence complète
ext/bastien59960/reactions/
├── 📄 composer.json
├── 📄 ext.php
├── config/
│ ├── 📄 parameters.yml
│ ├── 📄 services.yml ← ✅ Mis à jour
│ └── 📄 routing.yml ← ➕ Nouveau
├── controller/
│ ├── 📄 main.php ← Votre contrôleur existant
│ └── 📄 ajax.php ← ➕ Nouveau (gestion AJAX)
├── event/
│ └── 📄 listener.php ← ✅ Corrigé
├── language/
│ ├── en/
│ │ └── 📄 common.php ← ➕ Nouveau
│ └── fr/
│ └── 📄 common.php ← ➕ Nouveau
├── migrations/
│ ├── 📄 install_reactions_schema.php ← ➕ Nouveau
│ └── 📄 install_reactions_data.php ← ➕ Nouveau
└── styles/prosilver/
├── template/
│ ├── event/
│ │ ├── 📄 overall_header_head_append.html ← ➕ Nouveau
│ │ └── 📄 viewtopic_body_postrow_post_content_after.html ← ➕ Nouveau
│ └── js/
│ └── 📄 reactions.js ← ➕ Nouveau
└── theme/
└── 📄 reactions.css ← ➕ Nouveau
🔧 Vérifications importantes
1. Base de données
Après réactivation, vérifiez que cette table existe :
SELECT * FROM phpbb_post_reactions LIMIT 1;
2. Permissions
L’extension ajoute ces permissions :
f_react: Peut réagir aux postsf_react_own: Peut réagir à ses propres posts
3. Configuration ACP
L’extension ajoute un module dans ACP :
- ACP → Extensions → Reactions
4. Templates actifs
Ces templates doivent être présents et fonctionnels :
overall_header_head_append.html: Inclut CSS/JSviewtopic_body_postrow_post_content_after.html: Affiche les réactions
5. Routes disponibles
/reactions: Page principale/reactions/ajax: AJAX (POST)/reactions/add/{post_id}: Ajouter réaction/reactions/remove/{post_id}/{emoji}: Supprimer réaction
🐛 Debugging
Erreurs possibles et solutions :
1. Erreur « Call to undefined method » → Vérifiez que le listener.php a été remplacé par la version corrigée
2. CSS/JS non chargés → Vérifiez que les fichiers existent dans styles/prosilver/ → Vérifiez que le template overall_header_head_append.html existe
3. AJAX non fonctionnel → Vérifiez que routing.yml existe → Vérifiez que le contrôleur ajax.php est créé → Vérifiez la console navigateur pour les erreurs JS
4. Table non créée → Désactivez puis réactivez l’extension → Vérifiez les migrations dans ACP
5. Réactions non affichées → Vérifiez le template viewtopic_body_postrow_post_content_after.html → Vérifiez que S_REACTIONS_ENABLED est défini dans le listener
🎯 Test de fonctionnement
- Aller sur un topic → Les boutons de réaction doivent s’afficher
- Cliquer sur un emoji → Le compteur doit s’incrementer
- Cliquer sur « + » → La palette d’emojis doit s’ouvrir
- Cliquer à nouveau sur un emoji actif → Doit retirer la réaction
📊 Table de base de données créée
CREATE TABLE phpbb_post_reactions (
reaction_id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
post_id INT(10) UNSIGNED NOT NULL DEFAULT 0,
topic_id INT(10) UNSIGNED NOT NULL DEFAULT 0,
user_id INT(10) UNSIGNED NOT NULL DEFAULT 0,
reaction_emoji VARCHAR(10) NOT NULL DEFAULT '',
reaction_time INT(11) UNSIGNED NOT NULL DEFAULT 0,
PRIMARY KEY (reaction_id),
UNIQUE KEY post_user_emoji (post_id, user_id, reaction_emoji),
KEY post_id (post_id),
KEY topic_id (topic_id),
KEY user_id (user_id),
KEY reaction_emoji (reaction_emoji)
);
🚀 Fonctionnalités implémentées
✅ Affichage des réactions sous chaque post ✅ Multi-réactions par utilisateur ✅ Sélecteur d’emojis avec palette étendue ✅ AJAX pour interactions fluides ✅ Compteurs en temps réel ✅ Support Unicode (pas d’images) ✅ Responsive design ✅ Multilingue (FR/EN) ✅ Permissions granulaires ✅ Migration automatique de la DB ✅ Interface d’administration
🎨 Personnalisation CSS
Les réactions utilisent ces classes CSS principales :
.post-reactions: Conteneur principal.reaction: Réaction individuelle.reaction.active: Réaction de l’utilisateur.reaction-more: Bouton « + ».reaction-picker: Palette d’emojis
🔒 Sécurité
- Validation des emojis : Liste blanche d’emojis autorisés
- Vérification des permissions : Contrôle d’accès par forum
- Protection CSRF : Tokens de sécurité
- Validation des posts : Vérification d’existence
- Requêtes AJAX sécurisées : Headers et validation