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