diff --git a/ecrire/public/balises.php b/ecrire/public/balises.php index b73c4987d49b98c5c696b453539117a6c47451f5..dc2c0280e00d9c461976b3deb174bc65815f401b 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; }