Cette contrib permet de voir qui s’est connecté récemment (auteurs ou visiteurs) à partir de l’interface privée de SPIP.
Première étape :
Spip gère la date de connexion pour les auteurs, cela permet d’afficher qui est en ligne en ce moment dans la partie privée.
Comme les visiteurs n’ont pas acces à la partie privée,
SPIP ne gère pas la date de connexion d’un visiteur.
Nous allons corriger ca :
Mais du coup, si on met à jour la date de connexion d’un visiteur, il va apparaître connecté dans la partie privée :
Commencons par modifier le petit bout de code qui permet de mettre à jour la date de dernière connexion d’un visiteur :
Modification du fichier spip_cookie.php3 pour mettre à jour la connexion des visiteurs
Dans le fichier spip_cookie.php3 :
Ligne 123 (Sur une version 1.7.2)
Vous avez :
Ajoutez ce petit code en ligne 128 pour donner ceci :
Deuxième étape :
Maintenant, nous allons devoir modifier un tout petit peu le code d’affichage des présents, pour enlever les visiteurs. C’est tout simple, il suffit de changer une requête SQL comme suivant :
Fichier ecrire/inc_presentation.php3, ligne 1728 (SPIP 1.7.2), vous avez le code suivant :
Changez simplement la chaine $query2 comme suivant :
Troisième étape :
Maintenant il ne vous reste plus qu’à afficher la date de dernière connexion pour un visiteur et la date de dernière connexion OU dernière déconnexion pour un auteur.
Soit vous faites un petit script vous même, soit vous pouvez modifier l’affichage de la page auteurs.php3 dans la partie privée.
Voici simplement comment faire pour modifier l’affichage des auteurs/visiteurs et obtenir ceci :
Modification de ecrire/auteurs.php3 afin d’ajouter une colonne de date de connexion
Ligne 232 de ecrire/auteurs.php3 (version 1.7.2)
Vous avez le code :
Ajouter cette ligne pour donner le nouveau titre de colonne comme ceci :
Au passage, on pourrait ajouter "En ligne" dans la liste des variables de langue, mais je ne vais pas vous compliquer la tâche :-)
Maintenant vous avez à la ligne 310 le code suivant :
Ajoutez-y les 9 lignes afin de donner ceci :
Ceci va afficher la colonne de la date de connexion.
Et maintenant, il va falloir sélectionner le champ "en_ligne" dans les requêtes SQL afin qu’elle remontent ce champs de la base.
Les 4 requêtes à modifier sont sous le format suivant :
Il suffit d’ajouter le code :
à la fin de la ligne SELECT des 4 requêtes SQL sous la forme indiquée et qui se trouvent aux lignes 109, 125, 147 et 167 pour SPIP 1.7.2
Celà va donner ceci :
Et voilà, le tour est joué !
C’était pas facile, mais ca en valait la peine non ?
Merci pour cette contribution. Je suis toujours en 183 et le patch fonctionne bien.
Pourrait-on pousser la logique jusqu’au bout et imaginer un véritable système de tracking gardant en mémoire toutes les connections leur durée etc... ?
Ce serait très pratique pour les sites à visée pédagogique...
24 septembre 2006 13:14, par romain (aka LeJamaisContent !)
Sur la base du travail présenté ici, j’ai tenté de présenter deux évolutions :
une version classique (remplaçant ecrire/exec/auteurs.php) pour spip 1.9
une version Plugin
Quelques essais avec spip 182e :
dans spip_cookie on cherche la ligne 150 au lieu de 123 et on insère ligne 155 au lieu de 128
dans ecrire/auteurs.php3 on cherche la ligne 246 au lieu de 232
L’insertion de compteur se fait ligne 130 ???
Bon la bonne nouvelle c’est que le spip n’explose pas !, j’arrive même à afficher la connection d’un visiteur enregistré dans la partie admin, c’est ce que je cherche...
La mauvaise nouvelle c’est que je n’affiche plus aucun admin/auteur/visiteur et encore moins le statut en ligne et la dernière connection. Grosse déception : j’ai du foiré qq part mais c’est normal vu que j’y connait pas grand chose du php !!!....
J’aimerai savoir si cette contribution a été remise à jour pour 1.8.2d car la partie public (connectés en ligne) m’interesse vivement.
Superbe contribution en tous les cas ! Bravo !