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