From e44bbe0b160d2011e673c7252d89ddd83c4c04ab Mon Sep 17 00:00:00 2001
From: Cerdic <cedric@yterium.com>
Date: Thu, 21 May 2009 14:04:04 +0000
Subject: [PATCH] report de [14024]

---
 ecrire/inc/utils.php         | 6 ++++++
 ecrire/public/balises.php    | 4 +---
 ecrire/public/compiler.php   | 9 +++++++++
 ecrire/public/interfaces.php | 2 ++
 4 files changed, 18 insertions(+), 3 deletions(-)

diff --git a/ecrire/inc/utils.php b/ecrire/inc/utils.php
index 93e7ac54c1..8208a1d74d 100644
--- a/ecrire/inc/utils.php
+++ b/ecrire/inc/utils.php
@@ -1634,6 +1634,12 @@ function recuperer_fond($fond, $contexte=array(), $options = array(), $connect='
 	// (trim etait le 3eme argument, par defaut a true)
 	if (!is_array($options)) $options = array('trim'=>$options);
 	if (!isset($options['trim'])) $options['trim']=true;
+
+	if (isset($contexte['connect'])){
+		$connect = ($connect ? $connect : $contexte['connect']);
+		unset($contexte['connect']);
+	}
+
 	if (isset($options['modele']))
 		$contexte = creer_contexte_de_modele($contexte);
 
diff --git a/ecrire/public/balises.php b/ecrire/public/balises.php
index 8229c37d90..b73c4987d4 100644
--- a/ecrire/public/balises.php
+++ b/ecrire/public/balises.php
@@ -985,14 +985,12 @@ function balise_INCLURE_dist($p) {
 		$_l = 'array(' . join(",\n\t", $_contexte) .')';
 		if ($flag_env) $_l = "array_merge(\$Pile[0],$_l)";
 
-		$_connect = _q(!$id_boucle ? '' : $p->boucles[$id_boucle]->sql_serveur);
-
 		$_options = array();
 		if (isset($_contexte['ajax'])) $_options[] = "'ajax'=>true";
 		if ($p->etoile) $_options[] = "'etoile'=>true";
 		$_options = "array(" . join(',',$_options) . ")";
 		
-		$p->code = "recuperer_fond('',\$l =  $_l, $_options, $_connect)";
+		$p->code = "recuperer_fond('',\$l =  $_l, $_options)";
 
 	} elseif (!isset($_contexte[1])) {
 			erreur_squelette(_T('zbug_balise_sans_argument', 
diff --git a/ecrire/public/compiler.php b/ecrire/public/compiler.php
index 4b2891e7c7..d7c7dd7261 100644
--- a/ecrire/public/compiler.php
+++ b/ecrire/public/compiler.php
@@ -93,6 +93,15 @@ function argumenter_inclure($params, $rejet_filtres, $descr, &$boucles, $id_bouc
 			}
 		}
 	}
+	// si pas de connect explicite, on transmet celui de la boucle courante
+	//
+	if (!isset($l['connect'])
+		AND $connect = (!$id_boucle ? '' : $boucles[$id_boucle]->sql_serveur)
+	  AND !in_array($connect,$GLOBALS['exception_des_connect'])){
+		$l['connect'] = ($echap?"\'connect\' => ' . argumenter_squelette(":"'connect' => ")
+			. "'$connect'" . ($echap? ") . '":" ");
+	}
+
 	// Cas particulier de la langue : si {lang=xx} est definie, on
 	// la passe, sinon on passe la langue courante au moment du calcul
 	// sauf si on n'en veut pas 
diff --git a/ecrire/public/interfaces.php b/ecrire/public/interfaces.php
index 1949ad0b38..d0dfef3b4b 100644
--- a/ecrire/public/interfaces.php
+++ b/ecrire/public/interfaces.php
@@ -154,6 +154,8 @@ class Polyglotte {
 global $table_criteres_infixes;
 $table_criteres_infixes = array('<', '>', '<=', '>=', '==', '===', '!=', '!==', '<>',  '?');
 
+global $exception_des_connect;
+$exception_des_connect[] = ''; // ne pas transmettre le connect='' par les inclure
 //
 // Globales de description de la base
 
-- 
GitLab