From: Thomas Citharel Date: Sun, 15 Feb 2015 23:43:18 +0000 (+0100) Subject: alternative random function to fix #1082 X-Git-Tag: 1.9beta2 X-Git-Url: https://git.immae.eu/?a=commitdiff_plain;h=refs%2Ftags%2F1.9beta2;p=github%2Fwallabag%2Fwallabag.git alternative random function to fix #1082 --- diff --git a/inc/poche/Database.class.php b/inc/poche/Database.class.php index a987b7cc..210ebb74 100755 --- a/inc/poche/Database.class.php +++ b/inc/poche/Database.class.php @@ -411,6 +411,14 @@ class Database { return $count; } + public function getRandomId($row, $user_id) { + $sql = "SELECT id FROM entries WHERE user_id=? LIMIT 1 OFFSET ? "; + $params = array($user_id, $row); + $query = $this->executeQuery($sql, $params); + + return $query->fetchAll(); + } + public function updateContent($id, $content, $user_id) { diff --git a/inc/poche/Poche.class.php b/inc/poche/Poche.class.php index 6d4ce137..4b85d52f 100755 --- a/inc/poche/Poche.class.php +++ b/inc/poche/Poche.class.php @@ -393,13 +393,12 @@ class Poche /* For some unknown reason I can't get displayView() to work here (it redirects to home view afterwards). So here's a dirty fix which redirects directly to URL */ case 'random': - $id = 0; - while ($this->store->retrieveOneById($id,$this->user->getId()) == null) { - $count = $this->store->getEntriesByViewCount($view, $this->user->getId()); - $id = rand(1,$count); - } + $count = $this->store->getEntriesByViewCount($view, $this->user->getId()); + $id_query = $this->store->getRandomId(rand(1,$count)-1, $this->user->getId()); + $id = $id_query[0]; Tools::logm('get a random article'); - Tools::redirect('?view=view&id=' . $id); + Tools::redirect('?view=view&id=' . $id[0]); + //$this->displayView('view', $id); break; default: