From 6d85c9d33dde82feacdee9a19a09778eb19e8799 Mon Sep 17 00:00:00 2001
From: Fil <fil@rezo.net>
Date: Sat, 21 Jan 2006 19:10:36 +0000
Subject: [PATCH] =?UTF-8?q?petits=20nettoyages,=20corrige=20le=20bug=20des?=
 =?UTF-8?q?=20URLs=20de=20redirection=20qui=20ne=20marchaient=20que=20pour?=
 =?UTF-8?q?=20les=20admins=20connect=C3=A9s=20(vu=20sur=20spip-contrib)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 inc-cache.php3         | 18 ++++++-------
 inc-public-global.php3 | 58 +++++++++++++++++++++++-------------------
 2 files changed, 41 insertions(+), 35 deletions(-)

diff --git a/inc-cache.php3 b/inc-cache.php3
index afb4429755..e0079dea80 100644
--- a/inc-cache.php3
+++ b/inc-cache.php3
@@ -207,21 +207,21 @@ function determiner_cache(&$use_cache, $contexte,$fond) {
 
 // Passage par reference juste par souci d'economie
 
-function creer_cache(&$page, $chemin_cache, $duree)
-{
+function creer_cache(&$page, $chemin_cache, $duree) {
 	// Entrer dans la base les invalideurs calcules par le compilateur
 	// (et supprimer les anciens)
 
 	include_ecrire('inc_invalideur');
 	maj_invalideurs($chemin_cache, $page['invalideurs'], $duree);
 
-	// Enregistrer le fichier cache
-
-	$r = ecrire_fichier($chemin_cache, 
-			"<!-- "
-			. str_replace("\n", " ", serialize($page['signal']))
-			. " -->\n"
-			. $page['texte']);
+	// Enregistrer le fichier cache qui contient
+	// 1) la carte d'identite de la page (ses "globals", genre id_article=7)
+	// 2) son contenu
+	$r = ecrire_fichier($chemin_cache,
+		"<!-- "
+		. str_replace("\n", " ", serialize($page['signal']))
+		. " -->\n"
+		. $page['texte']);
 
 	// Nouveau cache : creer un invalideur 't' fixant la date
 	// d'expiration et la taille du fichier
diff --git a/inc-public-global.php3 b/inc-public-global.php3
index df1147b97c..f82aa75bf8 100644
--- a/inc-public-global.php3
+++ b/inc-public-global.php3
@@ -70,29 +70,34 @@ function calcule_header_et_page ($fond) {
 
 function obtenir_page_ancienne ($chemin_cache, $fond, $inclusion=false) {
 
-		//
-		// Lire le fichier cache
-		//
-		lire_fichier ($chemin_cache, $page['texte']);
-		$lastmodified = max($lastmodified, @filemtime($chemin_cache));
-		# spip_log ("cache $chemin_cache $lastmodified");
-
-		//
-		// Lire sa carte d'identite & fixer le contexte global
-		//
-		if (preg_match("/^<!-- ([^\n]*) -->\n(.*)/ms", $page['texte'], $match)
-		AND is_array($meta_donnees = unserialize($match[1]))) {
-			foreach ($meta_donnees as $var=>$val)
+	//
+	// Lire le fichier cache
+	//
+	lire_fichier ($chemin_cache, $page['texte']);
+	$lastmodified = max($lastmodified, @filemtime($chemin_cache));
+	# spip_log ("cache $chemin_cache $lastmodified");
+
+	//
+	// Lire sa carte d'identite & fixer le contexte global
+	//
+	if (preg_match("/^<!-- ([^\n]*) -->\n/ms", $page['texte'], $match)) {
+		$meta_donnees = unserialize($match[1]);
+		if (is_array($meta_donnees)) {
+			foreach ($meta_donnees as $var=>$val) {
 				$page[$var] = $val;
+			}
+		}
 
-			$page['texte'] = $match[2];
+		$page['texte'] = substr($page['texte'], strlen($match[0]));
 
-			// Remplir les globals pour les boutons d'admin
-			if (!$inclusion AND is_array($page['contexte']))
-			  foreach ($page['contexte'] as $var=>$val) {
-					$GLOBALS[$var] = $val;
-			  }
+		// Remplir les globals pour les boutons d'admin
+		if (!$inclusion AND is_array($page['contexte'])) {
+			foreach ($page['contexte'] as $var=>$val) {
+				$GLOBALS[$var] = $val;
+			}
 		}
+	}
+
 	return $page;
 }
 
@@ -151,14 +156,15 @@ function afficher_page_globale ($fond) {
 	}
 	else {
 		// Obtenir la page
-	  if (!$use_cache)
-	    $page =  obtenir_page_ancienne ($chemin_cache, $fond, false);
-	  else {
-	    include_local('inc-calcul');
-	    $page = calculer_page_globale ($chemin_cache, $fond);
+		if (!$use_cache)
+			$page = obtenir_page_ancienne ($chemin_cache, $fond, false);
+		else {
+			include_local('inc-calcul');
+			$page = calculer_page_globale ($chemin_cache, $fond);
 
-	    if ($chemin_cache) creer_cache($page, $chemin_cache, $use_cache);
-	  }
+			if ($chemin_cache)
+				creer_cache($page, $chemin_cache, $use_cache);
+		}
 	}
 
 	if ($chemin_cache) $page['cache'] = $chemin_cache;
-- 
GitLab