[spip-dev] Problème trés pointu : session avec ajout de variable dans un plugin

Bonjour,

Sur un SPIP mutualisé (mais il me semble que c'est idem si non mutualisé) j'ai un plugin qui utilise le pipeline
'preparer_fichier_session'.

La fonction du pipeline 'preparer_fichier_session' utilise une fonction ('ent_inrub') et une variable super globale
($GLOBALS['valniv']) que j'utilise aussi ailleurs (j'y ai ajouter aussi un define pour le test :
define('_AP_VALNIV',...);). Ce pipeline ajoute des variables sessions.

Premier bug : en mettant la fonction et la variable dans mes_options du plugin : ils ne sont pas reconnus, je les ai
donc mis dans mes_options du répertoire config (c'est pas trés propre pour un plugin mais bon).

Maintenant j'ai juste un drole de bug : au lendemain, quand je me reconnecte (pas déconnecté de la veille), le pipeline
est appeler deux fois, la première c'est ok, la deuxième : la variable est vide mais la fonction ('ent_inrub') est bien
existante !!! ce qui a pour effet de ne pas mettre en place une variable dans les paramètres de session.

Les deux appels du pipeline se font sans appel d'une autre page car mes_options n'est pas recharger.

J'ai placer deux sniffers de debug dans mes_options et la fonction 'preparer_fichier_session'.

Dans mes_options :
file_put_contents($_SERVER['DOCUMENT_ROOT'].'/ap_debug.txt','Charger ! '._DIR_TMP.' -
'.$_SERVER['REQUEST_URI']."\r\n**********\r\n",FILE_APPEND);

Dans la fonction 'preparer_fichier_session' du plugin :
  $pourlog=array('ent_inrub'=>0,'include_spip'=>0);
  foreach($pourlog as $cle=>$val) {
    if(function_exists($cle)) $pourlog[$cle]=1;
  }
  if(isset($GLOBALS['valniv'])) $pourlog['valniv']=$GLOBALS['valniv'];
  $pourlog['rep']=_DIR_TMP;
  $pourlog['session']=_DIR_SESSIONS;
  if(!defined('_AP_VALNIV')) define('_AP_VALNIV','ERREUR');
  $pourlog['def_valniv']=_AP_VALNIV;
  $pourlog['flux']=$flux; // ajouter dans session.php le $fichier : a supprimer apres test
  file_put_contents($_SERVER['DOCUMENT_ROOT'].'/ap_debug.txt',print_r($pourlog,true)."\r\n**********\r\n",FILE_APPEND);

Et voilà ce que donne le fichier 'ap_debug.txt' au matin à la première connection de la journée (nota : j'ai ajouter
dans args du flux du pipeline le nom du fichier de session : il change !!!) :

Charger ! sites/********/tmp/ - /spip.php?page=login