From 87d0621b678ca2e29a8ab323962e8e9446afc29e Mon Sep 17 00:00:00 2001 From: Fil <fil@rezo.net> Date: Sat, 8 Jul 2006 20:09:08 +0000 Subject: [PATCH] =?UTF-8?q?forcer=20le=20filtre=20|=3F{a,b}=20=C3=A0=20avo?= =?UTF-8?q?ir=20deux=20arguments=20:=20=C3=A7a=20=C3=A9vite=20des=20parse?= =?UTF-8?q?=20error=20terribles=20quand=20on=20a=20un=20filtre=20"mal=20?= =?UTF-8?q?=C3=A9crit"=20du=20genre=20|=3F{1}?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit mais ça permet désormais de faire : [(#BALISE|?)] (aspire les données et ne sort jamais rien) [(#BALISE|?{yo})] (affiche "yo" si la balise est non vide) [(#BALISE|?{yo,spip})] (cas habituel) --- ecrire/public/references.php | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/ecrire/public/references.php b/ecrire/public/references.php index cc2ca76980..5eedecae7c 100644 --- a/ecrire/public/references.php +++ b/ecrire/public/references.php @@ -382,10 +382,15 @@ function compose_filtres($p, $code) { foreach($p->param as $filtre) { $fonc = array_shift($filtre); if ($fonc) { - // recuperer les arguments du filtre, en les separant par des - // virgules, *sauf* dans le cas du filtre "?" qui demande un ":" - $arglist = compose_filtres_args($p, $filtre, - ($fonc == '?' ? ':' : ',')); + // recuperer les arguments du filtre, les separer par des virgules + // *sauf* dans le cas du filtre "?" qui demande un ":" + if ($fonc == '?') { + // |?{a,b} *doit* avoir exactement 2 arguments ; on les force + if (count($filtre) != 2) + $filtre = array($filtre[0], $filtre[1]); + $arglist = compose_filtres_args($p, $filtre, ':'); + } else + $arglist = compose_filtres_args($p, $filtre, ','); // le filtre est defini dans la matrice ? il faut alors l'appeler // de maniere indirecte, pour charger au prealable sa definition -- GitLab