Abonnement à ma liste de contacts

🖮 URL SourceForge ou Github: https://github.com/slhuilli1/nbonlineusers
Etoiles inactivesEtoiles inactivesEtoiles inactivesEtoiles inactivesEtoiles inactives
 

Le besoin spécifique

Aujourd'hui je vous présente un petit plugin qui permet de calculerr le nombre de personnes simultanément connectées sur un site Joomla. Une personne m'a posé une question sur le groupe Joomla Lorraine Groupe à savoir, "comment conaitre le nombre de personnes simultanément connectées sur un site Joomla". Nous allons voir comment mon plugin répond à cette problématique.

Principe de fonctionnement

Le principe de fonctionnement est très simple mais il faut connaitre un point particulier du fonctionnement des sessions de Joomla. En effet, chaque fois qu'un utilisateur se connecte avec un login ou non à Joomla, une ligne est enregistrér dans la base de données. En effet, il faut savoir qu'à chacune des connexions effectuées sous Joomla, une requete SQL modifie la table #__session (où #_ représente le nom de la base Joomla dans MySQL) et intègre un enregistrement dans la base de données. De ce fait, une "simple" requête de type SELECT permet donc de trouver le nombre de personnes simultaménent connectées sur un site.
Il faut aussi savoir que chaque fois qu'un utilisateur se connecte à Joomla, une ligne est créée dans la base de données, dans la table qui répertorie les sessions.
Ainsi, il suffit de "lire" le contenu de la table #_session (et de compter le nombre de résultats retournés) si on veut connaitre les informations des utilisateurs connectés. Et si l'on souhaite connaitre le nombre d'utilisateurs connectés, il suffit de compter le nombre de lignes. Et si vous souhaitez rentrer encore plus dans le détail, j'ai écrit cette requete :

select session_id,client_id, guest, userid, mn8eb_users.username, mn8eb_users.name from mn8eb_session, mn8eb_users where(guest = 0) and mn8eb_session.userid=mn8eb_users.id

Point particulier

Dans la table dénommée #_session, nous pouvons nous rendre compte que des informations sont différenciées. En effet, sur chacune des lignes que nous avons, vous trouverez un champ, dénommé client_id, qui permet de savoir si l'utilisateur connecté l'est dans la partie administrateur de Joomla ou dans la partie front office.
Si la valeur est de 1, utilisateur est connecté dans la partie d'administration, dans le cas où la valeur est à zéro, l'utilisateur est connecté sur la partie publique de Joomla. C'est la raison pour laquelle, dans le reste de mon script, je fais un distinguo nous verrons plus tard.

Les paramètres dans la console d'administration

Dans mon plugin, et vous pouvez le vérifier dans mon fichier XML, j'ai opté pour un paramètre de "templating" à la main de l'utilisateur. Ce paramètre correspond à une chaîne de caractères qui aura pour rôle de jouer un modèle d'affichage au format html.
Comme cela est mentionné dans mon code ainsi que dans le libellé de ce paramètre, vous avez la possibilité de définir une sorte de modèle HTML qui sera affiché. La seule contrainte est d'utiliser le terme {nbonline} dans ce champ texte, mot-clef qui sera au niveau de votre Joomla, remplacé par le nombre d'utilisateurs connectés simultanément.
Dans ce champ, ainsi, si vous saisissez "{nbonline} utilisateurs" ( sans les guillemets bien entendu) le plugin remplacera le terme entre crochet par le nombre. Vous pouvez ici spécifier du code HTML et CSS inline dans ce champs.

Tag utilisé dans vot articles et module pour ce plugin

J'ai opté pour le terme :  {nbonlineusers}

Vous retrouverez ici tous mes articles explicatifs de mes concepts, mes résultats d'analyses techniques m'ayant permi d'aboutir à un fonctionnement de mes applicatifs très fonctionnel

Rapport sondage marche

Voici le rapport statistique du sondage (auquel vous pouvez toujours répondre) que j'ai lancé sur le sujet

Mon GitHub

Voyant que l'intégration du flux RSS ralentissait tout mon site, voisi le simple lien de mon flux RSS : Mon GitHub