From 1395376c381e9ed358f6854d51ac84f764509171 Mon Sep 17 00:00:00 2001 From: Fil <fil@rezo.net> Date: Sat, 4 Mar 2006 17:15:39 +0000 Subject: [PATCH] ioptimiser --- ecrire/inc/utils.php | 70 ++++++++++++++++++++++++++------------------ 1 file changed, 42 insertions(+), 28 deletions(-) diff --git a/ecrire/inc/utils.php b/ecrire/inc/utils.php index 61224f1888..5d138e4403 100644 --- a/ecrire/inc/utils.php +++ b/ecrire/inc/utils.php @@ -621,39 +621,53 @@ function texte_script($texte) { // function find_in_path ($filename) { + static $path_a = array(); + static $c = ''; + + // on calcule le chemin si le nombre de plugins a change + if ($c != count($GLOBALS['plugins']).$GLOBALS['dossier_squelettes']) { + $c = count($GLOBALS['plugins']).$GLOBALS['dossier_squelettes']; + + // Chemin standard depuis l'espace public + $path = defined('_SPIP_PATH') ? _SPIP_PATH : + _DIR_RACINE.':'. + _DIR_RACINE.'dist/:'. + _DIR_RACINE.'formulaires/:'. + _DIR_RESTREINT; + + // Ajouter les repertoires des plugins + if ($GLOBALS['plugins']) + $path = _DIR_PLUGINS + . join(':'._DIR_PLUGINS, $GLOBALS['plugins']) + . ':' . $path; + + // Ajouter squelettes/ + $path = _DIR_RACINE.'squelettes/:' . $path; + + // Et le(s) dossier(s) des squelettes nommes + if ($GLOBALS['dossier_squelettes']) + foreach (explode(':', $GLOBALS['dossier_squelettes']) as $d) + $path = + ($d[0] == '/' ? '' : _DIR_RACINE) . $d . '/:' . $path; + + // nettoyer les / du path + $path_a = array(); + foreach (explode(':', $path) as $dir) { + if (strlen($dir) AND substr($dir,-1) != '/') + $dir .= "/"; + $path_a[] = $dir; + } + } - // Chemin standard depuis l'espace public - - $path = defined('_SPIP_PATH') ? explode(':', _SPIP_PATH) : - array( - _DIR_RACINE, - _DIR_RACINE.'dist/', - _DIR_RACINE.'formulaires/', - _DIR_RESTREINT - ); - - // Ajouter les repertoires des plugins - foreach ($GLOBALS['plugins'] as $plug) - array_unshift($path, _DIR_PLUGINS.$plug.'/'); - - // Ajouter squelettes/ - array_unshift($path, _DIR_RACINE.'squelettes/'); - - // Et le(s) dossier(s) des squelettes nommes - if ($GLOBALS['dossier_squelettes']) - foreach (explode(':', $GLOBALS['dossier_squelettes']) as $d) - array_unshift($path, - ($d[0] == '/' ? '' : _DIR_RACINE) . $d . '/'); - - foreach ($path as $dir) { - // ajouter un / eventuellement manquant a la fin - if (strlen($dir) AND substr($dir,-1) != '/') $dir .= "/"; + // Parcourir le chemin + foreach ($path_a as $dir) { if (@is_readable($f = "$dir$filename")) { -# spip_log("find_in_path trouve $f"); +# spip_log("find_in_path trouve $f"); return $f; } } -# spip_log("find_in_path n'a pas vu '$filename' dans " . join(',', $path)); + +# spip_log("find_in_path n'a pas vu '$filename' dans " . $path); } // predicat sur les scripts de ecrire qui n'authentifient pas par cookie -- GitLab