]> git.immae.eu Git - github/wallabag/wallabag.git/blobdiff - src/Wallabag/CoreBundle/Controller/RssController.php
Merge pull request #1369 from wallabag/v2-bottombar
[github/wallabag/wallabag.git] / src / Wallabag / CoreBundle / Controller / RssController.php
index f2f8dd650f41a1adcf460ab66f4fbee8cbe154f7..0558c53b0fcbe4ba84572366523702a30aac35d7 100644 (file)
@@ -7,11 +7,13 @@ use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter;
 use Symfony\Bundle\FrameworkBundle\Controller\Controller;
 use Wallabag\CoreBundle\Entity\User;
 use Wallabag\CoreBundle\Entity\Entry;
+use Pagerfanta\Adapter\DoctrineORMAdapter;
+use Pagerfanta\Pagerfanta;
 
 class RssController extends Controller
 {
     /**
-     * Shows unread entries for current user
+     * Shows unread entries for current user.
      *
      * @Route("/{username}/{token}/unread.xml", name="unread_rss", defaults={"_format"="xml"})
      * @ParamConverter("user", class="WallabagCoreBundle:User", converter="username_rsstoken_converter")
@@ -20,14 +22,18 @@ class RssController extends Controller
      */
     public function showUnreadAction(User $user)
     {
-        $entries = $this->getDoctrine()
+        $qb = $this->getDoctrine()
             ->getRepository('WallabagCoreBundle:Entry')
             ->findUnreadByUser(
-                $user->getId(),
-                0,
-                $user->getConfig()->getRssLimit() ?: $this->getContainer()->getParameter('rss_limit')
+                $user->getId()
             );
 
+        $pagerAdapter = new DoctrineORMAdapter($qb->getQuery());
+        $entries = new Pagerfanta($pagerAdapter);
+
+        $perPage = $user->getConfig()->getRssLimit() ?: $this->container->getParameter('rss_limit');
+        $entries->setMaxPerPage($perPage);
+
         return $this->render('WallabagCoreBundle:Entry:entries.xml.twig', array(
             'type' => 'unread',
             'entries' => $entries,
@@ -35,7 +41,7 @@ class RssController extends Controller
     }
 
     /**
-     * Shows read entries for current user
+     * Shows read entries for current user.
      *
      * @Route("/{username}/{token}/archive.xml", name="archive_rss")
      * @ParamConverter("user", class="WallabagCoreBundle:User", converter="username_rsstoken_converter")
@@ -44,14 +50,18 @@ class RssController extends Controller
      */
     public function showArchiveAction(User $user)
     {
-        $entries = $this->getDoctrine()
+        $qb = $this->getDoctrine()
             ->getRepository('WallabagCoreBundle:Entry')
             ->findArchiveByUser(
-                $user->getId(),
-                0,
-                $user->getConfig()->getRssLimit() ?: $this->getContainer()->getParameter('rss_limit')
+                $user->getId()
             );
 
+        $pagerAdapter = new DoctrineORMAdapter($qb->getQuery());
+        $entries = new Pagerfanta($pagerAdapter);
+
+        $perPage = $user->getConfig()->getRssLimit() ?: $this->container->getParameter('rss_limit');
+        $entries->setMaxPerPage($perPage);
+
         return $this->render('WallabagCoreBundle:Entry:entries.xml.twig', array(
             'type' => 'archive',
             'entries' => $entries,
@@ -59,7 +69,7 @@ class RssController extends Controller
     }
 
     /**
-     * Shows starred entries for current user
+     * Shows starred entries for current user.
      *
      * @Route("/{username}/{token}/starred.xml", name="starred_rss")
      * @ParamConverter("user", class="WallabagCoreBundle:User", converter="username_rsstoken_converter")
@@ -68,14 +78,18 @@ class RssController extends Controller
      */
     public function showStarredAction(User $user)
     {
-        $entries = $this->getDoctrine()
+        $qb = $this->getDoctrine()
             ->getRepository('WallabagCoreBundle:Entry')
             ->findStarredByUser(
-                $user->getId(),
-                0,
-                $user->getConfig()->getRssLimit() ?: $this->getContainer()->getParameter('rss_limit')
+                $user->getId()
             );
 
+        $pagerAdapter = new DoctrineORMAdapter($qb->getQuery());
+        $entries = new Pagerfanta($pagerAdapter);
+
+        $perPage = $user->getConfig()->getRssLimit() ?: $this->container->getParameter('rss_limit');
+        $entries->setMaxPerPage($perPage);
+
         return $this->render('WallabagCoreBundle:Entry:entries.xml.twig', array(
             'type' => 'starred',
             'entries' => $entries,