Valider 6127d8b9 rédigé par marcimat's avatar marcimat
Parcourir les fichiers

Report de r23258 :

Ticket #3860 : Lors du calcul du fichier de caches des pipelines,
notamment et particulièrement lorsqu'on utilise la balise `<genie>` dans un paquet.xml,
bien faire en sorte d'avoir les chemins des plugins actifs (ou à activer) chargés pour
tester la présence de la fonction demandée dans la balise `<genie>`.

Sinon, si on vide le cache (depuis l'admin, ou brutalement tmp/cache/*), les crons déclarés dans 
les balises `<genie>` ne sont plus activés tant qu'on ne repasse pas sur la page d'administration
des plugins. 

Du coup, on déplace le chargement des chemins de plugins et options un peu au dessus, pour que
la précompilation des pipelines ait accès aux fichiers des plugins activés.

Le petit hic, c'est un léger changement de comportement :  les fichiers 
d'options des plugins n'ont plus accès, dans la globale 'spip_pipeline', 
aux fonctions ajoutés par les balises `<pipeline>` des paquet.xml et plugin.xml, 
(infos complétées après le chargement des fichiers d'options donc). 
Je ne pense pas que ce changement soit gênant.
parent 695d178a
Chargement en cours
Chargement en cours
Chargement en cours
Chargement en cours
+29 −16
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -671,7 +671,7 @@ function ecrire_plugin_actifs($plugin, $pipe_recherche = false, $operation = 'ra
	}

	// recharger le xml des plugins a activer
	// on forcer le reload ici, meme si le fichier xml n'a pas change
	// on force le reload ici, meme si le fichier xml n'a pas change
	// pour ne pas rater l'ajout ou la suppression d'un fichier fonctions/options/administrations
	// pourra etre evite quand on ne supportera plus les plugin.xml
	// en deplacant la detection de ces fichiers dans la compilation ci dessous
@@ -717,10 +717,12 @@ function ecrire_plugin_actifs($plugin, $pipe_recherche = false, $operation = 'ra
	// generer charger_plugins_chemin.php
	plugins_precompile_chemin($plugin_valides, $ordre);
	// generer les fichiers
	// 	charger_plugins_options.php
	// 	charger_plugins_fonctions.php
	// et retourner les fichiers a verifier
	// - charger_plugins_options.php
	// - charger_plugins_fonctions.php
	plugins_precompile_xxxtions($plugin_valides, $ordre);
	// charger les chemins des plugins et les fichiers d'options
	// (qui peuvent déclarer / utiliser des pipelines, ajouter d'autres chemins)
	plugins_amorcer_plugins_actifs();
	// mise a jour de la matrice des pipelines
	$prepend_code = pipeline_matrice_precompile($plugin_valides, $ordre, $pipe_recherche);
	// generer le fichier _CACHE_PIPELINE
@@ -886,6 +888,29 @@ function plugin_ongletbouton($nom, $val) {
		. "}\n";
}

/**
 * Chargement des plugins actifs dans le path de SPIP
 * et exécution de fichiers d'options des plugins
 *
 * Les fichiers d'options peuvent déclarer des pipelines ou de
 * nouveaux chemins.
 *
 * La connaissance chemins peut être nécessaire pour la construction
 * du fichier d'exécution des pipelines.
 **/
function plugins_amorcer_plugins_actifs() {

	if (@is_readable(_CACHE_PLUGINS_PATH)) {
		include_once(_CACHE_PLUGINS_PATH);
	}

	if (@is_readable(_CACHE_PLUGINS_OPT)) {
		include_once(_CACHE_PLUGINS_OPT);
	} else {
		spip_log("pipelines desactives: impossible de produire " . _CACHE_PLUGINS_OPT);
	}
}

// creer le fichier CACHE_PLUGIN_VERIF a partir de
// $GLOBALS['spip_pipeline']
// $GLOBALS['spip_matrice']
@@ -1013,18 +1038,6 @@ function pipeline_matrice_precompile($plugin_valides, $ordre, $pipe_recherche) {
		. "\$val = minipipe('f_jQuery_prive', \$val);\n"
		. $prepend_code['header_prive'];


	// on charge les fichiers d'options qui peuvent completer
	// la globale spip_pipeline egalement
	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);
	}

	// on ajoute les pipe qui ont ete recenses manquants
	foreach ($liste_pipe_manquants as $add_pipe) {
		if (!isset($GLOBALS['spip_pipeline'][$add_pipe])) {