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