Valider 8f731ab7 rédigé par esj's avatar esj
Parcourir les fichiers

Remplacement de {{{die}}} par un appel au débusqueur en cas de balise...

Remplacement de {{{die}}} par un appel au débusqueur en cas de balise dynamique incomplétement définie, avec partage de code (il y avait du reste une confusion entre l'existence du fichier et l'existence de la fonction qu'on espérait y trouver). Test effectué sur:

{{{
[(#FORMULARE_MAL_ECRIT)]
}}}
avec, dans mes_options:
{{{
function balise_formulare_mal_ecrit($p) {return calculer_balise_dynamique($p, 'formulare_mal_ecrit', array());}
}}}

Au passage, je trouve anormal qu'une squelette contenant:

{{{
[(#FORMULAIRE_INEXISTANT)]
}}}

ne déclenche pas d'erreur de la part de la fonction générique {{{formulaire_}}},
c'est exprès ?
parent 708f4697
Chargement en cours
Chargement en cours
Chargement en cours
Chargement en cours
+3 −9
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -26,20 +26,14 @@ function balise_FORMULAIRE_ECRIRE_AUTEUR ($p) {
// http://doc.spip.org/@balise_FORMULAIRE_ECRIRE_AUTEUR_stat
function balise_FORMULAIRE_ECRIRE_AUTEUR_stat($args, $context_compil) {
	include_spip('inc/filtres');
	// Pas d'id_auteur ni d'id_article ? Erreur de squelette
	// Pas d'id_auteur ni d'id_article ? Erreur de contexte
	$id = intval($args[1]);
	if (!$args[0] AND !$id) {
		include_spip('public/interfaces');
		$p = new Contexte;
		$p->descr = array('sourcefile' => $context_compil[0],
				  'nom' => $context_compil[1]);
		$p->id_boucle = $context_compil[2];
		$p->ligne = $context_compil[3];
		$p->lang = $context_compil[4];
		$msg = array('zbug_champ_hors_motif',
				array ('champ' => 'FORMULAIRE_ECRIRE_AUTEUR',
					'motif' => 'AUTEURS/ARTICLES'));
		return erreur_squelette($msg, $p);

		return denoncer_balise_dynamique($msg, $context_compil);
	}
	// Si on est dans un contexte article, 
	// sortir tous les mails des auteurs de l'article
+2 −9
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -33,19 +33,12 @@ function balise_FORMULAIRE_SIGNATURE ($p) {
// http://doc.spip.org/@balise_FORMULAIRE_SIGNATURE_stat
function balise_FORMULAIRE_SIGNATURE_stat($args, $context_compil) {

	// pas d'id_article => erreur de squelette
	// pas d'id_article => erreur de contexte
	if (!$args[0]) {
		include_spip('public/interfaces');
		$p = new Contexte;
		$p->descr = array('sourcefile' => $context_compil[0],
				  'nom' => $context_compil[1]);
		$p->id_boucle = $context_compil[2];
		$p->ligne = $context_compil[3];
		$p->lang = $context_compil[4];
		$msg = array('zbug_champ_hors_motif',
				array ('champ' => 'FORMULAIRE_SIGNATURE',
				       'motif' => 'ARTICLES'));
		return erreur_squelette($msg, $p);
		return denoncer_balise_dynamique($msg, $context_compil);
	}
	// article sans petition => pas de balise
	else if (!$args[1])
+2 −9
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -23,19 +23,12 @@ function balise_FORMULAIRE_SITE ($p) {
// http://doc.spip.org/@balise_FORMULAIRE_SITE_stat
function balise_FORMULAIRE_SITE_stat($args, $context_compil) {

	// Pas d'id_rubrique ? Erreur de squelette
	// Pas d'id_rubrique ? Erreur de contexte
	if (!$args[0]) {
		include_spip('public/interfaces');
		$p = new Contexte;
		$p->descr = array('sourcefile' => $context_compil[0],
				  'nom' => $context_compil[1]);
		$p->id_boucle = $context_compil[2];
		$p->ligne = $context_compil[3];
		$p->lang = $context_compil[4];
		$msg = array('zbug_champ_hors_motif',
				array ('champ' => 'FORMULAIRE_SITE',
					'motif' => 'RUBRIQUES'));
		return erreur_squelette($msg, $p);
		return denoncer_balise_dynamique($msg, $context_compil);
	}
	// Verifier que les visisteurs sont autorises a proposer un site

+48 −30
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -301,42 +301,60 @@ function argumenter_squelette($v) {
// verifier leurs arguments et filtres, et calculer le code a inclure
// http://doc.spip.org/@executer_balise_dynamique
function executer_balise_dynamique($nom, $args, $context_compil) {
	if (!$file = find_in_path(strtolower($nom) .'.php', 'balise/', true)) {
		// regarder si une fonction generique n'existe pas
		if (($p = strpos($nom,"_"))
		&& ($file = find_in_path(strtolower(substr($nom,0,$p+1)) .'.php', 'balise/', true))) {
			// dans ce cas, on lui injecte en premier arg le nom de la balise qu'on doit traiter

	$p = strpos($nom,"_");
	$nom2 = substr($nom,0,$p+1);
	if ($file = include_spip("balise/". strtolower($nom))) {
		$f = 'balise_' . $nom . '_stat';
	} else {
		// pas de fichier associe, passer au traitement generique
		$file = include_spip("balise/" .strtolower($nom2));
		if ($file) {
			// et injecter en premier arg le nom de la balise 
			array_unshift($args,$nom);
			$nom = substr($nom,0,$p+1);
			$f = 'balise_' . $nom2 . '_stat';
		}
		else {
			$msg =  "<span class='spip-debug-arg'>$nom</span> " .
			  _T('zxml_inconnu_balise');
			return denoncer_balise_dynamique($msg, $context_compil);
		}
		else
			die ("pas de balise dynamique pour #". strtolower($nom)." !");
	}
	// Y a-t-il une fonction de traitement des arguments ?
	$f = 'balise_' . $nom . '_stat';
	if (function_exists($f))
		$r = $f($args, $context_compil); 
	else
		$r = $args;
	if (!is_array($r))
		return $r;
	else {
		// verifier que la fonction dyn est la, sinon se replier sur la generique si elle existe

	$r = !function_exists($f) ? $args : $f($args, $context_compil); 

	if (!is_array($r)) return $r;

	// verifier que la fonction dyn est la, 
	// sinon se replier sur la generique si elle existe
	if (!function_exists('balise_' . $nom . '_dyn')) {
			// regarder si une fonction generique n'existe pas
			if (($p = strpos($nom,"_"))
			&& ($file = find_in_path(strtolower(substr($nom,0,$p+1)) .'.php', 'balise/', true))) {
				// dans ce cas, on lui injecte en premier arg le nom de la balise qu'on doit traiter
				array_unshift($r,$nom);
				$nom = substr($nom,0,$p+1);
		if (function_exists('balise_' . $nom2 . '_dyn')) {
			// et lui injecter en premier arg le nom de la balise 
			array_unshift($args,$nom);
			$nom = $nom2;
		} else {
		echo "\n<br>@@@@$nom2";
			$msg =  "<span class='spip-debug-arg'>$nom</span> " .
			  _T('zxml_inconnu_balise');
			return denoncer_balise_dynamique($msg, $context_compil);
		}
			else
				die ("pas de balise dynamique pour #". strtolower($nom)." !");
	}
	if (!_DIR_RESTREINT) 
		$file = _DIR_RESTREINT_ABS . $file;
	return synthetiser_balise_dynamique($nom, $r, $file, $context_compil);
}

function denoncer_balise_dynamique($msg, $context_compil)
{
	include_spip('public/interfaces');
	$p = new Contexte;
	$p->descr = array('sourcefile' => $context_compil[0],
				  'nom' => $context_compil[1]);
	$p->id_boucle = $context_compil[2];
	$p->ligne = $context_compil[3];
	$p->lang = $context_compil[4];
	return erreur_squelette($msg, $p);
}

// http://doc.spip.org/@lister_objets_avec_logos