From a68549a44b01e79d39f849ab9586d9a1c28b4b38 Mon Sep 17 00:00:00 2001
From: Cerdic <cedric@yterium.com>
Date: Sun, 26 Sep 2010 10:39:03 +0000
Subject: [PATCH] evacuer une exception de nommage dans les invalideurs en les
 normalisant sous la forme "objet/$id_objet" L'utilisation de objet_type()
 assure la retrocompatibilite avec les appels de la forme "id_article/23", le
 seul cas non suivi etant le "varia/pet23" qui doit etre remplace par deux
 invalideurs "signature/xxx" et "article/yyy"

---
 ecrire/action/editer_article.php            |  2 +-
 ecrire/action/editer_auteur.php             |  2 +-
 ecrire/action/editer_breve.php              |  4 ++--
 ecrire/action/editer_rubrique.php           |  2 +-
 ecrire/action/instituer_langue_rubrique.php |  2 +-
 ecrire/action/joindre.php                   |  2 +-
 ecrire/action/supprimer.php                 |  2 +-
 ecrire/inc/invalideur.php                   | 14 +++++---------
 ecrire/inc/modifier.php                     |  2 +-
 9 files changed, 14 insertions(+), 18 deletions(-)

diff --git a/ecrire/action/editer_article.php b/ecrire/action/editer_article.php
index cf8dbd425c..e0c8301c14 100644
--- a/ecrire/action/editer_article.php
+++ b/ecrire/action/editer_article.php
@@ -240,7 +240,7 @@ function instituer_article($id_article, $c, $calcul_rub=true) {
 
 	// Invalider les caches
 	include_spip('inc/invalideur');
-	suivre_invalideur("id='id_article/$id_article'");
+	suivre_invalideur("id='article/$id_article'");
 
 	if ($date) {
 		$t = strtotime($date);
diff --git a/ecrire/action/editer_auteur.php b/ecrire/action/editer_auteur.php
index 945ce4a73b..7126759f34 100644
--- a/ecrire/action/editer_auteur.php
+++ b/ecrire/action/editer_auteur.php
@@ -214,7 +214,7 @@ function instituer_auteur($id_auteur, $c, $force_webmestre = false) {
 	
 	// Invalider les caches
 	include_spip('inc/invalideur');
-	suivre_invalideur("id='id_auteur/$id_auteur'");
+	suivre_invalideur("id='auteur/$id_auteur'");
 	
 	// Pipeline
 	pipeline('post_edition',
diff --git a/ecrire/action/editer_breve.php b/ecrire/action/editer_breve.php
index 7bdb3447c1..fa71ead252 100644
--- a/ecrire/action/editer_breve.php
+++ b/ecrire/action/editer_breve.php
@@ -121,7 +121,7 @@ function revisions_breves ($id_breve, $c=false) {
 	// Si la breve est publiee, invalider les caches et demander sa reindexation
 	$t = sql_getfetsel("statut", "spip_breves", "id_breve=$id_breve");
 	if ($t == 'publie') {
-		$invalideur = "id='id_breve/$id_breve'";
+		$invalideur = "id='breve/$id_breve'";
 		$indexation = true;
 	}
 
@@ -180,7 +180,7 @@ function revisions_breves ($id_breve, $c=false) {
 
 	// Invalider les caches
 	include_spip('inc/invalideur');
-	suivre_invalideur("id='id_breve/$id_breve'");
+	suivre_invalideur("id='breve/$id_breve'");
 
 	// Au besoin, changer le statut des rubriques concernees 
 	include_spip('inc/rubriques');
diff --git a/ecrire/action/editer_rubrique.php b/ecrire/action/editer_rubrique.php
index c9483eb703..9147cb0e38 100644
--- a/ecrire/action/editer_rubrique.php
+++ b/ecrire/action/editer_rubrique.php
@@ -110,7 +110,7 @@ function revisions_rubriques($id_rubrique, $c=false) {
 
 	// invalider les caches marques de cette rubrique
 	include_spip('inc/invalideur');
-	suivre_invalideur("id='id_rubrique/$id_rubrique'");
+	suivre_invalideur("id='rubrique/$id_rubrique'");
 	// et celui de menu_rubriques 
 	effacer_meta("date_calcul_rubriques");
 
diff --git a/ecrire/action/instituer_langue_rubrique.php b/ecrire/action/instituer_langue_rubrique.php
index 72a74cffa5..183df933b7 100644
--- a/ecrire/action/instituer_langue_rubrique.php
+++ b/ecrire/action/instituer_langue_rubrique.php
@@ -40,7 +40,7 @@ function action_instituer_langue_rubrique_dist() {
 
 		// invalider les caches marques de cette rubrique
 		include_spip('inc/invalideur');
-		suivre_invalideur("id='id_rubrique/$id_rubrique'");
+		suivre_invalideur("id='rubrique/$id_rubrique'");
 	}
 }
 ?>
diff --git a/ecrire/action/joindre.php b/ecrire/action/joindre.php
index 9b69e27784..84313fd5e2 100644
--- a/ecrire/action/joindre.php
+++ b/ecrire/action/joindre.php
@@ -196,7 +196,7 @@ function joindre_documents($files, $mode, $type, $id, $id_document, $hash, $redi
 	}
 	// un invalideur a la hussarde qui doit marcher au moins pour article, breve, rubrique
 	include_spip('inc/invalideur');
-	suivre_invalideur("id='id_$type/$id'");
+	suivre_invalideur("id='$type/$id'");
 	return $x;
 }
 
diff --git a/ecrire/action/supprimer.php b/ecrire/action/supprimer.php
index eabbe27726..3542226a95 100644
--- a/ecrire/action/supprimer.php
+++ b/ecrire/action/supprimer.php
@@ -60,7 +60,7 @@ function action_supprimer_rubrique($r)
 
 	// invalider les caches marques de cette rubrique
 	include_spip('inc/invalideur');
-	suivre_invalideur("id='id_rubrique/$id_rubrique'");
+	suivre_invalideur("id='rubrique/$id_rubrique'");
 }
 
 ?>
diff --git a/ecrire/inc/invalideur.php b/ecrire/inc/invalideur.php
index e305ab5318..775f15c2a8 100644
--- a/ecrire/inc/invalideur.php
+++ b/ecrire/inc/invalideur.php
@@ -58,6 +58,8 @@ function taille_du_cache() {
 }
 
 // Invalider les caches lies a telle condition
+// les invalideurs sont de la forme 'objet/id_objet'
+// la condition est generalement "id='objet/id_objet'"
 // ici on se contente de noter la date de mise a jour dans les metas
 // http://doc.spip.org/@suivre_invalideur
 function suivre_invalideur($cond, $modif=true) {
@@ -65,11 +67,8 @@ function suivre_invalideur($cond, $modif=true) {
 		return;
 
 	// determiner l'objet modifie : forum, article, etc
-	if (preg_match(',id_([a-z]+),', $cond, $r))
-		$objet = $r[1];
-	// cas particulier des signatures
-	else if (strpos($cond, 'varia/pet'))
-		$objet = 'signature';
+	if (preg_match(',["\']([a-z_]+)[/"\'],', $cond, $r))
+		$objet = objet_type($r[1]);
 
 	// stocker la date_modif_$objet (ne sert a rien pour le moment)
 	if (isset($objet))
@@ -85,7 +84,6 @@ function suivre_invalideur($cond, $modif=true) {
 	else
 		ecrire_meta('derniere_modif', time());
 
-
 }
 
 
@@ -234,9 +232,7 @@ function supprime_invalideurs() { }
 // http://doc.spip.org/@maj_invalideurs
 function maj_invalideurs ($fichier, &$page) { }
 
-// pour les forums l'invalideur est : 'id_forum/a23'
-// pour les petitions et autres, l'invalideur est par exemple :
-// 'varia/pet60'
+// les invalideurs sont de la forme "objet/id_objet"
 // http://doc.spip.org/@insere_invalideur
 function insere_invalideur($inval, $fichier) { }
 
diff --git a/ecrire/inc/modifier.php b/ecrire/inc/modifier.php
index a671cb62bf..899555664b 100644
--- a/ecrire/inc/modifier.php
+++ b/ecrire/inc/modifier.php
@@ -238,7 +238,7 @@ function revision_article ($id_article, $c=false) {
 	// Si l'article est publie, invalider les caches et demander sa reindexation
 	$t = sql_getfetsel("statut", "spip_articles", "id_article=$id_article");
 	if ($t == 'publie') {
-		$invalideur = "id='id_article/$id_article'";
+		$invalideur = "id='article/$id_article'";
 		$indexation = true;
 	}
 
-- 
GitLab