diff --git a/ecrire/inc/invalideur.php b/ecrire/inc/invalideur.php index bcb39c74688120bd67b745caee23b3411c5744b1..c2298d59ea73fce005b287b0cd9e32e7d8c28d0c 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 e086a6bf700a9088c83f3831b9e360e8beaebe81..a44a3ef62ce98a8725023e1b5cd66a7fb86d269b 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 "','."