From edd704fb6c15279df97c0a86a70709518923ea33 Mon Sep 17 00:00:00 2001
From: "Committo,Ergo:sum" <esj@rezo.net>
Date: Thu, 23 Jun 2005 23:11:48 +0000
Subject: [PATCH] =?UTF-8?q?doublons=20dynamiques=20mal=20r=C3=A9f=C3=A9ren?=
 =?UTF-8?q?c=C3=A9s=20(nic;o)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 inc-criteres.php3   | 16 ++++++++++++----
 inc-html-squel.php3 |  9 ++++-----
 2 files changed, 16 insertions(+), 9 deletions(-)

diff --git a/inc-criteres.php3 b/inc-criteres.php3
index 7cf0d38b32..fa11e7cce8 100644
--- a/inc-criteres.php3
+++ b/inc-criteres.php3
@@ -50,14 +50,22 @@ function critere_exclus_dist($idb, &$boucles, $crit) {
 
 // {doublons} ou {unique}
 // http://www.spip.net/@doublons
+// attention: boucle->doublons designe une variable qu'on affecte
 function critere_doublons_dist($idb, &$boucles, $crit) {
 	$boucle = &$boucles[$idb];
-	$boucle->doublons = "'" . $boucle->type_requete . "' . " .
-	  calculer_liste($crit->param[0], array(), $boucles, $boucles[$idb]->id_parent);
 	$NOT_IN = $crit->not ? '' : 'NOT';
 	$boucle->where[] = '" .' .
-		"calcul_mysql_in('".$boucle->id_table . '.' . $boucle->primary."', "
-		.'"0".$doublons['.$boucle->doublons."], '$NOT_IN') . \"";
+	  "calcul_mysql_in('".$boucle->id_table . '.' . $boucle->primary .
+	  "', " .
+	  '"0".$doublons[' . 
+	  $boucle->doublons .
+	  " = ('" .
+	  $boucle->type_requete . 
+	  "' . " .
+	  calculer_liste($crit->param[0], array(), $boucles, $boucles[$idb]->id_parent) .
+	  ')], \'' . 
+	  $NOT_IN . 
+	  " ') . \"";
 }
 
 // {lang_select}
diff --git a/inc-html-squel.php3 b/inc-html-squel.php3
index 3d5a1cf374..d017dc2685 100644
--- a/inc-html-squel.php3
+++ b/inc-html-squel.php3
@@ -381,11 +381,11 @@ function phraser_criteres($params, &$result) {
 			else { 
 			  // pas d'emplacement statique, faut un dynamique
 			  /// mais il y a 2 cas qui ont les 2 !
-			  if (($param == 'unique') || ($param == 'doublons'))
+			  if (($param == 'unique') || (ereg('^!?doublons *', $param)))
 			    {
-			      // sera remplace ensuite par la bonne valeur
-			      // mais il faut l'indiquer tout de suite
-			      $result->doublons = true;
+			      // cette variable sera inseree dans le code
+			      // et son nom sert d'indicateur des maintenant
+			      $result->doublons = '$doublons_index';
 			      $param = 'doublons';
 			    }
 			  elseif ($param == 'recherche')
@@ -489,7 +489,6 @@ function phraser($texte, $id_parent, &$boucles, $nom, $ligne=1) {
 			$milieu = substr($result->apres,1);
 			$result->apres = "";
 			phraser_criteres($result->param, $result);
-
 		}
 		//
 		// Recuperer la partie conditionnelle avant
-- 
GitLab