]> git.immae.eu Git - github/wallabag/wallabag.git/blobdiff - src/Wallabag/CoreBundle/Controller/EntryController.php
Use only one method to randomize
[github/wallabag/wallabag.git] / src / Wallabag / CoreBundle / Controller / EntryController.php
index 669e15d7ca95262cd5fe49882ecbe2bd3c108c24..ab50ebdfdf7550f82f09a83e2bf74d64743c3e66 100644 (file)
@@ -249,73 +249,28 @@ class EntryController extends Controller
     }
 
     /**
-     * Shows random unread entry.
+     * Shows random entry depending on the given type.
      *
      * @param Entry $entry
      *
-     * @Route("/unread/random", name="unread_random")
+     * @Route("/{type}/random", name="random_entry", requirements={"_locale": "unread|starred|archive|untagged|all"})
      *
-     * @return \Symfony\Component\HttpFoundation\Response
-     */
-    public function showRandomUnreadEntryAction()
-    {
-        return $this->showRandomEntries('unread');
-    }
-
-    /**
-     * Shows random favorite entry.
-     *
-     * @param Entry $entry
-     *
-     * @Route("/starred/random", name="starred_random")
-     *
-     * @return \Symfony\Component\HttpFoundation\Response
-     */
-    public function showRandomStarredEntryAction()
-    {
-        return $this->showRandomEntries('starred');
-    }
-
-    /**
-     * Shows random archived entry.
-     *
-     * @param Entry $entry
-     *
-     * @Route("/archive/random", name="archive_random")
-     *
-     * @return \Symfony\Component\HttpFoundation\Response
+     * @return \Symfony\Component\HttpFoundation\RedirectResponse
      */
-    public function showRandomArchiveEntryAction()
+    public function redirectRandomEntryAction($type = 'all')
     {
-        return $this->showRandomEntries('archive');
-    }
+        try {
+            $entry = $this->get('wallabag_core.entry_repository')
+                ->getRandomEntry($this->getUser()->getId(), $type);
+        } catch (NoResultException $e) {
+            $bag = $this->get('session')->getFlashBag();
+            $bag->clear();
+            $bag->add('notice', 'flashes.entry.notice.no_random_entry');
 
-    /**
-     * Shows random all entry.
-     *
-     * @param Entry $entry
-     *
-     * @Route("/untagged/random", name="untagged_random")
-     *
-     * @return \Symfony\Component\HttpFoundation\Response
-     */
-    public function showRandomUntaggedEntryAction()
-    {
-        return $this->showRandomEntries('untagged');
-    }
+            return $this->redirect($this->generateUrl('homepage'));
+        }
 
-    /**
-     * Shows random all entry.
-     *
-     * @param Entry $entry
-     *
-     * @Route("/all/random", name="all_random")
-     *
-     * @return \Symfony\Component\HttpFoundation\Response
-     */
-    public function showRandomAllEntryAction()
-    {
-        return $this->showRandomEntries();
+        return $this->redirect($this->generateUrl('view', ['id' => $entry->getId()]));
     }
 
     /**
@@ -623,30 +578,6 @@ class EntryController extends Controller
         );
     }
 
-    /**
-     * Global method to retrieve random entries depending on the given type.
-     *
-     * @param string $type Entries type: unread, starred, archive or untagged
-     *
-     * @return \Symfony\Component\HttpFoundation\RedirectResponse
-     */
-    private function showRandomEntries($type)
-    {
-        $repository = $this->get('wallabag_core.entry_repository');
-
-        try {
-            $entry = $repository->getRandomEntry($this->getUser()->getId(), $type);
-        } catch (NoResultException $e) {
-            $bag = $this->get('session')->getFlashBag();
-            $bag->clear();
-            $bag->add('notice', 'flashes.entry.notice.no_random_entry');
-
-            return $this->redirect($this->generateUrl('homepage'));
-        }
-
-        return $this->redirect($this->generateUrl('view', ['id' => $entry->getId()]));
-    }
-
     /**
      * Fetch content and update entry.
      * In case it fails, $entry->getContent will return an error message.