From 86ec6d3ba78b4fbb0a69894516f4f930ef5f86bf Mon Sep 17 00:00:00 2001
From: Cerdic <cedric@yterium.com>
Date: Mon, 3 Nov 2008 17:07:50 +0000
Subject: [PATCH] un charger_fonction manquant, et une generalisation autour de
 marquer_doublons_documents et traiter_modeles : la fonction traiter_modeles
 permet de reperer d'autres types d'objets que les documents avec la syntaxe
 traiter_modeles($champs['chapo'].$champs['texte'],array('des_trucs'=>array('truc','machin')))
 qui remplira la $GLOBALS['doublons_des_trucs_inclus'] pour tous les modeles
 <trucXX> ou <machinYY> presents dans le texte ou le chapo

aucun impact sur les appels existants avec le $doublons=true qui repere par defaut les documents
---
 ecrire/inc/lien.php     | 10 ++++++++--
 ecrire/inc/modifier.php |  5 ++++-
 2 files changed, 12 insertions(+), 3 deletions(-)

diff --git a/ecrire/inc/lien.php b/ecrire/inc/lien.php
index 43b24a18c0..28a77a5487 100644
--- a/ecrire/inc/lien.php
+++ b/ecrire/inc/lien.php
@@ -340,6 +340,9 @@ define('_RACCOURCI_MODELE_DEBUT', '@^' . _RACCOURCI_MODELE .'@is');
 
 // http://doc.spip.org/@traiter_modeles
 function traiter_modeles($texte, $doublons=false, $echap='', $connect='') {
+	// preserver la compatibilite : true = recherche des documents
+	if ($doublons===true)
+		$doublons = array('documents'=>array('doc','emb','img'));
 	// detecter les modeles (rapide)
 	if (preg_match_all('/<[a-z_-]{3,}\s*[0-9|]+/iS',
 	$texte, $matches, PREG_SET_ORDER)) {
@@ -400,8 +403,11 @@ function traiter_modeles($texte, $doublons=false, $echap='', $connect='') {
 			}
 
 			// hack pour tout l'espace prive
-			if (((!_DIR_RESTREINT) OR ($doublons)) AND ($id) AND (in_array($type,array('doc','emb','img'))))
-				$GLOBALS['doublons_documents_inclus'][] = $id;
+			if (((!_DIR_RESTREINT) OR ($doublons)) AND ($id)){
+				foreach($doublons?$doublons:array('documents'=>array('doc','emb','img')) as $quoi=>$modeles)
+					if (in_array($type,$modeles))
+						$GLOBALS["doublons_{$quoi}_inclus"][] = $id;
+			}
 		}
 	}
 
diff --git a/ecrire/inc/modifier.php b/ecrire/inc/modifier.php
index 3c2c66841d..80c8ac1b33 100644
--- a/ecrire/inc/modifier.php
+++ b/ecrire/inc/modifier.php
@@ -164,7 +164,10 @@ function modifier_contenu($type, $id, $options, $c=false, $serveur='') {
 // http://doc.spip.org/@marquer_doublons_documents
 function marquer_doublons_documents($champs,$id,$type,$id_table_objet,$table_objet,$spip_table_objet, $desc=array(), $serveur=''){
 	if (!isset($champs['texte']) AND !isset($champs['chapo'])) return;
-	if (!$desc) $desc = $trouver_table($table_objet, $serveur);
+	if (!$desc){
+		$trouver_table = charger_fonction('trouver_table', 'base');
+		$desc = $trouver_table($table_objet, $serveur);
+	}
 	$load = "";
 
 	// charger le champ manquant en cas de modif partielle de l'objet
-- 
GitLab