From c4cdff8b02533678cce3191c46485720eb080d3f Mon Sep 17 00:00:00 2001
From: Fil <fil@rezo.net>
Date: Wed, 1 Feb 2006 17:50:02 +0000
Subject: [PATCH] =?UTF-8?q?corrige=20le=20bug=20qui=20s'=C3=A9tait=20gliss?=
 =?UTF-8?q?=C3=A9=20sous=20#LOGO=5Fxxxxx=20et=20qui=20faisait=20que=20le?=
 =?UTF-8?q?=20premier=20filtre=20donn=C3=A9=20apr=C3=A8s=20||=20=C3=A9tait?=
 =?UTF-8?q?=20jet=C3=A9=20=C3=A0=20la=20poubelle=20L'origine=20du=20bug=20?=
 =?UTF-8?q?:=20un=20d=C3=A9calage=20entre=20$p->fonctions=20et=20$p->param?=
 =?UTF-8?q?=20pour=20le=20filtre=20"vide"=20(celui=20qui=20est=20entre=20l?=
 =?UTF-8?q?es=20deux=20pipes=20de=20||)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 inc-balises.php3 | 60 ++++++++++++++++++++++++++++--------------------
 1 file changed, 35 insertions(+), 25 deletions(-)

diff --git a/inc-balises.php3 b/inc-balises.php3
index 3d0247cb72..0e7522567c 100644
--- a/inc-balises.php3
+++ b/inc-balises.php3
@@ -489,51 +489,61 @@ function calculer_balise_logo ($p) {
 	eregi("^LOGO_([A-Z]+)(_.*)?$", $p->nom_champ, $regs);
 	$type_objet = $regs[1];
 	$suite_logo = $regs[2];	
+
+	// cas de #LOGO_SITE_SPIP
 	if (ereg("^_SPIP(.*)$", $suite_logo, $regs)) {
 		$type_objet = 'RUBRIQUE';
 		$suite_logo = $regs[1];
 		$_id_objet = "\"'0'\"";
 	} else {
-
 		if ($type_objet == 'SITE')
 			$_id_objet = champ_sql("id_syndic", $p);
 		else
 			$_id_objet = champ_sql("id_".strtolower($type_objet), $p);
 	}
-	// analyser les faux filtres, 
-	// supprimer ceux qui ont le tort d'etre vrais
+
+	// analyser les faux filtres
 	$flag_fichier = 0;
 	$filtres = '';
+
 	if (is_array($p->fonctions)) {
 		foreach($p->fonctions as $couple) {
-			// eliminer les faux filtres
 			if (!$flag_stop) {
-				array_shift($p->param);
-				$nom = $couple[0];
-				if (ereg('^(left|right|center|top|bottom)$', $nom))
-					$align = $nom;
-				else if ($nom == 'lien') {
-					$flag_lien_auto = 'oui';
-					$flag_stop = true;
-				}
-				else if ($nom == 'fichier') {
-					$flag_fichier = 1;
-					$flag_stop = true;
-				}
-				// double || signifie "on passe aux filtres"
-				else if ($nom == '') {
+				$nom = trim($couple[0]);
+
+				// double || signifie "on passe aux vrais filtres"
+				if ($nom == '') {
 					if (!$params = $couple[1])
 						$flag_stop = true;
-				}
-				else if ($nom) {
-					$lien = $nom;
-					$flag_stop = true;
 				} else {
-					
+					// faux filtres
+					array_shift($p->param);
+					switch($nom) {
+						case 'left':
+						case 'right':
+						case 'center':
+						case 'top':
+						case 'bottom':
+							$align = $nom;
+							break;
+						
+						case 'lien':
+							$flag_lien_auto = 'oui';
+							$flag_stop = true; # apres |lien : vrais filtres
+							break;
+
+						case 'fichier':
+							$flag_fichier = 1;
+							$flag_stop = true; # apres |fichier : vrais filtres
+							break;
+
+						default:
+							$lien = $nom;
+							$flag_stop = true; # apres |#URL... : vrais filtres
+							break;
+					}
 				}
 			}
-			// apres un URL ou || ou |fichier ce sont
-			// des filtres (sauf left...lien...fichier)
 		}
 	}
 
-- 
GitLab