Valider 7ee63d72 rédigé par marcimat's avatar marcimat
Parcourir les fichiers

Corriger une petite incohérence dans les chargements des fonctions dyn et stat...

Corriger une petite incohérence dans les chargements des fonctions dyn et stat des balises dynamiques :
Si une balise dynamique s'appelle 'XXX' (sans souligné), elle ne peut avoir de balise générique ;
Il ne faut donc pas essayer de charger de faux fichiers génériques.

D'autre part, on permet de déclarer les fonctions des balises dynamiques en dehors du répertoire balise.
Effectivement, la fonction principale `balise_XXX` pouvait déjà être chargée dans un fichier mes_fonctions,
mais pas les fonctions associées _dyn ou _stat ; 

parent c98f855e
Chargement en cours
Chargement en cours
Chargement en cours
Chargement en cours
+32 −18
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -429,24 +429,33 @@ function argumenter_squelette($v) {
 *     Code PHP d'exécutant l'inclusion du squelette (ou texte) de la balise dynamique
**/
function executer_balise_dynamique($nom, $args, $context_compil) {
	$p = strpos($nom,"_");
	$nomfonction = $nom;
	$nomfonction_generique = "";

	// Calculer un nom générique (ie. 'formulaire_' dans 'formulaire_editer_article')
	if (false !== ($p = strpos($nom, "_"))) {
		$nomfonction_generique = substr($nom, 0, $p+1);
	if (!$file = include_spip("balise/". strtolower($nomfonction))) {
		// pas de fichier associe, passer au traitement generique
		$file = include_spip("balise/" .strtolower($nomfonction_generique));
		if ($file) {
	}

	if (!$fonction_balise = charger_fonction($nomfonction, 'balise', true)) {
		if ($nomfonction_generique and $fonction_balise = charger_fonction($nomfonction_generique, 'balise', true)) {
			// et injecter en premier arg le nom de la balise 
			array_unshift($args, $nom);
			// et passer sur la fonction generique pour la suite
			$nomfonction = $nomfonction_generique;
		}
		else {
	}

	if (!$fonction_balise) {
		$msg = array('zbug_balise_inexistante',array('from'=>'CVT', 'balise'=>$nom));
		erreur_squelette($msg, $context_compil);
		return '';
	}
	}

	// retrouver le fichier qui a déclaré la fonction
	// même si la fonction dynamique est déclarée dans un fichier de fonctions.
	$reflFunc = new ReflectionFunction($fonction_balise);
	$file = substr($reflFunc->getFileName(), strlen(_ROOT_CWD));

	// Y a-t-il une fonction de traitement des arguments ?
	$f = 'balise_' . $nomfonction . '_stat';

@@ -457,8 +466,10 @@ function executer_balise_dynamique($nom, $args, $context_compil) {
	// verifier que la fonction dyn est la, 
	// sinon se replier sur la generique si elle existe
	if (!function_exists('balise_' . $nomfonction . '_dyn')) {
		$file = include_spip("balise/" .strtolower($nomfonction_generique));
		if (function_exists('balise_' . $nomfonction_generique . '_dyn')) {
		if ($nomfonction_generique
			AND $file = include_spip("balise/" .strtolower($nomfonction_generique))
			AND function_exists('balise_' . $nomfonction_generique . '_dyn'))
		{
			// et lui injecter en premier arg le nom de la balise 
			array_unshift($r, $nom);
			$nomfonction = $nomfonction_generique;
@@ -469,9 +480,12 @@ function executer_balise_dynamique($nom, $args, $context_compil) {
		}
	}

	if (!_DIR_RESTREINT) 
	if (!_DIR_RESTREINT) {
		$file = _DIR_RESTREINT_ABS . $file;
	}

	return synthetiser_balise_dynamique($nomfonction, $r, $file, $context_compil);

}

/**