]> git.immae.eu Git - github/wallabag/wallabag.git/blob - src/Wallabag/CoreBundle/Controller/RssController.php
Merge pull request #1312 from wallabag/v2-fix-1311
[github/wallabag/wallabag.git] / src / Wallabag / CoreBundle / Controller / RssController.php
1 <?php
2
3 namespace Wallabag\CoreBundle\Controller;
4
5 use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
6 use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter;
7 use Symfony\Bundle\FrameworkBundle\Controller\Controller;
8 use Wallabag\CoreBundle\Entity\User;
9 use Wallabag\CoreBundle\Entity\Entry;
10 use Pagerfanta\Adapter\DoctrineORMAdapter;
11 use Pagerfanta\Pagerfanta;
12
13 class RssController extends Controller
14 {
15 /**
16 * Shows unread entries for current user.
17 *
18 * @Route("/{username}/{token}/unread.xml", name="unread_rss", defaults={"_format"="xml"})
19 * @ParamConverter("user", class="WallabagCoreBundle:User", converter="username_rsstoken_converter")
20 *
21 * @return \Symfony\Component\HttpFoundation\Response
22 */
23 public function showUnreadAction(User $user)
24 {
25 $qb = $this->getDoctrine()
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 }
42
43 /**
44 * Shows read entries for current user.
45 *
46 * @Route("/{username}/{token}/archive.xml", name="archive_rss")
47 * @ParamConverter("user", class="WallabagCoreBundle:User", converter="username_rsstoken_converter")
48 *
49 * @return \Symfony\Component\HttpFoundation\Response
50 */
51 public function showArchiveAction(User $user)
52 {
53 $qb = $this->getDoctrine()
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 }
70
71 /**
72 * Shows starred entries for current user.
73 *
74 * @Route("/{username}/{token}/starred.xml", name="starred_rss")
75 * @ParamConverter("user", class="WallabagCoreBundle:User", converter="username_rsstoken_converter")
76 *
77 * @return \Symfony\Component\HttpFoundation\Response
78 */
79 public function showStarredAction(User $user)
80 {
81 $qb = $this->getDoctrine()
82 ->getRepository('WallabagCoreBundle:Entry')
83 ->findStarredByUser(
84 $user->getId()
85 );
86
87 $pagerAdapter = new DoctrineORMAdapter($qb->getQuery());
88 $entries = new Pagerfanta($pagerAdapter);
89
90 $perPage = $user->getConfig()->getRssLimit() ?: $this->container->getParameter('rss_limit');
91 $entries->setMaxPerPage($perPage);
92
93 return $this->render('WallabagCoreBundle:Entry:entries.xml.twig', array(
94 'type' => 'starred',
95 'entries' => $entries,
96 ));
97 }
98 }