]> git.immae.eu Git - github/wallabag/wallabag.git/commitdiff
Redirect to the current view instead of homepage add-random-article
authorJeremy Benoist <jeremy.benoist@gmail.com>
Fri, 12 Oct 2018 20:13:33 +0000 (22:13 +0200)
committerJeremy Benoist <jeremy.benoist@gmail.com>
Fri, 12 Oct 2018 20:14:12 +0000 (22:14 +0200)
src/Wallabag/CoreBundle/Controller/EntryController.php
src/Wallabag/CoreBundle/Repository/EntryRepository.php

index ab50ebdfdf7550f82f09a83e2bf74d64743c3e66..dfb5eb5490c2ad502015238abaea05e6dd985a9e 100644 (file)
@@ -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()]));
index 6941eaeeb6e738fadd545e331116c22e2259fa4d..702646fe9e2cce4c919ae19a093401cc7b12311a 100644 (file)
@@ -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