From af9a54348f6bdc0105de6a62dd369117d00d7b4f Mon Sep 17 00:00:00 2001
From: davux <da@weeno.net>
Date: Fri, 1 Oct 2010 17:12:28 +0000
Subject: [PATCH] =?UTF-8?q?Bugfix:=20URL=5FPAGE:=20g=C3=A9rer=20le=20cas?=
 =?UTF-8?q?=20de=20connect=20+=20arguments?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Quand des arguments sont passés à la balise #URL_PAGE, l'appel à la
fonction generer_url_public() est construit avec un 2e argument.

C'est aussi le cas quand il y a un connect spécifique.

Du coup, quand les deux cas sont vrais en même temps, le connect
passe en 3e argument. On corrige ce cas en construisant la chaîne
d'arguments à part, et on ne la passe à generer_url_public qu'en un
seul point.

(Je veux quand même bien une relecture, car c'est un bout de code
un peu sensible.)
---
 ecrire/balise/url_.php | 16 +++++++++++-----
 1 file changed, 11 insertions(+), 5 deletions(-)

diff --git a/ecrire/balise/url_.php b/ecrire/balise/url_.php
index aa8ce9ac57..d993abb494 100644
--- a/ecrire/balise/url_.php
+++ b/ecrire/balise/url_.php
@@ -137,8 +137,6 @@ function balise_URL_PAGE_dist($p) {
 
 	$p->code = interprete_argument_balise(1,$p);
 	$args = interprete_argument_balise(2,$p);
-	if ($args != "''" && $args!==NULL)
-		$p->code .= ','.$args;
 
 	if ($p->id_boucle
 	AND $s = $p->boucles[$p->id_boucle]->sql_serveur) {
@@ -152,11 +150,19 @@ function balise_URL_PAGE_dist($p) {
 				$p->code = $f('page', $p->code, $s);
 				return $p;
 			}
-			$p->code .=  ", 'connect=" .  addslashes($s) . "'";
+			$connect = addslashes($s);
 		}
 	}
-
-	$p->code = 'generer_url_public(' . $p->code .')';
+	if ($args != "''" && $args!==NULL) {
+		if (defined($connect)) {
+			$args .= " . '&connect=$connect'";
+		} // sinon $args reste tel quel
+	} else { // si pas d'arguments
+		if (defined($connect)) {
+			$args = ($connect ? "'connect=$connect'" : "''");
+		}
+	}
+	$p->code = 'generer_url_public(' . $p->code . ", $args)";
 	#$p->interdire_scripts = true;
 	return $p;
 }
-- 
GitLab