aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/Wallabag/CoreBundle/Controller
diff options
context:
space:
mode:
Diffstat (limited to 'src/Wallabag/CoreBundle/Controller')
-rw-r--r--src/Wallabag/CoreBundle/Controller/EntryController.php66
-rw-r--r--src/Wallabag/CoreBundle/Controller/RssController.php17
2 files changed, 74 insertions, 9 deletions
diff --git a/src/Wallabag/CoreBundle/Controller/EntryController.php b/src/Wallabag/CoreBundle/Controller/EntryController.php
index ef686ff1..6944a686 100644
--- a/src/Wallabag/CoreBundle/Controller/EntryController.php
+++ b/src/Wallabag/CoreBundle/Controller/EntryController.php
@@ -9,6 +9,9 @@ use Wallabag\CoreBundle\Entity\Entry;
9use Wallabag\CoreBundle\Service\Extractor; 9use Wallabag\CoreBundle\Service\Extractor;
10use Wallabag\CoreBundle\Form\Type\NewEntryType; 10use Wallabag\CoreBundle\Form\Type\NewEntryType;
11use Wallabag\CoreBundle\Form\Type\EditEntryType; 11use Wallabag\CoreBundle\Form\Type\EditEntryType;
12use Wallabag\CoreBundle\Filter\EntryFilterType;
13use Pagerfanta\Adapter\DoctrineORMAdapter;
14use Pagerfanta\Pagerfanta;
12 15
13class EntryController extends Controller 16class EntryController extends Controller
14{ 17{
@@ -101,22 +104,39 @@ class EntryController extends Controller
101 /** 104 /**
102 * Shows unread entries for current user. 105 * Shows unread entries for current user.
103 * 106 *
107 * @param Request $request
108 * @param int $page
109 *
104 * @Route("/unread/list/{page}", name="unread", defaults={"page" = "1"}) 110 * @Route("/unread/list/{page}", name="unread", defaults={"page" = "1"})
105 * 111 *
106 * @return \Symfony\Component\HttpFoundation\Response 112 * @return \Symfony\Component\HttpFoundation\Response
107 */ 113 */
108 public function showUnreadAction($page) 114 public function showUnreadAction(Request $request, $page)
109 { 115 {
110 $entries = $this->getDoctrine() 116 $form = $this->get('form.factory')->create(new EntryFilterType());
117
118 $filterBuilder = $this->getDoctrine()
111 ->getRepository('WallabagCoreBundle:Entry') 119 ->getRepository('WallabagCoreBundle:Entry')
112 ->findUnreadByUser($this->getUser()->getId()); 120 ->findUnreadByUser($this->getUser()->getId());
113 121
122 if ($request->query->has($form->getName())) {
123 // manually bind values from the request
124 $form->submit($request->query->get($form->getName()));
125
126 // build the query from the given form object
127 $this->get('lexik_form_filter.query_builder_updater')->addFilterConditions($form, $filterBuilder);
128 }
129
130 $pagerAdapter = new DoctrineORMAdapter($filterBuilder->getQuery());
131 $entries = new Pagerfanta($pagerAdapter);
132
114 $entries->setMaxPerPage($this->getUser()->getConfig()->getItemsPerPage()); 133 $entries->setMaxPerPage($this->getUser()->getConfig()->getItemsPerPage());
115 $entries->setCurrentPage($page); 134 $entries->setCurrentPage($page);
116 135
117 return $this->render( 136 return $this->render(
118 'WallabagCoreBundle:Entry:entries.html.twig', 137 'WallabagCoreBundle:Entry:entries.html.twig',
119 array( 138 array(
139 'form' => $form->createView(),
120 'entries' => $entries, 140 'entries' => $entries,
121 'currentPage' => $page 141 'currentPage' => $page
122 ) 142 )
@@ -126,22 +146,39 @@ class EntryController extends Controller
126 /** 146 /**
127 * Shows read entries for current user. 147 * Shows read entries for current user.
128 * 148 *
149 * @param Request $request
150 * @param int $page
151 *
129 * @Route("/archive/list/{page}", name="archive", defaults={"page" = "1"}) 152 * @Route("/archive/list/{page}", name="archive", defaults={"page" = "1"})
130 * 153 *
131 * @return \Symfony\Component\HttpFoundation\Response 154 * @return \Symfony\Component\HttpFoundation\Response
132 */ 155 */
133 public function showArchiveAction($page) 156 public function showArchiveAction(Request $request, $page)
134 { 157 {
135 $entries = $this->getDoctrine() 158 $form = $this->get('form.factory')->create(new EntryFilterType());
159
160 $filterBuilder = $this->getDoctrine()
136 ->getRepository('WallabagCoreBundle:Entry') 161 ->getRepository('WallabagCoreBundle:Entry')
137 ->findArchiveByUser($this->getUser()->getId()); 162 ->findArchiveByUser($this->getUser()->getId());
138 163
164 if ($request->query->has($form->getName())) {
165 // manually bind values from the request
166 $form->submit($request->query->get($form->getName()));
167
168 // build the query from the given form object
169 $this->get('lexik_form_filter.query_builder_updater')->addFilterConditions($form, $filterBuilder);
170 }
171
172 $pagerAdapter = new DoctrineORMAdapter($filterBuilder->getQuery());
173 $entries = new Pagerfanta($pagerAdapter);
174
139 $entries->setMaxPerPage($this->getUser()->getConfig()->getItemsPerPage()); 175 $entries->setMaxPerPage($this->getUser()->getConfig()->getItemsPerPage());
140 $entries->setCurrentPage($page); 176 $entries->setCurrentPage($page);
141 177
142 return $this->render( 178 return $this->render(
143 'WallabagCoreBundle:Entry:entries.html.twig', 179 'WallabagCoreBundle:Entry:entries.html.twig',
144 array( 180 array(
181 'form' => $form->createView(),
145 'entries' => $entries, 182 'entries' => $entries,
146 'currentPage' => $page 183 'currentPage' => $page
147 ) 184 )
@@ -151,22 +188,39 @@ class EntryController extends Controller
151 /** 188 /**
152 * Shows starred entries for current user. 189 * Shows starred entries for current user.
153 * 190 *
191 * @param Request $request
192 * @param int $page
193 *
154 * @Route("/starred/list/{page}", name="starred", defaults={"page" = "1"}) 194 * @Route("/starred/list/{page}", name="starred", defaults={"page" = "1"})
155 * 195 *
156 * @return \Symfony\Component\HttpFoundation\Response 196 * @return \Symfony\Component\HttpFoundation\Response
157 */ 197 */
158 public function showStarredAction($page) 198 public function showStarredAction(Request $request, $page)
159 { 199 {
160 $entries = $this->getDoctrine() 200 $form = $this->get('form.factory')->create(new EntryFilterType());
201
202 $filterBuilder = $this->getDoctrine()
161 ->getRepository('WallabagCoreBundle:Entry') 203 ->getRepository('WallabagCoreBundle:Entry')
162 ->findStarredByUser($this->getUser()->getId()); 204 ->findStarredByUser($this->getUser()->getId());
163 205
206 if ($request->query->has($form->getName())) {
207 // manually bind values from the request
208 $form->submit($request->query->get($form->getName()));
209
210 // build the query from the given form object
211 $this->get('lexik_form_filter.query_builder_updater')->addFilterConditions($form, $filterBuilder);
212 }
213
214 $pagerAdapter = new DoctrineORMAdapter($filterBuilder->getQuery());
215 $entries = new Pagerfanta($pagerAdapter);
216
164 $entries->setMaxPerPage($this->getUser()->getConfig()->getItemsPerPage()); 217 $entries->setMaxPerPage($this->getUser()->getConfig()->getItemsPerPage());
165 $entries->setCurrentPage($page); 218 $entries->setCurrentPage($page);
166 219
167 return $this->render( 220 return $this->render(
168 'WallabagCoreBundle:Entry:entries.html.twig', 221 'WallabagCoreBundle:Entry:entries.html.twig',
169 array( 222 array(
223 'form' => $form->createView(),
170 'entries' => $entries, 224 'entries' => $entries,
171 'currentPage' => $page 225 'currentPage' => $page
172 ) 226 )
diff --git a/src/Wallabag/CoreBundle/Controller/RssController.php b/src/Wallabag/CoreBundle/Controller/RssController.php
index 8428dce0..0558c53b 100644
--- a/src/Wallabag/CoreBundle/Controller/RssController.php
+++ b/src/Wallabag/CoreBundle/Controller/RssController.php
@@ -7,6 +7,8 @@ use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter;
7use Symfony\Bundle\FrameworkBundle\Controller\Controller; 7use Symfony\Bundle\FrameworkBundle\Controller\Controller;
8use Wallabag\CoreBundle\Entity\User; 8use Wallabag\CoreBundle\Entity\User;
9use Wallabag\CoreBundle\Entity\Entry; 9use Wallabag\CoreBundle\Entity\Entry;
10use Pagerfanta\Adapter\DoctrineORMAdapter;
11use Pagerfanta\Pagerfanta;
10 12
11class RssController extends Controller 13class RssController extends Controller
12{ 14{
@@ -20,12 +22,15 @@ class RssController extends Controller
20 */ 22 */
21 public function showUnreadAction(User $user) 23 public function showUnreadAction(User $user)
22 { 24 {
23 $entries = $this->getDoctrine() 25 $qb = $this->getDoctrine()
24 ->getRepository('WallabagCoreBundle:Entry') 26 ->getRepository('WallabagCoreBundle:Entry')
25 ->findUnreadByUser( 27 ->findUnreadByUser(
26 $user->getId() 28 $user->getId()
27 ); 29 );
28 30
31 $pagerAdapter = new DoctrineORMAdapter($qb->getQuery());
32 $entries = new Pagerfanta($pagerAdapter);
33
29 $perPage = $user->getConfig()->getRssLimit() ?: $this->container->getParameter('rss_limit'); 34 $perPage = $user->getConfig()->getRssLimit() ?: $this->container->getParameter('rss_limit');
30 $entries->setMaxPerPage($perPage); 35 $entries->setMaxPerPage($perPage);
31 36
@@ -45,12 +50,15 @@ class RssController extends Controller
45 */ 50 */
46 public function showArchiveAction(User $user) 51 public function showArchiveAction(User $user)
47 { 52 {
48 $entries = $this->getDoctrine() 53 $qb = $this->getDoctrine()
49 ->getRepository('WallabagCoreBundle:Entry') 54 ->getRepository('WallabagCoreBundle:Entry')
50 ->findArchiveByUser( 55 ->findArchiveByUser(
51 $user->getId() 56 $user->getId()
52 ); 57 );
53 58
59 $pagerAdapter = new DoctrineORMAdapter($qb->getQuery());
60 $entries = new Pagerfanta($pagerAdapter);
61
54 $perPage = $user->getConfig()->getRssLimit() ?: $this->container->getParameter('rss_limit'); 62 $perPage = $user->getConfig()->getRssLimit() ?: $this->container->getParameter('rss_limit');
55 $entries->setMaxPerPage($perPage); 63 $entries->setMaxPerPage($perPage);
56 64
@@ -70,12 +78,15 @@ class RssController extends Controller
70 */ 78 */
71 public function showStarredAction(User $user) 79 public function showStarredAction(User $user)
72 { 80 {
73 $entries = $this->getDoctrine() 81 $qb = $this->getDoctrine()
74 ->getRepository('WallabagCoreBundle:Entry') 82 ->getRepository('WallabagCoreBundle:Entry')
75 ->findStarredByUser( 83 ->findStarredByUser(
76 $user->getId() 84 $user->getId()
77 ); 85 );
78 86
87 $pagerAdapter = new DoctrineORMAdapter($qb->getQuery());
88 $entries = new Pagerfanta($pagerAdapter);
89
79 $perPage = $user->getConfig()->getRssLimit() ?: $this->container->getParameter('rss_limit'); 90 $perPage = $user->getConfig()->getRssLimit() ?: $this->container->getParameter('rss_limit');
80 $entries->setMaxPerPage($perPage); 91 $entries->setMaxPerPage($perPage);
81 92