Skip to content
Extraits de code Groupes Projets
Valider 8a4f901c rédigé par cerdic's avatar cerdic
Parcourir les fichiers

report de [14756]

parent 298fadad
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -31,6 +31,7 @@ function action_purger_dist()
@spip_unlink(_CACHE_PLUGINS_OPT);
@spip_unlink(_CACHE_PLUGINS_FCT);
@spip_unlink(_CACHE_PLUGINS_VERIF);
@spip_unlink(_CACHE_CHEMIN);
purger_repertoire(_DIR_CACHE);
purger_repertoire(_DIR_AIDE);
purger_repertoire(_DIR_VAR.'cache-css');
......
......@@ -449,6 +449,7 @@ function ecrire_plugin_actifs($plugin,$pipe_recherche=false,$operation='raz') {
}
ecrire_fichier(_CACHE_PLUGINS_VERIF,
serialize($liste_fichier_verif));
@spip_unlink(_CACHE_CHEMIN);
}
// precompilation des pipelines
......
......@@ -695,17 +695,20 @@ function chemin_image($icone){
// si on donne un sous-repertoire en 2e arg optionnel, il FAUT le / final
// si 3e arg vrai, on inclut si ce n'est fait.
define('_ROOT_CWD', getcwd().'/');
$GLOBALS['path_files'] = null;
// http://doc.spip.org/@find_in_path
function find_in_path ($file, $dirname='', $include=false) {
static $files=array(), $dirs=array();
static $dirs=array();
static $inc = array(); # cf http://trac.rezo.net/trac/spip/changeset/14743
if (isset($files[$dirname][$file])) {
if (isset($GLOBALS['path_files'][$dirname][$file])) {
if (!$GLOBALS['path_files'][$dirname][$file])
return false;
if ($include AND !isset($inc[$dirname][$file])) {
include_once _ROOT_CWD . $files[$dirname][$file];
include_once _ROOT_CWD . $GLOBALS['path_files'][$dirname][$file];
$inc[$dirname][$file] = $inc[''][$dirname . $file] = true;
}
return $files[$dirname][$file];
return $GLOBALS['path_files'][$dirname][$file];
}
$a = strrpos($file,'/');
......@@ -723,7 +726,9 @@ function find_in_path ($file, $dirname='', $include=false) {
include_once _ROOT_CWD . $a;
$inc[$dirname][$file] = $inc[''][$dirname . $file] = true;
}
return $files[$dirname][$file] = $files[''][$dirname . $file] = $a;
if (!defined('_SAUVER_CHEMIN'))
define('_SAUVER_CHEMIN',true);
return $GLOBALS['path_files'][$dirname][$file] = $GLOBALS['path_files'][''][$dirname . $file] = $a;
}
}
}
......@@ -739,8 +744,35 @@ function find_in_path ($file, $dirname='', $include=false) {
die("Erreur interne: ne peut inclure $dirname$file");
}
}
if (!defined('_SAUVER_CHEMIN'))
define('_SAUVER_CHEMIN',true);
return $GLOBALS['path_files'][$dirname][$file] = $GLOBALS['path_files'][''][$dirname . $file] = false;
}
function load_path_cache(){
$GLOBALS['path_files'] = array();
// si le visiteur est admin,
// on ne recharge pas le cache pour forcer sa mise a jour
// le cache de chemin n'est utilise que dans le public
if (_DIR_RESTREINT
AND (!isset($GLOBALS['visiteur_statut']) OR $GLOBALS['visiteur_statut']!='0minirezo')){
lire_fichier(_CACHE_CHEMIN,$contenu);
if (!$GLOBALS['path_files']=unserialize($contenu))
$GLOBALS['path_files'] = array();
}
// pas de sauvegarde du chemin si on est pas dans le public
if (!_DIR_RESTREINT)
define('_SAUVER_CHEMIN',false);
}
function save_path_cache(){
if (defined('_SAUVER_CHEMIN')
AND _SAUVER_CHEMIN)
ecrire_fichier(_CACHE_CHEMIN,serialize($GLOBALS['path_files']));
}
/**
* Trouve tous les fichiers du path correspondants a un pattern
* pour un nom de fichier donne, ne retourne que le premier qui sera trouve
......@@ -1135,6 +1167,7 @@ function spip_initialisation_core($pi=NULL, $pa=NULL, $ti=NULL, $ta=NULL) {
define('_CACHE_PLUGINS_FCT', _DIR_CACHE . "charger_plugins_fonctions.php");
define('_CACHE_PLUGINS_VERIF', _DIR_CACHE . "verifier_plugins.txt");
define('_CACHE_PIPELINES', _DIR_CACHE."charger_pipelines.php");
define('_CACHE_CHEMIN', _DIR_CACHE."chemin.txt");
# attention .php obligatoire pour ecrire_fichier_securise
define('_FILE_META', $ti . 'meta_cache.php');
......@@ -1197,6 +1230,9 @@ function spip_initialisation_core($pi=NULL, $pa=NULL, $ti=NULL, $ta=NULL) {
// systematique du noyau ou une baisse de perfs => a etudier)
include_once _DIR_RESTREINT . 'inc/flock.php';
// charger tout de suite le cache path
load_path_cache();
// *********** traiter les variables ************
//
......
......@@ -225,17 +225,20 @@ if (isset($GLOBALS['_INC_PUBLIC'])) {
calculer_prochain_postdate(true);
}
// Effectuer une tache de fond ?
// si #SPIP_CRON est present, on ne le tente que pour les navigateurs
// en mode texte (par exemple), et seulement sur les pages web
if (defined('_DIRECT_CRON_FORCE')
OR (
!defined('_DIRECT_CRON_INHIBE')
AND $html
AND !strstr($page['texte'], '<!-- SPIP-CRON -->')
AND !preg_match(',msie|mozilla|opera|konqueror,i', $_SERVER['HTTP_USER_AGENT']))
)
cron();
// Effectuer une tache de fond ?
// si #SPIP_CRON est present, on ne le tente que pour les navigateurs
// en mode texte (par exemple), et seulement sur les pages web
if (defined('_DIRECT_CRON_FORCE')
OR (
!defined('_DIRECT_CRON_INHIBE')
AND $html
AND !strstr($page['texte'], '<!-- SPIP-CRON -->')
AND !preg_match(',msie|mozilla|opera|konqueror,i', $_SERVER['HTTP_USER_AGENT']))
)
cron();
// sauver le cache chemin si necessaire
save_path_cache();
}
}
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter