phpMyChat est un système de discussion temps-réel développé par Nicolas Hoizey et disponible sur SourceForge
Cette application open source est simple à mettre en œuvre, entièrement personnalisable et s’appuie sur une base de données. Un chat s’effectue par le biais d’une simple page HTML contenant des frames invisibles rafraîchies périodiquement, ce qui permet d’afficher les nouveaux messages. Le code développé permet un maximum de compatibilité et une utilisation derrière un firewall. Pour ces raisons, cette application rencontre un vif succès et de nombreux sites l’utilisent.
SPIP étant particulièrement adapté à des usages communautaires, l’idée d’y associer un système de discussion temps-réel entre membres d’une même communauté peut paraitre évidente. Dans le cas d’une association, il est intéressant de créer un espace membre pour mettre en commun des ressources entre les auteurs SPIP, c’est à dire entre les membres de l’association. L’ajout d’un chat entre membres peut s’avérer pratique pour organiser des réunions virtuelles.
Recherche des utilisateurs dans la table spip_auteurs
phpMyChat recherche les utilisateurs enregistrés dans la table c_reg_users qui contient un champs username et un champs password ; ce dernier étant crypté par un hachage MD5. Dans SPIP, les auteurs sont authentifiés à partir de la table spip_auteurs qui contient un champs login et un champ pass ; ce dernier étant également crypté en MD5 mais après l’avoir concaténé préalablement par le champs alea_actuel. Il suffit donc de modifier les fonctions de phpMyChat afin que les requêtes SQL pour l’authentification s’effectuent sur les champs de spip_auteurs au lieu de c_reg_users.
Il se pose également 2 problèmes :
- Il faut désactiver et/ou supprimer les fonctions phpMyChat permettant d’enregistrer ou modifier un nouvel utilisateur (sinon on prend le risque d’ajouter / modifier des auteurs spip depuis le chat).
- Certains champs présent dans la table c_reg_users de phpMyChat ne sont pas présents dans la table spip_auteurs.
Pour le premier point les fonctions de modification des utilisateurs ont été supprimées. Pour le second point, faute d’utiliser 2 tables séparées, il faut ajouter des champs dans la table spip_auteurs de spip.
Le fichier ci-après joint propose une version modifiée de phpMyChat 0.14.5 permettant d’authentifier les utilisateurs du chat en tant qu’auteur SPIP.
Installation de phpMyChat modifié pour SPIP
Télécharger le fichier ci-dessous puis décompresser le dans votre répertoire courant de SPIP (où n’importe où ailleurs). Renommez le répertoire crée chat.
Ensuite à partir de votre interface phpMyAdmin, exécutez les requêtes suivantes sur votre base SPIP :
Modifiez ensuite le fichier config.lib.php3 contenu dans le répertoire config :
Vous devez simplement renseigner le nom de votre base SPIP et votre user/password MySQL dans le premier bloc du fichier de configuration.
Si vous ne souhaitez qu’une salle de discussion par défaut, remplacez $DefaultChatRooms = array('Default', 'MyRoom1', 'MyRoom2'); par $DefaultChatRooms = array('Default');
A noter que les noms des champs utilisés pour l’autentification sont définies dans le second bloc.
TODO
- Il n’y a plus de distinction entre utilisateurs phpMyChat (user, admin, moderateur). On pourrait utiliser les statuts des auteurs de
spip_auteurspour distinguer les utilisateurs (par exemple 0minirezo = utilisateur du chat et 1comite = moderateur du chat.
- Cette version modifiée représente une branche parallèle à la version officielle de phpMyChat et en outre ne bénéficie pas de l’assistant html d’installation. Pour fusionner les modifs dans la version courante, il faudrait rajouter un indicateur dans le fichier de config (spip et pas spip) et l’utiliser pour activer ou non les fonctions de modification/ajout d’utilisateurs + adapter la fonction setup.php3 pour la configuration interactive avec question intégré avec spip ou pas ?
- Vérifier que les futures mises à jour de SPIP ne nécessitent pas d’ajouter à nouveau les champs maquants dans spip_auteurs (ou segmenter en 2 tables avec mise à jour à chaque execution du chat !!).


