From 5ebead6f796e75be530fda368f2ef78fac4bbf7e Mon Sep 17 00:00:00 2001 From: Cerdic <cedric@yterium.com> Date: Mon, 21 May 2007 23:36:07 +0000 Subject: [PATCH] "le criter {collecte} s'applique a l'order precedant sur le mode de {inverse} il doit etre place avant un eventuel inverse" --- ecrire/public/compiler.php | 10 +++++----- ecrire/public/criteres.php | 13 +++++++++---- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/ecrire/public/compiler.php b/ecrire/public/compiler.php index dda410292b..c34e438b51 100644 --- a/ecrire/public/compiler.php +++ b/ecrire/public/compiler.php @@ -360,12 +360,12 @@ function calculer_from(&$boucle) function calculer_order(&$boucle) { $order = $boucle->order; - if (isset($boucle->modificateur['collate'])){ - $col = $boucle->modificateur['collate']; - $col = ".($col ?' COLLATE '.$col:'')"; + /*if (isset($boucle->modificateur['collate'])){ + $col = "." . $boucle->modificateur['collate']; foreach($order as $k=>$o) - $order[$k] .= $col; - } + if (strpos($order[$k],'COLLATE')===false) + $order[$k].= $col; + }*/ return join(', ', $order); } diff --git a/ecrire/public/criteres.php b/ecrire/public/criteres.php index 9af626e199..2c52b26a29 100644 --- a/ecrire/public/criteres.php +++ b/ecrire/public/criteres.php @@ -282,8 +282,11 @@ function critere_collecte_dist($idb,&$boucles, $crit) { if (isset($crit->param[0])) { $_coll = calculer_liste($crit->param[0], array(), $boucles, $boucles[$idb]->id_parent); $boucle = $boucles[$idb]; - $boucle->modificateur['collate'] = $_coll; - } else + $boucle->modificateur['collate'] = "($_coll ?' COLLATE '.$_coll:'')"; + $n = count($boucle->order); + if ($n && (strpos($boucle->order[$n-1],'COLLATE')===false)) + $boucle->order[$n-1] .= " . " . $boucle->modificateur['collate']; + } else erreur_squelette(_T('zbug_info_erreur_squelette'), "{collecte ?} BOUCLE$idb"); } @@ -323,6 +326,7 @@ function critere_parinverse($idb, &$boucles, $crit, $sens) { global $table_des_tables, $tables_des_serveurs_sql, $exceptions_des_jointures; $boucle = &$boucles[$idb]; if ($crit->not) $sens = $sens ? "" : " . ' DESC'"; + $collecte = (isset($boucle->modificateur['collecte']))?" . ".$boucle->modificateur['collecte']:""; foreach ($crit->param as $tri) { @@ -402,8 +406,9 @@ function critere_parinverse($idb, &$boucles, $crit, $sens) { } } if ($order) - $boucle->order[] = ($fct ? "'$fct(' . $order . ')'" : $order) . - (($order[0]=="'") ? $sens : ""); + $boucle->order[] = ($fct ? "'$fct(' . $order . ')'" : $order) + . $collecte + . (($order[0]=="'") ? $sens : ""); } } -- GitLab