From da5a33aa3a3b230b3d9d430a5b76e28adf0eff7c Mon Sep 17 00:00:00 2001
From: "Committo,Ergo:sum" <esj@rezo.net>
Date: Sat, 12 Jan 2008 18:39:32 +0000
Subject: [PATCH] =?UTF-8?q?Le=20compilateur=20accepte=20=20{{{=20<BOUCLEno?=
 =?UTF-8?q?m(type){critere}=20/>=20}}}=20pour=20=C3=A9crire=20une=20boucle?=
 =?UTF-8?q?=20vide=20(surtout=20r=C3=A9cursive,=20pour=20remplir=20un=20cr?=
 =?UTF-8?q?it=C3=A8re=20doublons=20ou=20calculer=20un=20#TOTAL=5FBOUCLE).?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 ecrire/public/compiler.php     |  4 ++--
 ecrire/public/phraser_html.php | 25 +++++++++++++++----------
 2 files changed, 17 insertions(+), 12 deletions(-)

diff --git a/ecrire/public/compiler.php b/ecrire/public/compiler.php
index 2bc58e3764..36560b6b5d 100644
--- a/ecrire/public/compiler.php
+++ b/ecrire/public/compiler.php
@@ -267,6 +267,7 @@ function calculer_boucle_nonrec($id_boucle, &$boucles) {
 	} else {
 
 		$corps = $init . '
+	$SP++;
 
 	// RESULTATS
 	while ($Pile[$SP] = @sql_fetch($result,"' .
@@ -287,8 +288,7 @@ function calculer_boucle_nonrec($id_boucle, &$boucles) {
 		(!$flag_cpt  ? "" :
 			"\n	\$Numrows['$id_boucle']['compteur_boucle'] = 0;")
 		. '
-	$t0 = "";
-	$SP++;'
+	$t0 = "";'
 		.
 		$corps .
 		"\n	@sql_free(\$result,'" .
diff --git a/ecrire/public/phraser_html.php b/ecrire/public/phraser_html.php
index 4f706468b5..c718d1bf6d 100644
--- a/ecrire/public/phraser_html.php
+++ b/ecrire/public/phraser_html.php
@@ -595,9 +595,9 @@ function public_phraser_html($texte, $id_parent, &$boucles, $nom, $ligne=1) {
 
 		if ($soustype == 'sites') $soustype = 'syndication' ; # alias
 		      
-		phraser_args($milieu,">","",$all_res,$result);
+		phraser_args($milieu,"/>","",$all_res,$result);
 		$params = substr($milieu,0,@strpos($milieu,$result->apres));
-		$milieu = substr($result->apres,1);
+		$milieu = $result->apres;
 		$result->apres = "";
 
 		//
@@ -611,7 +611,6 @@ function public_phraser_html($texte, $id_parent, &$boucles, $nom, $ligne=1) {
 			array_unshift($args,
 				      substr($type, strlen(TYPE_RECURSIF)));
 			$result->param = $args;
-#			$milieu = substr($milieu, strpos($milieu, '>')+1);
 		} else {
 			$result->type_requete = $soustype;
 			phraser_criteres($result->param, $result);
@@ -620,16 +619,22 @@ function public_phraser_html($texte, $id_parent, &$boucles, $nom, $ligne=1) {
 		//
 		// Recuperer la fin :
 		//
-		$s = BALISE_FIN_BOUCLE . $id_boucle . ">";
-		$p = strpos($milieu, $s);
-		if ($p === false) {
-			erreur_squelette(_T('zbug_erreur_boucle_syntaxe'),
+		if ($milieu[0] === '/') {
+			$suite = substr($milieu,2);
+			$milieu = '';
+		} else {
+			$milieu = substr($milieu,1);
+			$s = BALISE_FIN_BOUCLE . $id_boucle . ">";
+			$p = strpos($milieu, $s);
+			if ($p === false) {
+				erreur_squelette(_T('zbug_erreur_boucle_syntaxe'),
 					 _T('zbug_erreur_boucle_fermant',
 						array('id'=>$id_boucle)));
-		}
+			}
 
-		$suite = substr($milieu, $p + strlen($s));
-		$milieu = substr($milieu, 0, $p);
+			$suite = substr($milieu, $p + strlen($s));
+			$milieu = substr($milieu, 0, $p);
+		}
 		//
 		// 1. Recuperer la partie conditionnelle apres
 		//
-- 
GitLab