diff --git a/ecrire/inc/filtres.php b/ecrire/inc/filtres.php index 501aeec772a6be53e3f702a75afb99f3ec2e6c47..91221ad2bbb665fc95985cb1325d7f2cc7228f50 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 cf5a466137633987842d4853f114bb4e45016826..fc48e1fbdb87185086f52e3e0d9fe2c15252b9b5 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; }