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