From 82a277c6daa29746bec60620dc5a59ddd5b7b13c Mon Sep 17 00:00:00 2001
From: Cerdic <cedric@yterium.com>
Date: Wed, 17 Jan 2007 11:05:35 +0000
Subject: [PATCH] jeux de mots, jeux de compilo lorsqu'un critere dynamique est
 present ( {par #ENV{tri}} ), prevoir qu'on peut vouloir faire tri=hasard, la
 syntaxe {par hasard} pouvant faire croire que c'est techniquement la meme
 chose que {par id_article} ...

---
 ecrire/public/criteres.php | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/ecrire/public/criteres.php b/ecrire/public/criteres.php
index 22ac0eb687..ce3fa74a6d 100644
--- a/ecrire/public/criteres.php
+++ b/ecrire/public/criteres.php
@@ -300,7 +300,15 @@ function critere_parinverse($idb, &$boucles, $crit, $sens) {
 	  $fct = ""; // en cas de fonction SQL
 	// tris specifies dynamiquement
 	  if ($tri[0]->type != 'texte') {
+	  	// calculer le order dynamique qui verifie les champs
 	    $order = calculer_critere_arg_dynamique($idb, $boucles, $tri, $sens);
+	    // et ajouter un champ hasard dans le select pour supporter 'hasard' comme tri dynamique
+		  if (spip_abstract_select(array("RAND()")))
+			$par = "RAND()";
+		  else
+			$par = "MOD(".$boucle->id_table.'.'.$boucle->primary
+			  ." * UNIX_TIMESTAMP(),32767) & UNIX_TIMESTAMP()";
+		  $boucle->select[]= $par . " AS hasard";
 	  } else {
 	      $par = array_shift($tri);
 	      $par = $par->texte;
-- 
GitLab