X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=src%2FWallabag%2FCoreBundle%2FController%2FExportController.php;h=79653cfe84831b792122fad960f68209a89fd3fd;hb=920d88599a077a7624574345243caf45c6bc5820;hp=dd3cb7ca5d84cd5807b4f7953876c235bad5616d;hpb=add597bad95b30dbecab3aecc8362a1ccd427976;p=github%2Fwallabag%2Fwallabag.git diff --git a/src/Wallabag/CoreBundle/Controller/ExportController.php b/src/Wallabag/CoreBundle/Controller/ExportController.php index dd3cb7ca..79653cfe 100644 --- a/src/Wallabag/CoreBundle/Controller/ExportController.php +++ b/src/Wallabag/CoreBundle/Controller/ExportController.php @@ -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')