From c4f7b6824f1044b2147c358468d14d9dce0369dd Mon Sep 17 00:00:00 2001
From: "Committo,Ergo:sum" <esj@rezo.net>
Date: Fri, 1 Aug 2008 21:23:51 +0000
Subject: [PATCH] =?UTF-8?q?La=20balise=20EXPOSE=20n'=C3=A9tait=20pas=20op?=
 =?UTF-8?q?=C3=A9rationnelle=20en=20multi-base,=20c'est=20r=C3=A9par=C3=A9?=
 =?UTF-8?q?.=20Incidemment,=20les=20fonctions=20{{{quete=5F*}}}=C2=A0qui?=
 =?UTF-8?q?=20ne=20pr=C3=A9voyaient=20pss=20le=20param=C3=A8tre=20optionne?=
 =?UTF-8?q?l=20indiquant=20la=20base=20le=20pr=C3=A9voient=20=C3=A0=20pr?=
 =?UTF-8?q?=C3=A9sent.=20La=20fonction=20{{{calculer=5Fhierarchie}}}=20dis?=
 =?UTF-8?q?para=C3=AEt,=20n'=C3=A9tant=20utilis=C3=A9e=20que=20pour=20cett?=
 =?UTF-8?q?e=20balise,=20et=20donc=20de=20mani=C3=A8re=20lacunaire.?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 ecrire/inc_version.php       |  2 +-
 ecrire/public/balises.php    |  3 ++-
 ecrire/public/composer.php   | 32 ++++++--------------------------
 ecrire/public/parametrer.php | 24 +++++++++---------------
 4 files changed, 18 insertions(+), 43 deletions(-)

diff --git a/ecrire/inc_version.php b/ecrire/inc_version.php
index 3ee98052bf..19adc3c5e4 100644
--- a/ecrire/inc_version.php
+++ b/ecrire/inc_version.php
@@ -324,7 +324,7 @@ $liste_des_authentifications = array(
 $spip_version_branche = "2.0.0 dev";
 // version des signatures de fonctions PHP
 // (= numero SVN de leur derniere modif cassant la compatibilite et/ou necessitant un recalcul des squelettes)
-$spip_version_code = 12208;
+$spip_version_code = 12282;
 // version de la base SQL (= numero SVN de sa derniere modif)
 $spip_version_base = 12008;
 
diff --git a/ecrire/public/balises.php b/ecrire/public/balises.php
index b6a0c5bd16..81db3be4b2 100644
--- a/ecrire/public/balises.php
+++ b/ecrire/public/balises.php
@@ -295,6 +295,7 @@ function calculer_balise_expose($p, $on, $off)
 	$key = $p->boucles[$b]->primary; 
 	$type = $p->boucles[$p->id_boucle]->primary; 
 	$desc = $p->boucles[$b]->show;
+	$connect = sql_quote($p->boucles[$b]->sql_serveur);
 
 	if (!$key) {
 		erreur_squelette(_T('zbug_champ_hors_boucle', array('champ' => '#EXPOSER')), $b);
@@ -311,7 +312,7 @@ function calculer_balise_expose($p, $on, $off)
 		$parent = index_pile($p->id_boucle, 'id_groupe', $p->boucles, $b);
 	} else $parent = "''";
 		  
-	$p->code = "(calcul_exposer($c, '$type', \$Pile[0], $parent, '$key') ? $on : $off)";
+	$p->code = "(calcul_exposer($c, '$type', \$Pile[0], $parent, '$key', $connect) ? $on : $off)";
 
 	$p->interdire_scripts = false;
 	return $p;
diff --git a/ecrire/public/composer.php b/ecrire/public/composer.php
index 66400aed5a..e4a145214d 100644
--- a/ecrire/public/composer.php
+++ b/ecrire/public/composer.php
@@ -308,29 +308,8 @@ function executer_balise_dynamique($nom, $args, $filtres, $lang, $ligne) {
 
 # NB : a l'exception des fonctions pour les balises dynamiques
 
-// http://doc.spip.org/@calculer_hierarchie
-function calculer_hierarchie($id_rubrique, $exclure_feuille = false) {
-
-	if (!$id_rubrique = intval($id_rubrique))
-		return '0';
-
-	$hierarchie = array();
-
-	if (!$exclure_feuille)
-		$hierarchie[] = $id_rubrique;
-
-	while ($id_rubrique = quete_parent($id_rubrique))
-		array_unshift($hierarchie, $id_rubrique);
-
-	if (count($hierarchie))
-		return join(',', $hierarchie);
-	else
-		return '0';
-}
-
-
 // http://doc.spip.org/@calcul_exposer
-function calcul_exposer ($id, $prim, $reference, $parent, $type) {
+function calcul_exposer ($id, $prim, $reference, $parent, $type, $connect='') {
 	static $exposer = array();
 	static $ref_precedente =-1;
 
@@ -352,11 +331,12 @@ function calcul_exposer ($id, $prim, $reference, $parent, $type) {
 					}
 		}
 		$exposer[$m][$type] = array();
+		$parent = intval($parent);
 		if ($principal) {
 			$exposer[$m][$type][$principal] = true;
 			if ($type == 'id_mot'){
 				if (!$parent) {
-					$parent = sql_fetsel('id_groupe','spip_mots',"id_mot=" . $principal);
+					$parent = sql_fetsel('id_groupe','spip_mots',"id_mot=" . $principal, '','','','',$connect);
 					$parent = $parent['id_groupe'];
 				}
 				if ($parent)
@@ -367,12 +347,12 @@ function calcul_exposer ($id, $prim, $reference, $parent, $type) {
 			  	if ($type == 'id_rubrique')
 			  		$parent = $principal;
 			  	if ($type == 'id_article') {
-						$parent = sql_fetsel('id_rubrique','spip_articles',"id_article=" . $principal);
+						$parent = sql_fetsel('id_rubrique','spip_articles',"id_article=" . $principal, '','','','',$connect);
 						$parent = $parent['id_rubrique'];
 			  	}
 			  }
-			  $a = split(',',calculer_hierarchie($parent));
-			  foreach($a as $n) $exposer[$m]['id_rubrique'][$n] = true;
+			  do { $exposer[$m]['id_rubrique'][$parent] = true; }
+			  while ($parent = quete_parent($parent, $connect));
 			}
 		}
 	}
diff --git a/ecrire/public/parametrer.php b/ecrire/public/parametrer.php
index f90f42361d..2f661878ff 100644
--- a/ecrire/public/parametrer.php
+++ b/ecrire/public/parametrer.php
@@ -169,34 +169,28 @@ function quete_rubrique_fond($contexte) {
 # retourne le chapeau d'un article, et seulement s'il est publie
 
 // http://doc.spip.org/@quete_chapo
-function quete_chapo($id_article) {
-	$chapo= sql_fetsel('chapo', 'spip_articles', array("id_article=".intval($id_article), "statut='publie'"));
-	return $chapo['chapo'];
+function quete_chapo($id_article, $connect) {
+	return sql_getfetsel('chapo', 'spip_articles', array("id_article=".intval($id_article), "statut='publie'"), '','','','',$connect);
 }
 
 # retourne le parent d'une rubrique
 
 // http://doc.spip.org/@quete_parent
-function quete_parent($id_rubrique) {
+function quete_parent($id_rubrique, $connect='') {
 	if (!$id_rubrique = intval($id_rubrique))
 		return 0;
 
-	$id_parent = sql_fetsel('id_parent, lang','spip_rubriques',"id_rubrique=" . $id_rubrique);
-
-	if ($id_parent['id_parent']!=$id_rubrique)
-		return intval($id_parent['id_parent']);
-	else
-		spip_log("erreur: la rubrique $id_rubrique est son propre parent");
+	return intval(sql_getfetsel('id_parent','spip_rubriques',"id_rubrique=" . $id_rubrique, '','','','',$connect));
 }
 
 # retourne la profondeur d'une rubrique
 
 // http://doc.spip.org/@quete_profondeur
-function quete_profondeur($id) {
+function quete_profondeur($id, $connect='') {
 	$n = 0;
 	while ($id) {
 		$n++;
-		$id = quete_parent($id);
+		$id = quete_parent($id, $connect);
 	}
 	return $n;
 }
@@ -204,8 +198,8 @@ function quete_profondeur($id) {
 # retourne la rubrique d'un article
 
 // http://doc.spip.org/@quete_rubrique
-function quete_rubrique($id_article) {
-	return sql_getfetsel('id_rubrique', 'spip_articles',"id_article=" . intval($id_article));
+function quete_rubrique($id_article, $serveur) {
+	return sql_getfetsel('id_rubrique', 'spip_articles',"id_article=" . intval($id_article),	'',array(), '', '', $serveur);
 }
 
 # retourne le fichier d'un document
@@ -297,7 +291,7 @@ function public_parametrer_dist($fond, $local='', $cache='', $connect='')  {
 		// si le raccourci a un titre il sera pris comme corps du 302
 		if ($fond == 'article'
 		AND $id_article = intval($local['id_article'])) {
-			$m = quete_chapo($id_article);
+			$m = quete_chapo($id_article, $connect);
 			if ($m[0]=='=') {
 				include_spip('inc/texte');
 				// les navigateurs pataugent si l'URL est vide
-- 
GitLab