From 7384d9d0943a17b76befa3488fa523a45f1e3e14 Mon Sep 17 00:00:00 2001
From: "Committo,Ergo:sum" <esj@rezo.net>
Date: Thu, 28 May 2009 15:06:27 +0000
Subject: [PATCH] =?UTF-8?q?[14000]=C2=A0n'avait=20pas=20report=C3=A9=20dan?=
 =?UTF-8?q?s=20la=20balise=20MODELE=20la=20nouvelle=20interface=20de=20l'a?=
 =?UTF-8?q?nalyse=20syntaxique=20des=20arguments=20d'inclusion=20(Romy=20&?=
 =?UTF-8?q?=20C=C3=A9dric).=20Mais=20m=C3=AAme=20avant=20[13986]=C2=A0le?=
 =?UTF-8?q?=20code=20produit=20=C3=A9tait=20d=C3=A9j=C3=A0=20incoh=C3=A9re?=
 =?UTF-8?q?nt:=20le=202e=20argument=20de=20recuperer=5Ffondproduit=20par?=
 =?UTF-8?q?=20le=20compilateur=20est=20un=20tableau=20mal=20fichu,=20par?=
 =?UTF-8?q?=20exemple:?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

{{{
$l = array('statut' => @$Pile[0]['statut'] ,'lang' => '' ,'recurs='.(++$recurs), $GLOBALS['spip_lang'])
}}}

et on ne voit pas l'intérêt de {{{$l =}}} ici. A finir.
---
 ecrire/public/balises.php | 68 ++++++++++++++-------------------------
 1 file changed, 24 insertions(+), 44 deletions(-)

diff --git a/ecrire/public/balises.php b/ecrire/public/balises.php
index b73c4987d4..dc2c0280e0 100644
--- a/ecrire/public/balises.php
+++ b/ecrire/public/balises.php
@@ -1006,60 +1006,40 @@ function balise_INCLURE_dist($p) {
 // Inclure un modele : #MODELE{modele, params}
 // http://doc.spip.org/@balise_MODELE_dist
 function balise_MODELE_dist($p) {
-	$contexte = array();
-
-	// recupere le premier argument, qui est obligatoirement le nom du modele
-	if (!is_array($p->param))
-		die("erreur de compilation #MODELE{nom du modele}");
-
-	// Transforme l'ecriture du deuxieme param {truc=chose,machin=chouette} en
-	// {truc=chose}{machin=chouette}... histoire de simplifier l'ecriture pour
-	// le webmestre : #MODELE{emb}{autostart=true,truc=1,chose=chouette}
-	if ($p->param[0]) {
-		$params = $p->param[0];
-		unset($p->param[0]);
-		while (count($params)>2){
-			array_unshift($p->param,array(0=>NULL,1=>array_pop($params)));
-			//$p->param[]=array(0=>NULL,1=>array_pop($p->param[0]));
-		}
-		array_unshift($p->param,$params);
-	}
-	$modele = array_shift($p->param);
-	$nom = strtolower($modele[1][0]->texte);
-	if (!$nom)
-		die("erreur de compilation #MODELE{nom du modele}");
-
-	// a priori true
-	// si false, le compilo va bloquer sur des syntaxes avec un filtre sans argument qui suit la balise
-	// si true, les arguments simples (sans truc=chose) vont degager
 
 	$_contexte = argumenter_inclure($p->param, true, $p->descr, $p->boucles, $p->id_boucle, false);
 
-	// Si le champ existe dans la pile, on le met dans le contexte
-	// (a priori c'est du code mort ; il servait pour #LESAUTEURS dans
-	// le cas spip_syndic_articles)
-	#$_contexte[] = "'$nom='.".champ_sql($nom, $p);
-
-	// Reserver la cle primaire de la boucle courante si elle existe
-	if ($idb = $p->id_boucle) {
-		if ($primary = $p->boucles[$idb]->primary) {
-			$id = champ_sql($primary, $p);
-			$_contexte[] = "'$primary='.".$id;
-			$_contexte[] = "'id='.".$id;
+	if (!isset($_contexte[1])) {
+			erreur_squelette(_T('zbug_balise_sans_argument', 
+					array('balise' => ' MODELE')),
+			$p->id_boucle);
+			$p->code = "''";
+	} else {
+		$nom = $_contexte[1];
+		unset($_contexte[1]);
+
+		// Incoherence dans la syntaxe du contexte. A revoir.
+		// Reserver la cle primaire de la boucle courante si elle existe
+		if ($idb = $p->id_boucle) {
+			if ($primary = $p->boucles[$idb]->primary) {
+				$id = champ_sql($primary, $p);
+				$_contexte[] = "'$primary='.".$id;
+				$_contexte[] = "'id='.".$id;
+			}
 		}
-	}
 
-	$connect = '';
-	if (isset($p->boucles[$p->id_boucle]))
-		$connect = $p->boucles[$p->id_boucle]->sql_serveur;
+		$connect = '';
+		if (isset($p->boucles[$p->id_boucle]))
+			$connect = $p->boucles[$p->id_boucle]->sql_serveur;
 
-	$page = "\$p = recuperer_fond('modeles/$nom', \$l = array(".join(',', $_contexte).",'recurs='.(++\$recurs), \$GLOBALS['spip_lang']), array('trim'=>true, 'modele'=>true"
+		$page = "\$p = recuperer_fond('modeles/' . $nom, \$l = array(".join(',', $_contexte).",'recurs='.(++\$recurs), \$GLOBALS['spip_lang']), array('trim'=>true, 'modele'=>true"
 	. (isset($_contexte['ajax'])?", 'ajax'=>true":'')
 	. "), " . _q($connect) . ")";
 
-	$p->code = "\n\t(((\$recurs=(isset(\$Pile[0]['recurs'])?\$Pile[0]['recurs']:0))>=5)? '' :\n\t$page)\n";
+		$p->code = "\n\t(((\$recurs=(isset(\$Pile[0]['recurs'])?\$Pile[0]['recurs']:0))>=5)? '' :\n\t$page)\n";
 
-	$p->interdire_scripts = false; // securite assuree par le squelette
+		$p->interdire_scripts = false; // securite assuree par le squelette
+	}
 
 	return $p;
 }
-- 
GitLab