Browse Source

feat: ajout d'un critère par sansnum permettant le tri alphabétique en ignorant les numéros (MySQL 5.7 + compatible)

pull/5349/head
cy_altern 4 months ago
parent
commit
348766c3b4
  1. 26
      ecrire/public/criteres.php

26
ecrire/public/criteres.php

@ -941,6 +941,32 @@ function calculer_critere_par_expression_sinum($idb, &$boucles, $crit, $tri, $ch
return $order;
}
/**
* Calculs pour le critère {par sansnum champ} qui ordonne les champs alphabétiquement en ignorant leur numéro
*
* @uses calculer_critere_par_champ()
*
* @param string $idb Identifiant de la boucle
* @param array $boucles AST du squelette
* @param Critere $crit Paramètres du critère dans cette boucle
* @param array $tri Paramètre en cours du critère
* @param string $champ Texte suivant l'expression ('titre' dans {par sansnum titre})
* @return string|array Clause pour le Order by (array si erreur)
*/
function calculer_critere_par_expression_sansnum($idb, &$boucles, $crit, $tri, $champ) {
$_champ = calculer_critere_par_champ($idb, $boucles, $crit, $champ, true);
if (is_array($_champ)) {
return ['zbug_critere_inconnu', ['critere' => $crit->op . " num $champ"]];
}
$sens = '';
if ($crit->not) {
$sens = " . ' DESC'";
}
$order = "'(CASE WHEN titre REGEXP(\"^[0-9]+\. \") THEN REVERSE(SUBSTRING_INDEX(REVERSE(titre), \" .\", 1)) ELSE titre END)'$sens";
return $order;
}
/**
* Calculs pour le critère `{par multi champ}` qui extrait la langue en cours dans les textes

Loading…
Cancel
Save