From 9034f707b98df6fa60e0a6dbcab3a26281d66c63 Mon Sep 17 00:00:00 2001 From: "Committo,Ergo:sum" <esj@rezo.net> Date: Thu, 13 Dec 2007 13:55:00 +0000 Subject: [PATCH] =?UTF-8?q?Avec=202=20statiques,=20find=5Fin=5Fpath=20reto?= =?UTF-8?q?urne=20imm=C3=A9diatement=20si=20le=20fichier=20demand=C3=A9=20?= =?UTF-8?q?a=20d=C3=A9j=C3=A0=20=C3=A9t=C3=A9=20examin=C3=A9.=20Du=20coup,?= =?UTF-8?q?=20son=20non=20appel=20dans=20filtrer()=20est=20superflu.=20A?= =?UTF-8?q?=20noter=20qu'il=20serait=20bon=20de=20cloner=20include=5Fspip?= =?UTF-8?q?=20sur=20la=20signature=20de=20charger=5Ffonction,=20=C3=A7a=20?= =?UTF-8?q?=C3=A9viterait=20des=20allocations=20de=20chaines=20superflues.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ecrire/inc/filtres.php | 41 ++++++++++++++--------------------------- ecrire/inc/utils.php | 21 ++++++++++----------- 2 files changed, 24 insertions(+), 38 deletions(-) diff --git a/ecrire/inc/filtres.php b/ecrire/inc/filtres.php index 02f2c4649e..d4ed32962a 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 85e9359803..89de11e7fb 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; } } } -- GitLab