From 22a57c6479aef373f1fc8461c08c0ec75659329b Mon Sep 17 00:00:00 2001 From: Cerdic <cedric@yterium.com> Date: Sun, 16 Mar 2008 19:31:00 +0000 Subject: [PATCH] complement de [11315] - des quotes en trop, definir la matrice pour les filtres couleur_xx aussi - gerer les exceptions dans filtrer et non plus dans le compilateur - lorsqu'il ne s'agit pas d'un filtre image, se rabattre sur chercher_filtre par homogeneite avec le compilateur, et retourner une erreur skel si pas trouve --- ecrire/inc/filtres.php | 26 +++++++++++++++++++++----- ecrire/public/references.php | 3 +-- 2 files changed, 22 insertions(+), 7 deletions(-) diff --git a/ecrire/inc/filtres.php b/ecrire/inc/filtres.php index 501aeec772..91221ad2bb 100644 --- a/ecrire/inc/filtres.php +++ b/ecrire/inc/filtres.php @@ -165,6 +165,7 @@ function version_svn_courante($dir) { // La matrice est necessaire pour ne filtrer _que_ des fonctions definies dans filtres_images // et laisser passer les fonctions personnelles baptisees image_... $GLOBALS['spip_matrice']['image_valeurs_trans'] = true; +$GLOBALS['spip_matrice']['image_graver'] = true; $GLOBALS['spip_matrice']['image_reduire'] = true; $GLOBALS['spip_matrice']['image_reduire_par'] = true; $GLOBALS['spip_matrice']['image_recadre'] = true; @@ -189,16 +190,30 @@ $GLOBALS['spip_matrice']['image_imagick'] = true; $GLOBALS['spip_matrice']['image_ramasse_miettes'] = true; $GLOBALS['spip_matrice']['image_passe_partout'] = true; +$GLOBALS['spip_matrice']['couleur_dec_to_hex'] = 'inc/filtres_images.php'; +$GLOBALS['spip_matrice']['couleur_hex_to_dec'] = 'inc/filtres_images.php'; +$GLOBALS['spip_matrice']['couleur_extreme'] = 'inc/filtres_images.php'; +$GLOBALS['spip_matrice']['couleur_inverser'] = 'inc/filtres_images.php'; +$GLOBALS['spip_matrice']['couleur_eclaircir'] = 'inc/filtres_images.php'; +$GLOBALS['spip_matrice']['couleur_foncer'] = 'inc/filtres_images.php'; +$GLOBALS['spip_matrice']['couleur_foncer_si_claire'] = 'inc/filtres_images.php'; +$GLOBALS['spip_matrice']['couleur_eclaircir_si_foncee'] = 'inc/filtres_images.php'; + // charge les fonctions graphiques et applique celle demandee // http://doc.spip.org/@filtrer function filtrer($filtre) { - find_in_path('filtres_images.php', 'inc/', true); + if (is_string($f = $GLOBALS['spip_matrice'][$filtre])) + find_in_path($f,'', true); $tous = func_get_args(); - if (substr($filtre,0,6)=='image_' && $GLOBALS['spip_matrice']['$filtre']) + if (substr($filtre,0,6)=='image_' && $GLOBALS['spip_matrice'][$filtre]) return image_filtrer($tous); - else{ - array_shift($tous); # enlever $filtre - return call_user_func_array($filtre, $tous); + elseif($f = chercher_filtre($filtre)) { + array_shift($tous); + return call_user_func_array($f, $tous); + } + else { + // le filtre n'existe pas, on provoque une erreur + erreur_squelette(texte_script(_T('zbug_erreur_filtre', array('filtre'=>$filtre))),''); } } @@ -213,6 +228,7 @@ function image_filtrer($args){ $filtre = array_shift($args); # enlever $filtre $texte = array_shift($args); if (!$texte) return; + find_in_path('filtres_images.php','inc/', true); // Cas du nom de fichier local if ( strpos(substr($texte,strlen(_DIR_RACINE)),'..')===FALSE diff --git a/ecrire/public/references.php b/ecrire/public/references.php index cf5a466137..fc48e1fbdb 100644 --- a/ecrire/public/references.php +++ b/ecrire/public/references.php @@ -424,7 +424,6 @@ function applique_filtres($p) { // http://doc.spip.org/@compose_filtres function compose_filtres(&$p, $code) { global $table_criteres_infixes; - static $exceptions = array('image_typo'); $image_miette = false; foreach($p->param as $filtre) { @@ -451,7 +450,7 @@ function compose_filtres(&$p, $code) { if (in_array($fonc, $table_criteres_infixes)) $code = "($code $fonc " . substr($arglist,1) . ')'; - elseif (((substr($fonc,0,6)=='image_') OR substr($fonc,0,8)=='couleur_') AND !in_array($fonc, $exceptions)) { + elseif (isset($GLOBALS['spip_matrice'][$fonc])) { $code = "filtrer('$fonc',$code$arglist)"; if ($is_filtre_image) $image_miette = true; } -- GitLab