Valider cd495ca9 rédigé par cerdic's avatar cerdic
Parcourir les fichiers

#1884 : il faut charger le chemin des plugins avant de charger le connecteur a...

#1884 : il faut charger le chemin des plugins avant de charger le connecteur a la base pour permettre aux plugins de gerer la connection a la base.
Regle 99% du probleme, le 1% restant etant le moment ou on configure le plugin si la config a ete perdue.
Cela concerne 1 hit et ne peut etre resolu qu'en levant l'erreur conceptuelle qui est qu'il faut acceder a la base pour savoir quels sont les plugins a charger (pour gerer la base ...), a voir pour la prochaine version majeure
parent 9ed07912
Chargement en cours
Chargement en cours
Chargement en cours
Chargement en cours
+1 −0
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -28,6 +28,7 @@ function action_purger_dist()
		supprime_invalideurs();
		@spip_unlink(_CACHE_RUBRIQUES);
		@spip_unlink(_CACHE_PIPELINES);
		@spip_unlink(_CACHE_PLUGINS_PATH);
		@spip_unlink(_CACHE_PLUGINS_OPT);
		@spip_unlink(_CACHE_PLUGINS_FCT);
		@spip_unlink(_CACHE_PLUGINS_VERIF);
+5 −5
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -352,7 +352,7 @@ function ecrire_plugin_actifs($plugin,$pipe_recherche=false,$operation='raz') {
	// generer les fichier
	// charger_plugins_options.php
	// charger_plugins_fonctions.php
	foreach(array('options','fonctions') as $charge){
	foreach(array('chemins'=>_CACHE_PLUGINS_PATH,'options'=>_CACHE_PLUGINS_OPT,'fonctions'=>_CACHE_PLUGINS_FCT) as $charge=>$fileconf){
		$s = "";
		$splugs = "";
		if (is_array($infos)){
@@ -366,7 +366,7 @@ function ecrire_plugin_actifs($plugin,$pipe_recherche=false,$operation='raz') {
				$info = $infos[$dir_type][$plug];
				// definir le plugin, donc le path avant l'include du fichier options
				// permet de faire des include_spip pour attraper un inc_ du plugin
				if ($charge=='options'){
				if ($charge=='chemins'){
					$prefix = strtoupper(preg_replace(',\W,','_',$info['prefix']));
					$splugs .= "define('_DIR_PLUGIN_$prefix',$dir); ";
					foreach($info['path'] as $chemin){
@@ -379,6 +379,7 @@ function ecrire_plugin_actifs($plugin,$pipe_recherche=false,$operation='raz') {
						}
					}
				}
				// concerne uniquement options et fonctions
				if (isset($info[$charge])){
					foreach($info[$charge] as $file){
						// on genere un if file_exists devant chaque include pour pouvoir garder le meme niveau d'erreur general
@@ -398,9 +399,8 @@ function ecrire_plugin_actifs($plugin,$pipe_recherche=false,$operation='raz') {
		if ($charge=='options'){
			$s .= "function boutons_plugins(){return unserialize('".str_replace("'","\'",serialize($liste_boutons))."');}\n";
			$s .= "function onglets_plugins(){return unserialize('".str_replace("'","\'",serialize($liste_onglets))."');}\n";
			$f = _CACHE_PLUGINS_OPT;
		} else  $f = _CACHE_PLUGINS_FCT;
		ecrire_fichier($f, $start_file . $splugs . $s . $end_file);
		}
		ecrire_fichier($fileconf, $start_file . $splugs . $s . $end_file);
	}

	if (is_array($infos)){
+6 −1
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -706,6 +706,10 @@ function clear_path_cache(){
	spip_unlink(_CACHE_CHEMIN);
}
function load_path_cache(){
	// charger le path des plugins
	if (@is_readable(_CACHE_PLUGINS_PATH)){
		include_once(_CACHE_PLUGINS_PATH);
	}
	$GLOBALS['path_files'] = array();
	// si le visiteur est admin,
	// on ne recharge pas le cache pour forcer sa mise a jour
@@ -1114,6 +1118,7 @@ function spip_initialisation_core($pi=NULL, $pa=NULL, $ti=NULL, $ta=NULL) {

	// Declaration des fichiers

	define('_CACHE_PLUGINS_PATH', _DIR_CACHE . "charger_plugins_chemins.php");
	define('_CACHE_PLUGINS_OPT', _DIR_CACHE . "charger_plugins_options.php");
	define('_CACHE_PLUGINS_FCT', _DIR_CACHE . "charger_plugins_fonctions.php");
	define('_CACHE_PLUGINS_VERIF', _DIR_CACHE . "verifier_plugins.txt");
@@ -1182,7 +1187,7 @@ 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
	// charger tout de suite le path et son cache
	load_path_cache();

	// *********** traiter les variables ************
+3 −1
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -453,7 +453,7 @@ error_reporting(SPIP_ERREUR_REPORT);
// qui ne sera pas execute car _ECRIRE_INC_VERSION est defini
// donc il faut avoir tout fini ici avant de charger les plugins

if (@is_readable(_CACHE_PLUGINS_OPT)){
if (@is_readable(_CACHE_PLUGINS_OPT) AND @is_readable(_CACHE_PLUGINS_PATH)){
	// chargement optimise precompile
	include_once(_CACHE_PLUGINS_OPT);
} else {
@@ -462,6 +462,8 @@ if (@is_readable(_CACHE_PLUGINS_OPT)){
	// generer les fichiers php precompiles
	// de chargement des plugins et des pipelines
	if (actualise_plugins_actifs()!==false) {
		if (@is_readable(_CACHE_PLUGINS_PATH))
			include_once(_CACHE_PLUGINS_PATH); // securite : a priori n'a pu etre fait plus tot
		if (@is_readable(_CACHE_PLUGINS_OPT))
			include_once(_CACHE_PLUGINS_OPT);
		else spip_log("pipelines desactives: impossible de produire " . _CACHE_PLUGINS_OPT);