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

integre le patch mis a jour proposé dans #177 (mais ne clos pas le ticket)

plus de warning cote public quand un plugin est manquant
verification de la configuration cote prive quand un admin se log, et redirect vers la page de configuration en cas de defaut.
la fonction de verification est 'compilee' en meme temps que les fonctions de chargement.
parent c1f5758c
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -43,6 +43,7 @@ function liste_plugin_actifs(){ ...@@ -43,6 +43,7 @@ function liste_plugin_actifs(){
function ecrire_plugin_actifs($plugin,$pipe_recherche=false){ function ecrire_plugin_actifs($plugin,$pipe_recherche=false){
static $liste_pipe_manquants=array(); static $liste_pipe_manquants=array();
$liste_fichier_verif = array();
if (($pipe_recherche)&&(!in_array($pipe_recherche,$liste_pipe_manquants))) if (($pipe_recherche)&&(!in_array($pipe_recherche,$liste_pipe_manquants)))
$liste_pipe_manquants[]=$pipe_recherche; $liste_pipe_manquants[]=$pipe_recherche;
...@@ -77,8 +78,10 @@ function ecrire_plugin_actifs($plugin,$pipe_recherche=false){ ...@@ -77,8 +78,10 @@ function ecrire_plugin_actifs($plugin,$pipe_recherche=false){
if ($charge=='options') if ($charge=='options')
$splugs .= '$GLOBALS[\'plugins\'][]=\''.$plug.'\';'."\n"; $splugs .= '$GLOBALS[\'plugins\'][]=\''.$plug.'\';'."\n";
if (isset($info[$charge])){ if (isset($info[$charge])){
foreach($info[$charge] as $file) foreach($info[$charge] as $file){
$s .= "include_once _DIR_PLUGINS.'$plug/".trim($file)."';\n"; $s .= "@include_once _DIR_PLUGINS.'$plug/".trim($file)."';\n";
$liste_fichier_verif[] = "_DIR_PLUGINS.'$plug/".trim($file)."'";
}
} }
} }
} }
...@@ -115,12 +118,15 @@ function ecrire_plugin_actifs($plugin,$pipe_recherche=false){ ...@@ -115,12 +118,15 @@ function ecrire_plugin_actifs($plugin,$pipe_recherche=false){
if (!isset($GLOBALS['spip_pipeline'][$add_pipe])) if (!isset($GLOBALS['spip_pipeline'][$add_pipe]))
$GLOBALS['spip_pipeline'][$add_pipe]= ''; $GLOBALS['spip_pipeline'][$add_pipe]= '';
pipeline_precompile(); $liste_fichier_verif2 = pipeline_precompile();
$liste_fichier_verif = array_merge($liste_fichier_verif,$liste_fichier_verif2);
verification_precompile($liste_fichier_verif);
} }
// precompilsation des pipelines // precompilation des pipelines
function pipeline_precompile(){ function pipeline_precompile(){
global $spip_pipeline, $spip_matrice; global $spip_pipeline, $spip_matrice;
$liste_fichier_verif = array();
$start_file = "<"."?php\nif (!defined('_ECRIRE_INC_VERSION')) return;\n"; $start_file = "<"."?php\nif (!defined('_ECRIRE_INC_VERSION')) return;\n";
$end_file = "\n?".">"; $end_file = "\n?".">";
...@@ -134,16 +140,21 @@ function pipeline_precompile(){ ...@@ -134,16 +140,21 @@ function pipeline_precompile(){
$s_call .= '$val = minipipe(\''.$fonc.'\', $val);'."\n"; $s_call .= '$val = minipipe(\''.$fonc.'\', $val);'."\n";
if (isset($spip_matrice[$fonc])){ if (isset($spip_matrice[$fonc])){
$file = $spip_matrice[$fonc]; $file = $spip_matrice[$fonc];
$s_inc .= 'include_once('; $s_inc .= '@include_once(';
// si _DIR_PLUGINS est dans la chaine, on extrait la constante // si _DIR_PLUGINS est dans la chaine, on extrait la constante
if (($p = strpos($file,'_DIR_PLUGINS'))!==FALSE){ if (($p = strpos($file,'_DIR_PLUGINS'))!==FALSE){
$f = "";
if ($p) if ($p)
$s_inc .= "'".substr($file,0,$p)."'."; $f .= "'".substr($file,0,$p)."'.";
$s_inc .= "_DIR_PLUGINS."; $f .= "_DIR_PLUGINS.";
$s_inc .= "'".substr($file,$p+12)."'"; $f .= "'".substr($file,$p+12)."'";
$s_inc .= $f;
$liste_fichier_verif[] = $f;
} }
else else{
$s_inc .= "'$file'"; $s_inc .= "'$file'";
$liste_fichier_verif[] = "'$file'";
}
$s_inc .= ');'."\n"; $s_inc .= ');'."\n";
} }
} }
...@@ -155,6 +166,23 @@ function pipeline_precompile(){ ...@@ -155,6 +166,23 @@ function pipeline_precompile(){
} }
ecrire_fichier(_DIR_SESSIONS."charger_pipelines.php", ecrire_fichier(_DIR_SESSIONS."charger_pipelines.php",
$start_file . $content . $end_file); $start_file . $content . $end_file);
return $liste_fichier_verif;
}
function verification_precompile($liste_fichier_verif){
$start_file = "<"."?php\nif (!defined('_ECRIRE_INC_VERSION')) return;
function verifier_presence_plugins(){
\$ok = true;";
$end_file = "
return \$ok;
}\n?".">";
$content = "";
foreach($liste_fichier_verif as $fichier){
$content .= "
\$ok = \$ok & @is_readable($fichier);";
}
ecrire_fichier(_DIR_SESSIONS."verifier_presence_plugins.php",
$start_file . $content . $end_file);
} }
// pas sur que a serve juste au cas o // pas sur que a serve juste au cas o
...@@ -391,4 +419,28 @@ function plugin_verifie_conformite($plug,&$arbre){ ...@@ -391,4 +419,28 @@ function plugin_verifie_conformite($plug,&$arbre){
} }
} }
function verifie_include_plugins(){
global $auteur_session;
if ($auteur_session['statut']!='0minirezo') return;
// verifier la presence des plugins (on a pu en deplacer un)
if (@is_readable(_DIR_SESSIONS."verifier_presence_plugins.php")){
// verification precompile
include_once(_DIR_SESSIONS."verifier_presence_plugins.php");
$ok = verifier_presence_plugins();
if ($ok) return;
}
if (_request('exec')!="admin_plugin"){
if (@is_readable(_DIR_PLUGINS)){
redirige_par_entete(generer_url_ecrire("admin_plugin"));
exit;
}
// plus de repertoire plugin existant, le menu n'existe plus
// on fait une mise a jour silencieuse
include_spip('inc/plugin');
// generer les fichiers php precompiles
// de chargement des plugins et des pipelines
verif_plugin();
spip_log("desactivation des plugins suite a suppression du repertoire");
}
}
?> ?>
...@@ -170,6 +170,12 @@ if ($GLOBALS['_COOKIE']['spip_admin'] ...@@ -170,6 +170,12 @@ if ($GLOBALS['_COOKIE']['spip_admin']
AND $GLOBALS['meta']["debut_restauration"] AND $GLOBALS['meta']["debut_restauration"]
AND !($exec=='js_menu_rubriques')) AND !($exec=='js_menu_rubriques'))
$exec = 'import_all'; $exec = 'import_all';
else // ne pas interrompre une restauration par un redirect inoportun
if ($auteur_session['statut']=='0minirezo') {
// on verifie la configuration des plugins
include_spip('inc/plugin');
verifie_include_plugins();
}
$var_f = charger_fonction($exec); $var_f = charger_fonction($exec);
$var_f(); $var_f();
......
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