From 3ebff72cc878fc22dba23ec5a75304eba16d0d54 Mon Sep 17 00:00:00 2001
From: Cerdic <cedric@yterium.com>
Date: Fri, 30 Jul 2010 20:43:31 +0000
Subject: [PATCH] Report de [15817]

---
 ecrire/inc/utils.php | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/ecrire/inc/utils.php b/ecrire/inc/utils.php
index c94639d382..9356aa8e88 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();
+	}
 
 }
 
-- 
GitLab