From 39849ae1422430f9bba7cc5db8c6ac3a00b7dc57 Mon Sep 17 00:00:00 2001
From: Fil <fil@rezo.net>
Date: Sun, 17 Sep 2006 23:40:42 +0000
Subject: [PATCH] suite: le code invalideur general du compilo passe dans
 inc/invalideur

---
 ecrire/inc/invalideur.php  | 20 ++++++++++++++++++++
 ecrire/public/compiler.php | 20 ++++++--------------
 2 files changed, 26 insertions(+), 14 deletions(-)

diff --git a/ecrire/inc/invalideur.php b/ecrire/inc/invalideur.php
index bcb39c7468..c2298d59ea 100644
--- a/ecrire/inc/invalideur.php
+++ b/ecrire/inc/invalideur.php
@@ -287,4 +287,24 @@ function code_invalideur_forums($p, $code) {
 	(!($Cache[\''.$type.'\']['.$valeur."]=1) ? '':\n\t" . $code .")\n";
 }
 
+
+// Fonction permettant au compilo de calculer les invalideurs d'une page
+function calcul_invalideurs($corps, $primary, &$boucles, $id_boucle) {
+	if ($primary == 'id_forum'
+	OR in_array($primary, explode(',', $GLOBALS['invalider_caches']))) {
+		$corps .= "\n\t\t\$Cache['$primary'][intval(" .
+		  (($primary != 'id_forum')  ? 
+		   index_pile($id_boucle, $primary, $boucles) :
+		   ("calcul_index_forum(" . 
+		// Retournera 4 [$SP] mais force la demande du champ a MySQL
+		    index_pile($id_boucle, 'id_article', $boucles) . ',' .
+		    index_pile($id_boucle, 'id_breve', $boucles) .  ',' .
+		    index_pile($id_boucle, 'id_rubrique', $boucles) .',' .
+		    index_pile($id_boucle, 'id_syndic', $boucles) .
+		    ")")) .
+		  ")] = 1; // invalideurs\n";
+	}
+	return $corps;
+}
+
 ?>
diff --git a/ecrire/public/compiler.php b/ecrire/public/compiler.php
index e086a6bf70..a44a3ef62c 100644
--- a/ecrire/public/compiler.php
+++ b/ecrire/public/compiler.php
@@ -166,22 +166,14 @@ function calculer_boucle_nonrec($id_boucle, &$boucles) {
 		$corps .= "
 		if (\$Numrows['$id_boucle']['compteur_boucle']-1 >= \$debut_boucle) {
 		if (\$Numrows['$id_boucle']['compteur_boucle']-1 > \$fin_boucle) break;\n";
-	
+
 	// Calculer les invalideurs si c'est une boucle non constante et si on
 	// souhaite invalider ces elements
-	if (!$constant AND $primary AND ($primary == 'id_forum'
-	OR in_array($primary, explode(',', $GLOBALS['invalider_caches']))))
-		$corps .= "\n\t\t\$Cache['$primary'][intval(" .
-		  (($primary != 'id_forum')  ? 
-		   index_pile($id_boucle, $primary, $boucles) :
-		   ("calcul_index_forum(" . 
-		// Retournera 4 [$SP] mais force la demande du champ a MySQL
-		    index_pile($id_boucle, 'id_article', $boucles) . ',' .
-		    index_pile($id_boucle, 'id_breve', $boucles) .  ',' .
-		    index_pile($id_boucle, 'id_rubrique', $boucles) .',' .
-		    index_pile($id_boucle, 'id_syndic', $boucles) .
-		    ")")) .
-		  ")] = 1; // invalideurs\n";
+	if (!$constant AND $primary) {
+		include_spip('inc/invalideur');
+		if (function_exists($i = 'calcul_invalideurs'))
+			$corps = $i($corps, $primary, $boucles, $id_boucle);
+	}
 
 	// faudrait expanser le foreach a la compil, car y en a souvent qu'un 
 	// et puis faire un [] plutot qu'un "','."
-- 
GitLab