Introduction
Savoir à partir de la partie publique si un auteur (rédacteur ou administrateur) est connecté dans la partie privée reste anecdotique.
Et pourtant ceci peut être utile pour tout squelette de forum si on s’avise d’afficher aussi les visiteurs en ligne.
Mais attention, SPIP ne gère pas directement la connexion des visiteurs, pour celà il faudra auparavant appliquer un petit patch de ma composition.
Le filtre
Voici le filtre à ajouter dans mes_fonctions.php3 qui teste si un auteur (ou visiteur si vous avez appliqué le patch) est connecté :
Utilisation du filtre
Son utilisation est triviale. Appliquez ce filtre au tag #ID_AUTEUR (et seulement celui-ci) et mettez une valeur à afficher entre crochets.
[(#ID_AUTEUR|est_connecte)actuellement en ligne]Si l’auteur n’est pas connecté :
le filtre ne revoit rien, donc rien ne s’affiche.
Si l’auteur est connecté :
le filtre renvoi un espace ’ ’, et l’affichage autour des parenthèses s’effectue.
Mise en garde avec le cache
Attention, si vous avez un cache de page égale à 1 heure, et qu’au moment de la génération de la page par SPIP, l’auteur est en ligne, il apparaîtra en ligne pendant 1 heure ! Le temps que la page expire...
La page où doit figurer ce filtre doit donc avoir un délai ($delai) de cache très court.
Je dirai 5 minutes :
$delai = 300;Comment dans ce cas ne pas regénérer mes pages toutes les 5 minutes ?
Avoir une page avec un cache de 5 minutes peut poser problèmes. Heureusement, SPIP a une fonctionnalité extrêmement utile, c’est l’inclusion de page squelette.
Il faut savoir que chaque squelette inclu (par un <INCLUDE>) dans une page a un délai de mise en cache différent du délai de la page qui l’appelle.
Autrement dit, vous pouvez avoir une page auteur.php3 avec un cache de 24 heures qui appelle une page en_ligne.php3 qui a elle même un cache de 5 minutes !
Démonstration
Soit un script auteur.php3 avec une mise en cache de 24 heures comme suivant :
La page auteur.html contient à un endroit le squelette suivant :
Maintenant construisons notre squelette inclu avec un cache de 5 minutes en_ligne.php3 :
Et la page en_ligne.html de contenir :
Dorénavant, la page « auteur » va appeler un script inclu « en_ligne » qui sera remis à jour toutes les 5 minutes. Donc vous aurez la possibilité de voir les auteurs en ligne sur une page qui restera en cache pendant 24 heures.
Elle est pas belle la vie ?

