]> git.immae.eu Git - github/wallabag/wallabag.git/blobdiff - src/Wallabag/CoreBundle/Controller/ExportController.php
Fixed entries export filtered with a tag
[github/wallabag/wallabag.git] / src / Wallabag / CoreBundle / Controller / ExportController.php
index dd3cb7ca5d84cd5807b4f7953876c235bad5616d..79653cfe84831b792122fad960f68209a89fd3fd 100644 (file)
@@ -4,17 +4,29 @@ namespace Wallabag\CoreBundle\Controller;
 
 use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
 use Symfony\Bundle\FrameworkBundle\Controller\Controller;
+use Symfony\Component\HttpFoundation\Request;
 use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
 use Wallabag\CoreBundle\Entity\Entry;
+use Wallabag\CoreBundle\Entity\Tag;
 
+/**
+ * The try/catch can be removed once all formats will be implemented.
+ * Still need implementation: txt.
+ */
 class ExportController extends Controller
 {
     /**
      * Gets one entry content.
      *
-     * @param Entry $entry
+     * @param Entry  $entry
+     * @param string $format
      *
-     * @Route("/export/{id}.{format}", requirements={"id" = "\d+"}, name="export_entry")
+     * @Route("/export/{id}.{format}", name="export_entry", requirements={
+     *     "format": "epub|mobi|pdf|json|xml|txt|csv",
+     *     "id": "\d+"
+     * })
+     *
+     * @return \Symfony\Component\HttpFoundation\Response
      */
     public function downloadEntryAction(Entry $entry, $format)
     {
@@ -31,20 +43,34 @@ class ExportController extends Controller
     /**
      * Export all entries for current user.
      *
+     * @param string $format
+     * @param string $category
+     *
      * @Route("/export/{category}.{format}", name="export_entries", requirements={
-     *     "_format": "epub|mobi|pdf|json|xml|txt|csv",
-     *     "category": "all|unread|starred|archive"
+     *     "format": "epub|mobi|pdf|json|xml|txt|csv",
+     *     "category": "all|unread|starred|archive|tag_entries|untagged"
      * })
+     *
+     * @return \Symfony\Component\HttpFoundation\Response
      */
-    public function downloadEntriesAction($format, $category)
+    public function downloadEntriesAction(Request $request, $format, $category)
     {
         $method = ucfirst($category);
         $methodBuilder = 'getBuilderFor'.$method.'ByUser';
-        $entries = $this->getDoctrine()
-            ->getRepository('WallabagCoreBundle:Entry')
-            ->$methodBuilder($this->getUser()->getId())
-            ->getQuery()
-            ->getResult();
+
+        if ($category == 'tag_entries') {
+            $tag = $this->getDoctrine()->getRepository('WallabagCoreBundle:Tag')->findOneBySlug($request->query->get('tag'));
+
+            $entries = $this->getDoctrine()
+                ->getRepository('WallabagCoreBundle:Entry')
+                ->findAllByTagId($this->getUser()->getId(), $tag->getId());
+        } else {
+            $entries = $this->getDoctrine()
+                ->getRepository('WallabagCoreBundle:Entry')
+                ->$methodBuilder($this->getUser()->getId())
+                ->getQuery()
+                ->getResult();
+        }
 
         try {
             return $this->get('wallabag_core.helper.entries_export')