diff --git a/ecrire/inc/filtres.php b/ecrire/inc/filtres.php index 02f2c4649e7f1e12a71ba680a014c383e1c8364e..d4ed32962a2751282f298af7a6e2d3f9dca48735 100644 --- a/ecrire/inc/filtres.php +++ b/ecrire/inc/filtres.php @@ -14,9 +14,7 @@ if (!defined("_ECRIRE_INC_VERSION")) return; include_spip('inc/charsets'); -// on definit la matrice pour les filtres images : le compilateur fera passer l'appel par filtrer -// on ne definit pas de fichier a inclure : l'inclusion sera faite dans image_filtrer -// par un include_spip unique en cas d'appel multiple +// signaler les filtres ayant besoin d'inclue inc/filtres_images $GLOBALS['spip_matrice']['image_valeurs_trans'] = ''; $GLOBALS['spip_matrice']['image_reduire'] = ''; @@ -43,18 +41,17 @@ $GLOBALS['spip_matrice']['image_imagick'] = ''; $GLOBALS['spip_matrice']['image_ramasse_miettes'] = ''; $GLOBALS['spip_matrice']['image_passe_partout'] = ''; -$inc_filtres_images = _DIR_RESTREINT."inc/filtres_images.php"; # find_in_path('inc/filtres_images'); -$GLOBALS['spip_matrice']['couleur_dec_to_hex'] = $inc_filtres_images; -$GLOBALS['spip_matrice']['couleur_hex_to_dec'] = $inc_filtres_images; -$GLOBALS['spip_matrice']['couleur_extreme'] = $inc_filtres_images; -$GLOBALS['spip_matrice']['couleur_inverser'] = $inc_filtres_images; -$GLOBALS['spip_matrice']['couleur_eclaircir'] = $inc_filtres_images; -$GLOBALS['spip_matrice']['couleur_foncer'] = $inc_filtres_images; -$GLOBALS['spip_matrice']['couleur_foncer_si_claire'] = $inc_filtres_images; -$GLOBALS['spip_matrice']['couleur_eclaircir_si_foncee'] = $inc_filtres_images; -$GLOBALS['spip_matrice']['couleur_web'] = $inc_filtres_images; -$GLOBALS['spip_matrice']['couleur_4096'] = $inc_filtres_images; -$GLOBALS['spip_matrice']['couleur_saturation'] = $inc_filtres_images; +$GLOBALS['spip_matrice']['couleur_dec_to_hex'] =''; +$GLOBALS['spip_matrice']['couleur_hex_to_dec'] =''; +$GLOBALS['spip_matrice']['couleur_extreme'] =''; +$GLOBALS['spip_matrice']['couleur_inverser'] =''; +$GLOBALS['spip_matrice']['couleur_eclaircir'] =''; +$GLOBALS['spip_matrice']['couleur_foncer'] =''; +$GLOBALS['spip_matrice']['couleur_foncer_si_claire'] =''; +$GLOBALS['spip_matrice']['couleur_eclaircir_si_foncee'] =''; +$GLOBALS['spip_matrice']['couleur_web'] =''; +$GLOBALS['spip_matrice']['couleur_4096'] =''; +$GLOBALS['spip_matrice']['couleur_saturation'] =''; // http://doc.spip.org/@chercher_filtre function chercher_filtre($fonc, $default=NULL) { @@ -78,9 +75,8 @@ function appliquer_filtre($arg, $filtre) { // et arguments // http://doc.spip.org/@filtrer function filtrer($filtre) { - if (isset($GLOBALS['spip_matrice'][$filtre]) - AND $f = $GLOBALS['spip_matrice'][$filtre]) - include_once($f); + if (isset($GLOBALS['spip_matrice'][$filtre])) + include_spip('inc/filtres_images'); $tous = func_get_args(); if (substr($filtre,0,6)=='image_') @@ -153,16 +149,11 @@ function version_svn_courante($dir) { // http://doc.spip.org/@image_filtrer function image_filtrer($args){ - static $inclure = true; $filtre = array_shift($args); # enlever $filtre $texte = array_shift($args); if (!$texte) return; // Cas du nom de fichier local if (preg_match(',^('._DIR_IMG .'|'. _DIR_IMG_PACK .'|'. _DIR_VAR .'),', $texte)) { - if ($inclure){ - include_spip('inc/filtres_images'); - $inclure = false; - } array_unshift($args,"<img src='$texte' />"); return call_user_func_array($filtre, $args); } @@ -171,10 +162,6 @@ function image_filtrer($args){ if (preg_match_all( ',(<([a-z]+) [^<>]*spip_documents[^<>]*>)?\s*(<img\s.*>),UimsS', $texte, $tags, PREG_SET_ORDER)) { - if ($inclure){ - include_spip('inc/filtres_images'); - $inclure = false; - } foreach ($tags as $tag) { $class = extraire_attribut($tag[3],'class'); if (!$class || (strpos($class,'no_image_filtrer')===FALSE)){ diff --git a/ecrire/inc/utils.php b/ecrire/inc/utils.php index 85e935980346483dfcf5918c29f1d5262aceb871..89de11e7fb0b9311c24824739053da68caa581f0 100644 --- a/ecrire/inc/utils.php +++ b/ecrire/inc/utils.php @@ -625,23 +625,22 @@ function memoriser_fichiers($dir) { // http://doc.spip.org/@find_in_path function find_in_path ($file, $dirname='') { - static $ram; + static $files=array(), $dirs=array(); $a = strrpos($file,'/'); if ($a !== false) { - $dirname .= substr($file, 0, $a+1); - $file = substr($file, $a+1); + $dirname .= substr($file, 0, ++$a); + $file = substr($file, $a); } + if (isset($files[$dirname][$file])) return $files[$dirname][$file]; + foreach(creer_chemin() as $dir) { - if (!isset($ram[$s = $dir . $dirname])) - $ram[$s] = is_dir($s) ? array() : false; - if (isset($ram[$s][$file])) { - if ($a = $ram[$s][$file]) return $a; - } elseif (is_array($ram[$s])) { - $a = $s . $file; - if ($ram[$s][$file]=(is_readable($a)?$a:'')) - return $a; + if (!isset($dirs[$a = $dir . $dirname])) + $dirs[$a] = is_dir($a); + if ($dirs[$a]) { + if (is_readable($a .= $file)) + return $files[$dirname][$file] = $a; } } }