Skip to content
Extraits de code Groupes Projets
Valider 7384d9d0 rédigé par esj's avatar esj
Parcourir les fichiers

[14000] n'avait pas reporté dans la balise MODELE la nouvelle interface de...

[14000] n'avait pas reporté dans la balise MODELE la nouvelle interface de l'analyse syntaxique des arguments d'inclusion (Romy & Cédric). Mais même avant [13986] le code produit était déjà incohérent: le 2e argument de recuperer_fondproduit par le compilateur est un tableau mal fichu, par exemple:

{{{
$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.
parent 8cb1400d
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -1006,60 +1006,40 @@ function balise_INCLURE_dist($p) { ...@@ -1006,60 +1006,40 @@ function balise_INCLURE_dist($p) {
// Inclure un modele : #MODELE{modele, params} // Inclure un modele : #MODELE{modele, params}
// http://doc.spip.org/@balise_MODELE_dist // http://doc.spip.org/@balise_MODELE_dist
function balise_MODELE_dist($p) { 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); $_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 if (!isset($_contexte[1])) {
// (a priori c'est du code mort ; il servait pour #LESAUTEURS dans erreur_squelette(_T('zbug_balise_sans_argument',
// le cas spip_syndic_articles) array('balise' => ' MODELE')),
#$_contexte[] = "'$nom='.".champ_sql($nom, $p); $p->id_boucle);
$p->code = "''";
// Reserver la cle primaire de la boucle courante si elle existe } else {
if ($idb = $p->id_boucle) { $nom = $_contexte[1];
if ($primary = $p->boucles[$idb]->primary) { unset($_contexte[1]);
$id = champ_sql($primary, $p);
$_contexte[] = "'$primary='.".$id; // Incoherence dans la syntaxe du contexte. A revoir.
$_contexte[] = "'id='.".$id; // 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 = ''; $connect = '';
if (isset($p->boucles[$p->id_boucle])) if (isset($p->boucles[$p->id_boucle]))
$connect = $p->boucles[$p->id_boucle]->sql_serveur; $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":'') . (isset($_contexte['ajax'])?", 'ajax'=>true":'')
. "), " . _q($connect) . ")"; . "), " . _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; return $p;
} }
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter