From bc3dcd7218e76cc3a7d380ce53cb9bac06e3b43c Mon Sep 17 00:00:00 2001 From: Fil <fil@rezo.net> Date: Sun, 22 Jan 2006 23:16:54 +0000 Subject: [PATCH] =?UTF-8?q?prendre=20en=20compte=20$spip=5Fmatrice=20au=20?= =?UTF-8?q?niveau=20du=20compilateur=20(n=C3=A9cessite=20d'appeler=20une?= =?UTF-8?q?=20fonction=20filtrer($filtre,=20$arguments)=20qui=20chargera?= =?UTF-8?q?=20le=20fichier=20de=20d=C3=A9finition=20de=20$filtre=20avant?= =?UTF-8?q?=20d'appeler=20la=20fonction=20avec=20les=20arguments)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ecrire/inc_filtres.php3 | 17 ++++++++++++++--- inc-compilo-index.php3 | 10 ++++++++-- 2 files changed, 22 insertions(+), 5 deletions(-) diff --git a/ecrire/inc_filtres.php3 b/ecrire/inc_filtres.php3 index 9577777681..b7b5e606ee 100644 --- a/ecrire/inc_filtres.php3 +++ b/ecrire/inc_filtres.php3 @@ -13,6 +13,17 @@ if (!defined("_ECRIRE_INC_VERSION")) return; +// Appliquer un filtre (eventuellement defini dans la matrice) aux donnees +// et arguments +function filtrer($filtre) { + if ($f = $GLOBALS['spip_matrice'][$filtre]) + include_local($f); + + $tous = func_get_args(); + array_shift($tous); # enlever $filtre + return call_user_func_array($filtre, $tous); +} + // Echappement des entites HTML avec correction des entites "brutes" // (generees par les butineurs lorsqu'on rentre des caracteres n'appartenant // pas au charset de la page [iso-8859-1 par defaut]) @@ -2106,9 +2117,9 @@ function tags2dcsubject($tags) { } // fabrique un bouton de type $t de Name $n, de Value $v et autres attributs $a function boutonne($t, $n, $v, $a='') { - return "\n<input type='$t'" . - (!$n ? '' : " name='$n'") . - " value=\"$v\" $a />"; + return "\n<input type='$t'" + . (!$n ? '' : " name='$n'") + . " value=\"$v\" $a />"; } ?> diff --git a/inc-compilo-index.php3 b/inc-compilo-index.php3 index c26652f146..619e8d12e6 100644 --- a/inc-compilo-index.php3 +++ b/inc-compilo-index.php3 @@ -363,8 +363,14 @@ function compose_filtres($p, $code) { $arglist = compose_filtres_args($p, $filtre, ($fonc == '?' ? ':' : ',')); - // le filtre existe sous forme de fonction ou de methode - if (function_exists($fonc) + // le filtre est defini dans la matrice ? il faut alors l'appeler + // de maniere indirecte, pour charger au prealable sa definition + if (isset($GLOBALS['spip_matrice'][$fonc])) { + $code = "filtrer('$fonc',$code$arglist)"; + } + // le filtre est defini sous forme de fonction ou de methode + // par ex. dans inc_texte, inc_filtres ou mes_fonctions + else if (function_exists($fonc) OR (preg_match("/^(\w*)::(\w*)$/", $fonc, $regs) AND is_callable(array($regs[1], $regs[2])) )) -- GitLab