diff --git a/inc/poche/Database.class.php b/inc/poche/Database.class.php index a987b7cc7..210ebb74c 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 6d4ce1377..4b85d52fb 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: