diff options
Diffstat (limited to 'inc/poche')
-rwxr-xr-x | inc/poche/Database.class.php | 18 | ||||
-rwxr-xr-x | inc/poche/Poche.class.php | 8 |
2 files changed, 20 insertions, 6 deletions
diff --git a/inc/poche/Database.class.php b/inc/poche/Database.class.php index 4f55a7fe..823f834c 100755 --- a/inc/poche/Database.class.php +++ b/inc/poche/Database.class.php | |||
@@ -411,10 +411,22 @@ class Database { | |||
411 | 411 | ||
412 | return $count; | 412 | return $count; |
413 | } | 413 | } |
414 | public function getRandomId($user_id) { | 414 | public function getRandomId($user_id, $view) { |
415 | $random = (STORAGE == 'mysql') ? 'RAND()' : 'RANDOM()'; | 415 | $random = (STORAGE == 'mysql') ? 'RAND()' : 'RANDOM()'; |
416 | $sql = "SELECT id FROM entries WHERE user_id=? ORDER BY ". $random . " LIMIT 1"; | 416 | switch ($view) { |
417 | $params = array($user_id); | 417 | case 'archive': |
418 | $sql = "SELECT id FROM entries WHERE user_id=? AND is_read=? ORDER BY ". $random . " LIMIT 1"; | ||
419 | $params = array($user_id,1); | ||
420 | break; | ||
421 | case 'fav': | ||
422 | $sql = "SELECT id FROM entries WHERE user_id=? AND is_fav=? ORDER BY ". $random . " LIMIT 1"; | ||
423 | $params = array($user_id,1); | ||
424 | break; | ||
425 | default: | ||
426 | $sql = "SELECT id FROM entries WHERE user_id=? AND is_read=? ORDER BY ". $random . " LIMIT 1"; | ||
427 | $params = array($user_id,0); | ||
428 | break; | ||
429 | } | ||
418 | $query = $this->executeQuery($sql, $params); | 430 | $query = $this->executeQuery($sql, $params); |
419 | $id = $query->fetchAll(); | 431 | $id = $query->fetchAll(); |
420 | 432 | ||
diff --git a/inc/poche/Poche.class.php b/inc/poche/Poche.class.php index 4ec724f9..1a5cbe6c 100755 --- a/inc/poche/Poche.class.php +++ b/inc/poche/Poche.class.php | |||
@@ -406,8 +406,9 @@ class Poche | |||
406 | /* 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 */ | 406 | /* 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 */ |
407 | case 'random': | 407 | case 'random': |
408 | Tools::logm('get a random article'); | 408 | Tools::logm('get a random article'); |
409 | if ($this->store->getRandomId($this->user->getId())) { | 409 | $view = $_GET['view']; |
410 | $id_array = $this->store->getRandomId($this->user->getId()); | 410 | if ($this->store->getRandomId($this->user->getId(),$view)) { |
411 | $id_array = $this->store->getRandomId($this->user->getId(),$view); | ||
411 | $id = $id_array[0]; | 412 | $id = $id_array[0]; |
412 | Tools::redirect('?view=view&id=' . $id[0]); | 413 | Tools::redirect('?view=view&id=' . $id[0]); |
413 | Tools::logm('got the article with id ' . $id[0]); | 414 | Tools::logm('got the article with id ' . $id[0]); |
@@ -522,7 +523,7 @@ class Poche | |||
522 | $this->pagination->page_links('?view=' . $view . '?search=' . $search . '&sort=' . $_SESSION['sort'] . '&' )); | 523 | $this->pagination->page_links('?view=' . $view . '?search=' . $search . '&sort=' . $_SESSION['sort'] . '&' )); |
523 | $tpl_vars['page_links'] = $page_links; | 524 | $tpl_vars['page_links'] = $page_links; |
524 | $tpl_vars['nb_results'] = $count; | 525 | $tpl_vars['nb_results'] = $count; |
525 | $tpl_vars['searchterm'] = $search; | 526 | $tpl_vars['search_term'] = $search; |
526 | } | 527 | } |
527 | break; | 528 | break; |
528 | case 'view': | 529 | case 'view': |
@@ -578,6 +579,7 @@ class Poche | |||
578 | 'page_links' => '', | 579 | 'page_links' => '', |
579 | 'nb_results' => '', | 580 | 'nb_results' => '', |
580 | 'listmode' => (isset($_COOKIE['listmode']) ? true : false), | 581 | 'listmode' => (isset($_COOKIE['listmode']) ? true : false), |
582 | 'view' => $view, | ||
581 | ); | 583 | ); |
582 | 584 | ||
583 | //if id is given - we retrieve entries by tag: id is tag id | 585 | //if id is given - we retrieve entries by tag: id is tag id |