From c694f4b0eda024de041a606ce381eb92c5c6ff65 Mon Sep 17 00:00:00 2001 From: Jeremy Benoist Date: Fri, 12 Oct 2018 22:13:33 +0200 Subject: Redirect to the current view instead of homepage --- .../CoreBundle/Controller/EntryController.php | 4 +-- .../CoreBundle/Repository/EntryRepository.php | 33 +++++++++++----------- 2 files changed, 18 insertions(+), 19 deletions(-) diff --git a/src/Wallabag/CoreBundle/Controller/EntryController.php b/src/Wallabag/CoreBundle/Controller/EntryController.php index ab50ebdf..dfb5eb54 100644 --- a/src/Wallabag/CoreBundle/Controller/EntryController.php +++ b/src/Wallabag/CoreBundle/Controller/EntryController.php @@ -251,7 +251,7 @@ class EntryController extends Controller /** * Shows random entry depending on the given type. * - * @param Entry $entry + * @param string $type * * @Route("/{type}/random", name="random_entry", requirements={"_locale": "unread|starred|archive|untagged|all"}) * @@ -267,7 +267,7 @@ class EntryController extends Controller $bag->clear(); $bag->add('notice', 'flashes.entry.notice.no_random_entry'); - return $this->redirect($this->generateUrl('homepage')); + return $this->redirect($this->generateUrl($type)); } return $this->redirect($this->generateUrl('view', ['id' => $entry->getId()])); diff --git a/src/Wallabag/CoreBundle/Repository/EntryRepository.php b/src/Wallabag/CoreBundle/Repository/EntryRepository.php index 6941eaee..702646fe 100644 --- a/src/Wallabag/CoreBundle/Repository/EntryRepository.php +++ b/src/Wallabag/CoreBundle/Repository/EntryRepository.php @@ -431,7 +431,7 @@ class EntryRepository extends EntityRepository * Returns a random entry, filtering by status. * * @param $userId - * @param string $status can be unread, archive or starred + * @param string $type can be unread, archive, starred, etc * * @throws \Doctrine\ORM\NoResultException * @throws \Doctrine\ORM\NonUniqueResultException @@ -440,26 +440,25 @@ class EntryRepository extends EntityRepository * * @return Entry */ - public function getRandomEntry($userId, $status = '') + public function getRandomEntry($userId, $type = '') { $qb = $this->getQueryBuilderByUser($userId) ->select('MIN(e.id)', 'MAX(e.id)'); - if ('unread' === $status) { - $qb->andWhere('e.isArchived = false'); - } - - if ('archive' === $status) { - $qb->andWhere('e.isArchived = true'); - } - - if ('starred' === $status) { - $qb->andWhere('e.isStarred = true'); - } - - if ('untagged' === $status) { - $qb->leftJoin('e.tags', 't'); - $qb->andWhere('t.id is null'); + switch ($type) { + case 'unread': + $qb->andWhere('e.isArchived = false'); + break; + case 'archive': + $qb->andWhere('e.isArchived = true'); + break; + case 'starred': + $qb->andWhere('e.isStarred = true'); + break; + case 'untagged': + $qb->leftJoin('e.tags', 't'); + $qb->andWhere('t.id is null'); + break; } $idLimits = $qb -- cgit v1.2.3