aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/Wallabag/CoreBundle/Controller/RssController.php
diff options
context:
space:
mode:
authorJeremy Benoist <jeremy.benoist@gmail.com>2015-08-20 20:10:06 +0200
committerJeremy Benoist <jeremy.benoist@gmail.com>2015-08-20 20:39:22 +0200
commit0ab7404f93670ed161b67528c1a61c5bfa92d42b (patch)
tree591b52d4c035b75ea59ee597101e998ba0f3e802 /src/Wallabag/CoreBundle/Controller/RssController.php
parent4fcb7eaf139a4d2cbd0f54574e6c51a0fe852ef1 (diff)
downloadwallabag-0ab7404f93670ed161b67528c1a61c5bfa92d42b.tar.gz
wallabag-0ab7404f93670ed161b67528c1a61c5bfa92d42b.tar.zst
wallabag-0ab7404f93670ed161b67528c1a61c5bfa92d42b.zip
Refactorize the way to retrieve entries
One place to retrieve entries in Entry & Rss controller. More simple and easy to maintain.
Diffstat (limited to 'src/Wallabag/CoreBundle/Controller/RssController.php')
-rw-r--r--src/Wallabag/CoreBundle/Controller/RssController.php73
1 files changed, 35 insertions, 38 deletions
diff --git a/src/Wallabag/CoreBundle/Controller/RssController.php b/src/Wallabag/CoreBundle/Controller/RssController.php
index 0558c53b..6121f361 100644
--- a/src/Wallabag/CoreBundle/Controller/RssController.php
+++ b/src/Wallabag/CoreBundle/Controller/RssController.php
@@ -22,22 +22,7 @@ class RssController extends Controller
22 */ 22 */
23 public function showUnreadAction(User $user) 23 public function showUnreadAction(User $user)
24 { 24 {
25 $qb = $this->getDoctrine() 25 return $this->showEntries('unread', $user);
26 ->getRepository('WallabagCoreBundle:Entry')
27 ->findUnreadByUser(
28 $user->getId()
29 );
30
31 $pagerAdapter = new DoctrineORMAdapter($qb->getQuery());
32 $entries = new Pagerfanta($pagerAdapter);
33
34 $perPage = $user->getConfig()->getRssLimit() ?: $this->container->getParameter('rss_limit');
35 $entries->setMaxPerPage($perPage);
36
37 return $this->render('WallabagCoreBundle:Entry:entries.xml.twig', array(
38 'type' => 'unread',
39 'entries' => $entries,
40 ));
41 } 26 }
42 27
43 /** 28 /**
@@ -50,22 +35,7 @@ class RssController extends Controller
50 */ 35 */
51 public function showArchiveAction(User $user) 36 public function showArchiveAction(User $user)
52 { 37 {
53 $qb = $this->getDoctrine() 38 return $this->showEntries('archive', $user);
54 ->getRepository('WallabagCoreBundle:Entry')
55 ->findArchiveByUser(
56 $user->getId()
57 );
58
59 $pagerAdapter = new DoctrineORMAdapter($qb->getQuery());
60 $entries = new Pagerfanta($pagerAdapter);
61
62 $perPage = $user->getConfig()->getRssLimit() ?: $this->container->getParameter('rss_limit');
63 $entries->setMaxPerPage($perPage);
64
65 return $this->render('WallabagCoreBundle:Entry:entries.xml.twig', array(
66 'type' => 'archive',
67 'entries' => $entries,
68 ));
69 } 39 }
70 40
71 /** 41 /**
@@ -78,11 +48,38 @@ class RssController extends Controller
78 */ 48 */
79 public function showStarredAction(User $user) 49 public function showStarredAction(User $user)
80 { 50 {
81 $qb = $this->getDoctrine() 51 return $this->showEntries('starred', $user);
82 ->getRepository('WallabagCoreBundle:Entry') 52 }
83 ->findStarredByUser( 53
84 $user->getId() 54 /**
85 ); 55 * Global method to retrieve entries depending on the given type
56 * It returns the response to be send.
57 *
58 * @param string $type Entries type: unread, starred or archive
59 * @param User $user
60 *
61 * @return \Symfony\Component\HttpFoundation\Response
62 */
63 private function showEntries($type, User $user)
64 {
65 $repository = $this->getDoctrine()->getRepository('WallabagCoreBundle:Entry');
66
67 switch ($type) {
68 case 'starred':
69 $qb = $repository->getBuilderForStarredByUser($user->getId());
70 break;
71
72 case 'archive':
73 $qb = $repository->getBuilderForArchiveByUser($user->getId());
74 break;
75
76 case 'unread':
77 $qb = $repository->getBuilderForUnreadByUser($user->getId());
78 break;
79
80 default:
81 throw new \InvalidArgumentException(sprintf('Type "%s" is not implemented.', $type));
82 }
86 83
87 $pagerAdapter = new DoctrineORMAdapter($qb->getQuery()); 84 $pagerAdapter = new DoctrineORMAdapter($qb->getQuery());
88 $entries = new Pagerfanta($pagerAdapter); 85 $entries = new Pagerfanta($pagerAdapter);
@@ -91,7 +88,7 @@ class RssController extends Controller
91 $entries->setMaxPerPage($perPage); 88 $entries->setMaxPerPage($perPage);
92 89
93 return $this->render('WallabagCoreBundle:Entry:entries.xml.twig', array( 90 return $this->render('WallabagCoreBundle:Entry:entries.xml.twig', array(
94 'type' => 'starred', 91 'type' => $type,
95 'entries' => $entries, 92 'entries' => $entries,
96 )); 93 ));
97 } 94 }