Afficher un auteur en ligne

All contributions published for previous SPIP versions

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 ?

updated on 28 April 2005

Discussion

3 discussions

  • Revers

    Je recherche un auteur pour m’aidé dans la démarche, pour publier un manuscrit et les maison d’édition accpte mon ouvrage mais je ne sais pas si leur tarifs sont raisonnable ou s’il est frai de maquette sont vraiment si élevé. Y à t’il une personne suceptible de répondre à mes quetions, merci d’avance.

    Reply to this message

  • Je n’y arrive pas avec spip 1.9.2.b.

    Compatible ou pas ?

    Reply to this message

  • 1

    Je ne vois pas en quoi il faut patcher SPIP. En tout cas, avec la 1.8.2d, ça fonctionne sans patch.

    • Je n’ai pas étudié la question sur la version 1.8, la contrib a été écrite pour une 1.7.

      En tout état de cause, il n’était pas indispensable de patcher SPIP si tu voulais avoir l’information pour les AUTEURS uniquement, et pas les VISITEURS. Le patch te donnait en plus le statut de connexion des visiteurs.

      Hop

    Reply to this message

Comment on this article

Who are you?
  • [Log in]

To show your avatar with your message, register it first on gravatar.com (free et painless) and don’t forget to indicate your Email addresse here.

Enter your comment here

This form accepts SPIP shortcuts {{bold}} {italic} -*list [text->url] <quote> <code> and HTML code <q> <del> <ins>. To create paragraphs, just leave empty lines.

Add a document

Follow the comments: RSS 2.0 | Atom