From 8ee3c23b1777edbcbc245cab926ecbf92ed76006 Mon Sep 17 00:00:00 2001
From: Fil <fil@rezo.net>
Date: Fri, 20 Aug 2004 10:12:53 +0000
Subject: [PATCH] =?UTF-8?q?d=C3=A9bogage=20surligne=20+=20carfte=20d'inden?=
 =?UTF-8?q?tit=C3=A9=20des=20caches=20inclus?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 ecrire/inc_surligne.php3 | 68 +++++++++++++++++++---------------------
 inc-calcul.php3          | 24 ++++++--------
 inc-public-global.php3   |  9 ++++--
 3 files changed, 49 insertions(+), 52 deletions(-)

diff --git a/ecrire/inc_surligne.php3 b/ecrire/inc_surligne.php3
index 5a36bb5e14..bab595413e 100644
--- a/ecrire/inc_surligne.php3
+++ b/ecrire/inc_surligne.php3
@@ -90,9 +90,9 @@ function surligner_mots($page, $mots) {
 
 	if (!$mots_surligne) return $page;
 
-	$regexp = '/((^|>)([^<]*[^[:alnum:]_<])?)((' .
-	  join('|', $mots_surligne).
-	  ')[[:alnum:]_]*?)/Uis';
+	$regexp = '/((^|>)([^<]*[^[:alnum:]_<])?)(('
+	. join('|', $mots_surligne)
+	. ')[[:alnum:]_]*?)/Uis';
 
 	// en cas de surlignement limite' (champs #SURLIGNE), 
 	// le compilateur a inse're' les balises de surlignement
@@ -100,41 +100,39 @@ function surligner_mots($page, $mots) {
 	// On boucle pour le cas ou` il y a plusieurs zones
 
 	$p = strpos($page, MARQUEUR_SURLIGNE);
-	if ($p) 
-	  {
-	    $debut = '';
-	    while ($p) {
-	      $debut .= substr($page, 0, $p-1);
-	      $page = substr($page, $p+strlen(MARQUEUR_SURLIGNE));
-	      $q = strpos($page,MARQUEUR_FSURLIGNE);
-	      $debut .= trouve_surligne(substr($page, 0, $q-1), $regexp);
-	      $page = substr($page, $q+strlen(MARQUEUR_SURLIGNE)+1);
-	      $p = strpos($page,MARQUEUR_SURLIGNE);
-	    }
-	    return $debut . $page;
-	  } else {
-
-	// pour toute la page: ignorer ce qui est avant </head> ou <body>
-	$re = '/<\/head>|<body[^>]*>/i';
-	if (preg_match($re, $page, $exp)) {
-	  $debut = substr($page, 0, strpos($page, $exp[0])+strlen($exp[0]));
-	  $page = substr($page, strlen($debut));
-	} else
-	  $debut = '';
-	return $debut . trouve_surligne($page, $regexp);
-	  }
+	if ($p) {
+		$debut = '';
+		while ($p) {
+			$debut .= substr($page, 0, $p-1);
+			$page = substr($page, $p+strlen(MARQUEUR_SURLIGNE));
+			$q = strpos($page,MARQUEUR_FSURLIGNE);
+			$debut .= trouve_surligne(substr($page, 0, $q-1), $regexp);
+			$page = substr($page, $q+strlen(MARQUEUR_SURLIGNE)+1);
+			$p = strpos($page,MARQUEUR_SURLIGNE);
+		}
+		return $debut . $page;
+	} else {
+		// pour toute la page: ignorer ce qui est avant </head> ou <body>
+		$re = '/<\/head>|<body[^>]*>/i';
+		if (preg_match($re, $page, $exp)) {
+			$debut = substr($page, 0, strpos($page, $exp[0])+strlen($exp[0]));
+			$page = substr($page, strlen($debut));
+		} else
+			$debut = '';
+		return $debut . trouve_surligne($page, $regexp);
+	}
 }
 
 function trouve_surligne($page, $regexp) {
-  // Remplacer une occurrence de mot maxi par espace inter-tag
-  // (max 1 par paragraphe, sauf italiques etc.)
-  // se limiter a 4 remplacements pour ne pas bouffer le CPU ;
-  // traiter <textarea...>....</textarea> comme un tag.
-  global $nombre_surligne;
-  $page = preg_replace('/(<textarea[^>]*>)([^<>]*)(<\/textarea>)/Uis', '\1<<SPIP\2>>\3', $page);
-  $page = preg_replace($regexp, '\1<span class="spip_surligne">\4</span>', $page, $nombre_surligne);
-  $page = preg_replace('/(<textarea[^>]*>)<<SPIP([^<>]*)>>(<\/textarea>)/Uis', '\1\2\3', $page);
-  return $page ;
+	// Remplacer une occurrence de mot maxi par espace inter-tag
+	// (max 1 par paragraphe, sauf italiques etc.)
+	// se limiter a 4 remplacements pour ne pas bouffer le CPU ;
+	// traiter <textarea...>....</textarea> comme un tag.
+	global $nombre_surligne;
+	$page = preg_replace('/(<textarea[^>]*>)([^<>]*)(<\/textarea>)/Uis', '\1<<SPIP\2>>\3', $page);
+	$page = preg_replace($regexp, '\1<span class="spip_surligne">\4</span>', $page, $nombre_surligne);
+	$page = preg_replace('/(<textarea[^>]*>)<<SPIP([^<>]*)>>(<\/textarea>)/Uis', '\1\2\3', $page);
+	return $page ;
 }
 
 ?>
diff --git a/inc-calcul.php3 b/inc-calcul.php3
index 3a55b2d2d7..48825fe785 100644
--- a/inc-calcul.php3
+++ b/inc-calcul.php3
@@ -196,7 +196,7 @@ function calculer_contexte() {
 	return $contexte;
 }
 
-function calculer_page_globale($cache, $contexte_local, $fond, $var_recherche) {
+function calculer_page_globale($cache, $contexte_local, $fond) {
 	global $spip_lang;
 
 	// Gestion des URLs personnalises - sale mais historique
@@ -229,12 +229,6 @@ function calculer_page_globale($cache, $contexte_local, $fond, $var_recherche) {
 	// Go to work !
 	$page = cherche_page($cache, $contexte_local, $fond, $id_rubrique_fond, $spip_lang);
 
-	// Surligne
-	if ($var_recherche) {
-		include_ecrire("inc_surligne.php3");
-		$page['texte'] = surligner_mots($page['texte'], $var_recherche);
-	} 
-
 	$signal = array();
 	foreach(array('id_parent', 'id_rubrique', 'id_article', 'id_auteur',
 	'id_breve', 'id_forum', 'id_secteur', 'id_syndic', 'id_syndic_article',
@@ -242,14 +236,11 @@ function calculer_page_globale($cache, $contexte_local, $fond, $var_recherche) {
 		if ($contexte_local[$val])
 			$signal['contexte'][$val] = intval($contexte_local[$val]);
 	}
-	$signal['process_ins'] = $page['process_ins'];
 
 # ne marchera qu'avec les inclusions 'html' (versus 'php')
 #	$signal['fraicheur'] = $page['fraicheur'];
 
-	$signal = "<!-- ".str_replace("\n", " ", serialize($signal))." -->\n";
-
-	$page['texte'] = $signal.$page['texte'];
+	$page['signal'] = $signal;
 
 	return $page;
 }
@@ -264,7 +255,7 @@ function calculer_page($chemin_cache, $elements, $delais, $inclusion=false) {
 		$contexte_inclus = $elements['contexte'];
 		$page = cherche_page($chemin_cache,
 			$contexte_inclus,
-			$elements['fond'], 
+			$elements['fond'],
 			$contexte_inclus['id_rubrique']
 		);
 	}
@@ -291,13 +282,16 @@ function calculer_page($chemin_cache, $elements, $delais, $inclusion=false) {
 		}
 		$page = calculer_page_globale($chemin_cache,
 			$elements['contexte'],
-			$elements['fond'],
-			$elements['var_recherche']);
+			$elements['fond']);
 	}
 
+	$page['signal']['process_ins'] = $page['process_ins'];
+	$signal = "<!-- ".str_replace("\n", " ",
+	serialize($page['signal']))." -->\n";
+
 	// Enregistrer le fichier cache
 	if ($delais>0)
-		ecrire_fichier($chemin_cache, $page['texte']);
+		ecrire_fichier($chemin_cache, $signal.$page['texte']);
 
 	return $page;
 }
diff --git a/inc-public-global.php3 b/inc-public-global.php3
index 0fc8d69aff..cfdfce0a24 100644
--- a/inc-public-global.php3
+++ b/inc-public-global.php3
@@ -21,8 +21,7 @@ function obtenir_page ($contexte, $chemin_cache, $delais, $use_cache, $fond, $in
 		spip_timer();
 		$page = calculer_page($chemin_cache,
 			array('fond' => $fond,
-				'contexte' => $contexte,
-				'var_recherche' => $HTTP_GET_VARS['var_recherche']),
+				'contexte' => $contexte),
 			$delais,
 			$inclusion);
 		if ($chemin_cache)
@@ -127,6 +126,12 @@ function afficher_page_globale ($fond, $delais, &$use_cache) {
 			$page['texte'] = $page_boutons_admin;
 			$page['process_ins'] = 'php';
 		}
+
+		// Surligne
+		if ($GLOBALS['var_recherche']) {
+			include_ecrire("inc_surligne.php3");
+			$page['texte'] = surligner_mots($page['texte'], $GLOBALS['var_recherche']);
+		}
 	}
 
 	if ($chemin_cache) $page['cache'] = $chemin_cache;
-- 
GitLab