|
@@ 882-897 (lines=16) @@
|
| 879 |
|
* @param string $champ Texte suivant l'expression ('titre' dans {par num titre}) |
| 880 |
|
* @return string Clause pour le Order by |
| 881 |
|
*/ |
| 882 |
|
function calculer_critere_par_expression_num($idb, &$boucles, $crit, $tri, $champ) { |
| 883 |
|
$_champ = calculer_critere_par_champ($idb, $boucles, $crit, $champ, true); |
| 884 |
|
if (is_array($_champ)) { |
| 885 |
|
return array('zbug_critere_inconnu', array('critere' => $crit->op . " num $champ")); |
| 886 |
|
} |
| 887 |
|
$boucle = &$boucles[$idb]; |
| 888 |
|
$texte = '0+' . $_champ; |
| 889 |
|
$suite = calculer_liste($tri, $idb, $boucles, $boucle->id_parent); |
| 890 |
|
if ($suite !== "''") { |
| 891 |
|
$texte = "\" . ((\$x = $suite) ? ('$texte' . \$x) : '0')" . " . \""; |
| 892 |
|
} |
| 893 |
|
$as = 'num' . ($boucle->order ? count($boucle->order) : ""); |
| 894 |
|
$boucle->select[] = $texte . " AS $as"; |
| 895 |
|
$order = "'$as'"; |
| 896 |
|
return $order; |
| 897 |
|
} |
| 898 |
|
|
| 899 |
|
/** |
| 900 |
|
* Calculs pour le critère `{par sinum champ}` qui ordonne les champs avec numéros en premier |
|
@@ 916-931 (lines=16) @@
|
| 913 |
|
* @param string $champ Texte suivant l'expression ('titre' dans {par sinum titre}) |
| 914 |
|
* @return string Clause pour le Order by |
| 915 |
|
*/ |
| 916 |
|
function calculer_critere_par_expression_sinum($idb, &$boucles, $crit, $tri, $champ) { |
| 917 |
|
$_champ = calculer_critere_par_champ($idb, $boucles, $crit, $champ, true); |
| 918 |
|
if (is_array($_champ)) { |
| 919 |
|
return array('zbug_critere_inconnu', array('critere' => $crit->op . " sinum $champ")); |
| 920 |
|
} |
| 921 |
|
$boucle = &$boucles[$idb]; |
| 922 |
|
$texte = '0+' . $_champ; |
| 923 |
|
$suite = calculer_liste($tri, $idb, $boucles, $boucle->id_parent); |
| 924 |
|
if ($suite !== "''") { |
| 925 |
|
$texte = "\" . ((\$x = $suite) ? ('$texte' . \$x) : '0')" . " . \""; |
| 926 |
|
} |
| 927 |
|
$as = 'sinum' . ($boucle->order ? count($boucle->order) : ""); |
| 928 |
|
$boucle->select[] = 'CASE (' . $texte . ') WHEN 0 THEN 1 ELSE 0 END AS ' . $as; |
| 929 |
|
$order = "'$as'"; |
| 930 |
|
return $order; |
| 931 |
|
} |
| 932 |
|
|
| 933 |
|
|
| 934 |
|
/** |