diff --git a/ecrire/inc/utils.php b/ecrire/inc/utils.php index c94639d382232d23090d53dbd3ac7dc98bdb2efe..9356aa8e88aa238f3c5f5de7592bb1f0d4a5b73c 100644 --- a/ecrire/inc/utils.php +++ b/ecrire/inc/utils.php @@ -771,8 +771,13 @@ function load_path_cache(){ // on ne recharge pas le cache pour forcer sa mise a jour // le cache de chemin n'est utilise que dans le public if (_DIR_RESTREINT + // la session n'est pas encore chargee a ce moment, on ne peut donc pas s'y fier //AND (!isset($GLOBALS['visiteur_session']['statut']) OR $GLOBALS['visiteur_session']['statut']!='0minirezo') + // utiliser le cookie est un pis aller qui marche 'en general' + // on blinde par un second test au moment de la lecture de la session AND !isset($_COOKIE[$GLOBALS['cookie_prefix'].'_admin']) + // et en ignorant ce cache en cas de recalcul explicite + AND _request('var_mode')!=='recalcul' ){ // on essaye de lire directement sans verrou pour aller plus vite if ($contenu = spip_file_get_contents(_CACHE_CHEMIN)){ @@ -1359,7 +1364,12 @@ function spip_initialisation_core($pi=NULL, $pa=NULL, $ti=NULL, $ta=NULL) { } } // s'il y a un cookie ou PHP_AUTH, initialiser visiteur_session - if (_FILE_CONNECT) verifier_visiteur(); + if (_FILE_CONNECT) { + if (verifier_visiteur()=='0minirezo' + // si c'est un admin sans cookie admin, il faut ignorer le cache chemin ! + AND !isset($COOKIE['spip_admin'])) + clear_path_cache(); + } }