Afficher un auteur en ligne

Ceci est une ARCHIVE, peut-être périmée. Vérifiez bien les compatibilités !

Permet d’afficher par un filtre dans la partie publique du site si un auteur est en ligne

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é :

/*****************************************************************************/
/**  Cette fonction permet de vérifier si un auteur est connecté
/**
/**  Auteur  : F. Quointeau
/**  Version : 0.0.1
/**  Date    : 24 Avril 2004
/*****************************************************************************/
function est_connecte( $texte) {
    // Test sur quoi est posé le filtre
    if( is_numeric( $texte)) {
        // Ca paraît bon :-)
        $chaine_requete = "SELECT id_auteur FROM spip_auteurs WHERE id_auteur=$texte AND imessage!='non' AND messagerie!='non' AND en_ligne>DATE_SUB(NOW(),INTERVAL 5 MINUTE)";
        $result_auteurs = spip_query($chaine_requete);
        if( spip_num_rows($result_auteurs) == 1) {
            // Retourner un expace suffit à activer l'affichage
            return( ' ');
        } else {
            // Pas connecté
            return( '');
        }
    } else {
        return( '');
    }
}

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 :

<?php
$fond = "auteur";
$delais = 24 * 3600;

include ("inc-public.php3");

?>

La page auteur.html contient à un endroit le squelette suivant :

<BOUCLE_auteur (AUTEURS){id_auteur}{unique}>
  Nom : #NOM<INCLURE (en_ligne.php3) {id_auteur}>
  Biographie : #BIO
  Site internet : #URL_SITE
  Photo : #LOGO_AUTEUR
</BOUCLE_auteur>

Maintenant construisons notre squelette inclu avec un cache de 5 minutes en_ligne.php3 :

<?php
$fond="en_ligne";
$delais=5 * 60;
include ("inc-public.php3");
?>

Et la page en_ligne.html de contenir :

<BOUCLE_en_ligne (AUTEURS) {id_auteur}>
[(#ID_AUTEUR|est_connecte) <b>actuellement en ligne</b>]
</BOUCLE_en_ligne>

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 ?

Discussion

Aucune discussion

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom