]> git.immae.eu Git - github/wallabag/wallabag.git/blobdiff - src/Wallabag/CoreBundle/Controller/RssController.php
Add rss for entries
[github/wallabag/wallabag.git] / src / Wallabag / CoreBundle / Controller / RssController.php
diff --git a/src/Wallabag/CoreBundle/Controller/RssController.php b/src/Wallabag/CoreBundle/Controller/RssController.php
new file mode 100644 (file)
index 0000000..f2f8dd6
--- /dev/null
@@ -0,0 +1,84 @@
+<?php
+
+namespace Wallabag\CoreBundle\Controller;
+
+use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
+use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter;
+use Symfony\Bundle\FrameworkBundle\Controller\Controller;
+use Wallabag\CoreBundle\Entity\User;
+use Wallabag\CoreBundle\Entity\Entry;
+
+class RssController extends Controller
+{
+    /**
+     * 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")
+     *
+     * @return \Symfony\Component\HttpFoundation\Response
+     */
+    public function showUnreadAction(User $user)
+    {
+        $entries = $this->getDoctrine()
+            ->getRepository('WallabagCoreBundle:Entry')
+            ->findUnreadByUser(
+                $user->getId(),
+                0,
+                $user->getConfig()->getRssLimit() ?: $this->getContainer()->getParameter('rss_limit')
+            );
+
+        return $this->render('WallabagCoreBundle:Entry:entries.xml.twig', array(
+            'type' => 'unread',
+            'entries' => $entries,
+        ));
+    }
+
+    /**
+     * Shows read entries for current user
+     *
+     * @Route("/{username}/{token}/archive.xml", name="archive_rss")
+     * @ParamConverter("user", class="WallabagCoreBundle:User", converter="username_rsstoken_converter")
+     *
+     * @return \Symfony\Component\HttpFoundation\Response
+     */
+    public function showArchiveAction(User $user)
+    {
+        $entries = $this->getDoctrine()
+            ->getRepository('WallabagCoreBundle:Entry')
+            ->findArchiveByUser(
+                $user->getId(),
+                0,
+                $user->getConfig()->getRssLimit() ?: $this->getContainer()->getParameter('rss_limit')
+            );
+
+        return $this->render('WallabagCoreBundle:Entry:entries.xml.twig', array(
+            'type' => 'archive',
+            'entries' => $entries,
+        ));
+    }
+
+    /**
+     * Shows starred entries for current user
+     *
+     * @Route("/{username}/{token}/starred.xml", name="starred_rss")
+     * @ParamConverter("user", class="WallabagCoreBundle:User", converter="username_rsstoken_converter")
+     *
+     * @return \Symfony\Component\HttpFoundation\Response
+     */
+    public function showStarredAction(User $user)
+    {
+        $entries = $this->getDoctrine()
+            ->getRepository('WallabagCoreBundle:Entry')
+            ->findStarredByUser(
+                $user->getId(),
+                0,
+                $user->getConfig()->getRssLimit() ?: $this->getContainer()->getParameter('rss_limit')
+            );
+
+        return $this->render('WallabagCoreBundle:Entry:entries.xml.twig', array(
+            'type' => 'starred',
+            'entries' => $entries,
+        ));
+    }
+}