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 ?

Dernière modification de cette page le 28 avril 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.

    Répondre à ce message

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

    Compatible ou pas ?

    Répondre à ce 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

    Répondre à ce message

Ajouter un commentaire

Qui êtes-vous ?

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