From 5bba3afd7a0a75cc9e566d61fd6ea28dd64c4648 Mon Sep 17 00:00:00 2001 From: "Committo,Ergo:sum" <esj@rezo.net> Date: Sun, 30 Jul 2006 19:42:35 +0000 Subject: [PATCH] =?UTF-8?q?Initialiser=20les=20donn=C3=A9es=20sur=20les=20?= =?UTF-8?q?boucles=20non=20r=C3=A9cursives=20avant=20la=20compil=20des=20b?= =?UTF-8?q?oucles=20r=C3=A9cursives,=20car=20certaines=20balises=20(EXPOSE?= =?UTF-8?q?)=20dans=20les=20boucles=20r=C3=A9cursives=20peuvent=20en=20avo?= =?UTF-8?q?ir=20besoin.=20Corrige=20#478.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ecrire/public/compiler.php | 33 ++++++++++++++++++--------------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/ecrire/public/compiler.php b/ecrire/public/compiler.php index 2657d2b697..6de5783b4f 100644 --- a/ecrire/public/compiler.php +++ b/ecrire/public/compiler.php @@ -628,7 +628,24 @@ function public_compiler_dist($squelette, $nom, $gram, $sourcefile) { $descr = array('nom' => $nom, 'sourcefile' => $sourcefile); // une boucle documents est conditionnee par tout le reste! - foreach($boucles as $idb => $boucle) { + foreach($boucles as $id => $boucle) { + $type = $boucle->type_requete; + if ($type != 'boucle') { + $boucles[$id]->descr = &$descr; + if ($x = $table_des_tables[$type]) { + $boucles[$id]->id_table = $x; + $boucles[$id]->primary = $tables_principales["spip_$x"]['key']["PRIMARY KEY"]; + if ((!$boucles[$id]->jointures) + AND (is_array($x = $tables_jointures['spip_' . $x]))) + $boucles[$id]->jointures = $x; + } else { + // table non Spip. + $boucles[$id]->id_table = $type; + $serveur = $boucle->sql_serveur; + $x = $tables_des_serveurs_sql[$serveur ? $serveur : 'localhost'][$type]['key']; + $boucles[$id]->primary = ($x["PRIMARY KEY"] ? $x["PRIMARY KEY"] : $x["KEY"]); + } + } if (($boucle->type_requete == 'documents') && $boucle->doublons) { $descr['documents'] = true; break; } } @@ -656,20 +673,6 @@ function public_compiler_dist($squelette, $nom, $gram, $sourcefile) { foreach($boucles as $id => $boucle) { $type = $boucle->type_requete; if ($type != 'boucle') { - $boucles[$id]->descr = &$descr; - if ($x = $table_des_tables[$type]) { - $boucles[$id]->id_table = $x; - $boucles[$id]->primary = $tables_principales["spip_$x"]['key']["PRIMARY KEY"]; - if ((!$boucles[$id]->jointures) - AND (is_array($x = $tables_jointures['spip_' . $x]))) - $boucles[$id]->jointures = $x; - } else { - // table non Spip. - $boucles[$id]->id_table = $type; - $serveur = $boucle->sql_serveur; - $x = $tables_des_serveurs_sql[$serveur ? $serveur : 'localhost'][$type]['key']; - $boucles[$id]->primary = ($x["PRIMARY KEY"] ? $x["PRIMARY KEY"] : $x["KEY"]); - } if ($boucle->param) { $res = calculer_criteres($id, $boucles); if (is_array($res)) return $res; # erreur -- GitLab