J’ai du mal à comprendre le fonctionnement du champ en_ligne de la table spip_auteurs. Je n’ai pas vraiment trouvé de doc pour m’éclairer à ce sujet et j’ai l’impression que en_ligne provoque une confusion quant à son fonctionnement/utilisation.
Je réitère donc une partie de mes questions ici :
À quoi sert/correspond le champ en_ligne dans la table spip_auteurs ?
Pourquoi la valeur du champ est mise à jour uniquement avec une authentification sur l’espace privé (et non sur l’espace public) ?
Pourquoi la valeur du champ est remise à 0000-00-00 00:00:00 lors d’un action/logout ? (qu’on soit sur l’espace privé ou public) ?
Quid des auteurs qui ne se déconnectent pas en cliquant sur Se déconnecter ? La valeur de la date en_ligne reste pour toujours ?
j’ai aussi l’impression qu’il y a une confusion sur le fait de considérer que si en_ligne == '0000-00-00 00:00:00' alors l’auteur ne s’est jamais connecté. Ce raisonnement est erroné car en_ligne est réinitialisé à 0000-00-00 00:00:00 si un auteur clique sur Se déconnecter. Cette confusion impacte plusieurs plugins et pourrait provoquer des bugs/incohérences.
Je pense qu’il serait bon de clarifier le fonctionnement du champ en_ligne et rédiger une documentation sur programmer/contrib. Cela pourrait éviter les confusions et les contributions comme Les membres qui se sont connectés dans les 7 derniers jours - SPIP-Contrib erronées, car de fait il manque aussi les auteurs qui se sont connectés puis déconnectés (en cliquant sur Se déconnecter).
C’est ce que j’en ai déduis, et d’après le code j’ai l’impression que c’est ça seule utilisation qui peut en être fait.
Ce champ correspond aux auteurs « actuellement en ligne » si on y ajoute un délai de présence.
En aucun cas il ne peut servir pour déterminer quel auteur « a été en ligne » car la valeur en_ligne est réinitialisée à 0000-00-00 00:00:00 si l’auteur clique sur Se déconnecter.
La table `spip_auteurs` dispose nativement d’un champ `datetime` `en_ligne`.
Attention ce champ ne permet pas de tracer la date de dernière connexion des utilisateur⋅ices, c’est un faux ami :)
Il est destiné uniquement à un usage interne dans l’espace privé : sa finalité est d’indiquer qui est en ligne en ce moment dans l’espace privé, ainsi :
- La date n’est mise à jour que quand on se connecte dans le privé
- La date est remise à zéro dès qu’on se déconnecte
La seule façon de tracer les dates de connexion de tout le monde est d’utiliser le plugin Date de connexion : https://git.spip.net/spip-contrib-extensions/date_connexion
Peut-être à basculer directement sur contrib pour que cette information soit plus visible.
En l’état, le champ #EN_LIGNE n’y est même pas mentionné au côté des autres champs.
Peut être en raison de son usage très ciblé /ecrire et somme toute assez peu utilisable en général ?