Auteurs `en_ligne` ?

Bonjour, suite à un ticket sur la forge, @maieul me suggère que le forum est plus approprié pour échanger.

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 :

  1. À quoi sert/correspond le champ en_ligne dans la table spip_auteurs ?
  2. Pourquoi la valeur du champ est mise à jour uniquement avec une authentification sur l’espace privé (et non sur l’espace public) ?
  3. 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) ?
  4. 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).

Merci de votre aide

1 « J'aime »

Ça permet d’afficher les auteurs actuellement connectés dans le bandeau en dessous des menus dans l’espace d’admin.

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.

Tu peux regarder du côté des plugins

En fouillant je viens de trouver ça sur le « Carnet WIKI » par @tcharlss : Date de connexion des utilisateur⋅ices

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.

Ou sur La boucle AUTEURS - SPIP « La boucle AUTEURS » ?

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 ?

Oui, mais comme indiqué dans mon ticket sur la forge, j’ai trouvé plusieurs plugins qui utilisent en_ligne / #EN_LIGNE de façon erronée :

Du coup une mise à jour de la doc pour expliquer son usage me parait bienvenue.