From 42f09a250f775a2c3c9031ebe0ebdf7bd6aa5f3f Mon Sep 17 00:00:00 2001
From: "Committo,Ergo:sum" <esj@rezo.net>
Date: Sat, 17 Jun 2006 19:15:56 +0000
Subject: [PATCH] =?UTF-8?q?Dans=20cette=20bard=C3=A9e=20de=20Warnings=20sa?=
 =?UTF-8?q?ns=20importance,=20il=20y=20avait=20un=20vrai=20bug=20qui=20fai?=
 =?UTF-8?q?sait=20a=20nouveau=20produire=20plusieurs=20fois=20le=20meme=20?=
 =?UTF-8?q?nom=20pour=20diff=C3=A9rents=20tables=20de=20jointures=20dans?=
 =?UTF-8?q?=20le=20cas=20de=20boucles=20DOCUMENTS.?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 ecrire/inc/filtres.php     | 4 +++-
 ecrire/inc/texte.php       | 5 ++---
 ecrire/public/compiler.php | 3 ++-
 ecrire/public/composer.php | 2 +-
 ecrire/public/criteres.php | 7 +++----
 5 files changed, 11 insertions(+), 10 deletions(-)

diff --git a/ecrire/inc/filtres.php b/ecrire/inc/filtres.php
index db3e6d907c..6f19f9fed4 100644
--- a/ecrire/inc/filtres.php
+++ b/ecrire/inc/filtres.php
@@ -2771,6 +2771,9 @@ function pagination_item($num, $txt, $pattern, $lien_base, $debut, $ancre) {
 // on peut la surcharger en definissant dans mes_fonctions :
 // function pagination($total, $nom, $pas, $liste) {...}
 //
+
+define('PAGINATION_MAX', 10);
+
 function calcul_pagination($total, $nom, $pas, $liste = true) {
 	static $ancres = array();
 	$bloc_ancre = "";
@@ -2781,7 +2784,6 @@ function calcul_pagination($total, $nom, $pas, $liste = true) {
 		return pagination($total, $nom, $pas, $liste);
 
 	$separateur = '&nbsp;| ';
-	define('PAGINATION_MAX', 10);
 
 	$debut = 'debut'.$nom;
 
diff --git a/ecrire/inc/texte.php b/ecrire/inc/texte.php
index 1ae60347cb..80eb565a54 100644
--- a/ecrire/inc/texte.php
+++ b/ecrire/inc/texte.php
@@ -313,6 +313,7 @@ function couper($texte, $taille=50) {
 // prendre <intro>...</intro> sinon couper a la longueur demandee
 function couper_intro($texte, $long) {
 	$texte = extraire_multi(eregi_replace("(</?)intro>", "\\1intro>", $texte)); // minuscules
+	$intro = '';
 	while ($fin = strpos($texte, "</intro>")) {
 		$zone = substr($texte, 0, $fin);
 		$texte = substr($texte, $fin + strlen("</intro>"));
@@ -328,9 +329,7 @@ function couper_intro($texte, $long) {
 	}
 
 	// supprimer un eventuel chapo redirecteur =http:/.....
-	$intro = preg_replace(',^=[^[:space:]]+,','',$intro);
-
-	return $intro;
+	return preg_replace(',^=[^[:space:]]+,','',$intro);
 }
 
 
diff --git a/ecrire/public/compiler.php b/ecrire/public/compiler.php
index 2ec2f31047..2657d2b697 100644
--- a/ecrire/public/compiler.php
+++ b/ecrire/public/compiler.php
@@ -631,12 +631,12 @@ function public_compiler_dist($squelette, $nom, $gram, $sourcefile) {
 	foreach($boucles as $idb => $boucle) {
 		if (($boucle->type_requete == 'documents') && $boucle->doublons)
 			{ $descr['documents'] = true; break; }
-		$boucles[$idb]->descr = &$descr;
 	}
 	// Commencer par reperer les boucles appelees explicitement 
 	// car elles indexent les arguments de maniere derogatoire
 	foreach($boucles as $id => $boucle) { 
 		if ($boucle->type_requete == 'boucle') {
+			$boucles[$id]->descr = &$descr;
 			$rec = &$boucles[$boucle->param[0]];
 			if (!$rec) {
 				return array(_T('zbug_info_erreur_squelette'),
@@ -656,6 +656,7 @@ 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"];
diff --git a/ecrire/public/composer.php b/ecrire/public/composer.php
index 9c1f6d475d..f01ffc0d2a 100644
--- a/ecrire/public/composer.php
+++ b/ecrire/public/composer.php
@@ -311,7 +311,7 @@ function calcul_exposer ($id, $type, $reference) {
 	}
 
 	// And the winner is...
-	return isset($exposer[$type]) ? $exposer[$type][$id] : '';
+	return isset($exposer[$type]) ? isset($exposer[$type][$id]) : '';
 }
 
 function lister_objets_avec_logos ($type) {
diff --git a/ecrire/public/criteres.php b/ecrire/public/criteres.php
index 5f121ae0d1..5b763b3136 100644
--- a/ecrire/public/criteres.php
+++ b/ecrire/public/criteres.php
@@ -51,7 +51,7 @@ function critere_doublons_dist($idb, &$boucles, $crit) {
 	$boucle = &$boucles[$idb];
 	if (!$boucle->primary)
 		erreur_squelette(_L('doublons sur une table sans index'), $param);
-	$nom = calculer_liste($crit->param[0], array(), $boucles, $boucles[$idb]->id_parent);
+	$nom = !isset($crit->param[0]) ? "''" : calculer_liste($crit->param[0], array(), $boucles, $boucles[$idb]->id_parent);
 	// mettre un tableau pour que ce ne soit pas vu comme une constante
 	$boucle->where[]= array("calcul_mysql_in('".$boucle->id_table . '.' . $boucle->primary .
 	  "', " .
@@ -97,10 +97,9 @@ function critere_debut_dist($idb, &$boucles, $crit) {
 function critere_pagination_dist($idb, &$boucles, $crit) {
 
 	// definition de la taille de la page
-	$pas = calculer_liste($crit->param[0], array(),
-		$boucles, $boucles[$idb]->id_parent);
+	$pas = !isset($crit->param[0]) ? "''" : calculer_liste($crit->param[0], array(), $boucles, $boucles[$idb]->id_parent);
 
-	$pas = "((\$a = intval($pas)) ? \$a : 10)"; # par defaut c'est 10
+	$pas = ($pas== "''") ? '10' : "((\$a = intval($pas)) ? \$a : 10)";
 
 	$boucle = &$boucles[$idb];
 	$boucle->mode_partie = 'p+';
-- 
GitLab