Bonjour,
C’est suite à diverses demandes que j’ai pu lire dans le forum de Uzine que l’idée m’est venue de reprendre ce petit bout de code et répondre ainsi à la demande.
En fait la question originale était : comment faire pour permettre de montrer les personnes connectées récemment comme dans la partie privé ?
Ben, il suffit de reprendre le bout de code et de l’adapter. C’est ce que j’ai fait. Je n’ai donc aucun mérite sauf celui de le présenter ici.
Je tiens à remercier Fil, Ben et Ced pour leurs excellentes remarques et bonnes pistes qui m’ont permis d’en faire un filtre très propre.
Voici le code qu’il suffit de mettre dans le fichier mes_fonctions.php3 :
/*
* +---------------------------------------------+
* Nom du Filtre : membres récemment connectés
* +---------------------------------------------+
* Date : mercredi 09 avril 2003
* Auteur : Txia Lyfoung Email:txia@lyfoung.com
* site : http://lyfoung.com
* +---------------------------------------------+
* Fonctions de ce filtre :
* Permet de voir les personnes qui se sont
* connectés récemment
* Appelez le dans vos squellette tout simplement
* par : [(#URL_SITE|nb_connect)]
* +---------------------------------------------+
*
* Pour toute suggestion, remarque, proposition d'ajout
* reportez-vous au forum de l'article :
* http://www.uzine.net/spip_contrib/article.php3?id_article=94
*
*/
function nb_connect($resultat){
global $table_prefix;
$query = "SELECT nom, en_ligne FROM ".$table_prefix."_auteurs WHERE (TO_DAYS(now())-TO_DAYS(en_ligne))<=7 ORDER BY en_ligne DESC";
$resultat = "";
$result_auteurs = spip_query($query);
$nb_connectes = spip_num_rows($result_auteurs);
$flag_cadre = ($nb_connectes > 0);
if ($flag_cadre) {
$resultat.="<p>";
if ($nb_connectes > 1) $resultat.="<u>Membres récents :</u>";
else $resultat.="<u>Membre récent :</u>";
while ($row = spip_fetch_array($result_auteurs)) {
$nom_auteur = $row["nom"];
$en_ligne = $row["en_ligne"];
$resultat.="<br>$nom_auteur <span style='font-size:78%'> [ $en_ligne ]</span>";
}
}
return $resultat;
}
// FIN du Filtre nb_connect
et ensuite de l’appeler dans votre squelette par :
<div class='spip_encadrer' style="font-size:80%">
[(#URL_SITE|nb_connect)]
</div>
La div est facultative. Elle permet simplement d’encadrer.
Bien sûr ma présentation peut être modifiée, car ici j’ai pris le parti de montrer les personnes « récemment » connectées (7 derniers jours).
On peut ainsi prendre le parti de montrer les personnes connectées depuis la (ou les x) dernière(s) heure(s) ou même minute(s), ou encore le mois en cours ...
Il faut modifier la partie de code :
$query = "SELECT nom, en_ligne FROM ".$table_prefix."_auteurs WHERE (TO_DAYS(now())-TO_DAYS(en_ligne))<=1 ORDER BY en_ligne DESC";
C’est le (TO_DAYS(now())-TO_DAYS(en_ligne))<=7 qu’il faut changer : Ici ça signifie date de connexion inférieure ou égale à 7 (soit 7 jours !)
Pour le mois en cours, il faudrait mettre (MONTH(now())-MONTH(en_ligne))=0, il me semble....
C’est un exemple. Je vous laisse le soin de consulter ce lien pour comprendre les commandes Mysql pour ces modifications.
J’avoue ne pas être un pro en ce domaine et avoir tatonné un peu avant d’arriver à mon résultat.
voir ce lien : Tout est facile, SQL
La version, en fonctionnement sur mon site test @Lyfoung Test en SPIP v1.5.2 et mon site de production @Lyfoung en v1.6b6, présente les membres qui se sont identifiés les deux derniers jours et durant le mois en cours.
J’espère que cette contrib interressera quelques-uns.
@+
Aucune discussion
Ajouter un commentaire
Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :
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.
Suivre les commentaires : |