3 namespace Wallabag\CoreBundle\Controller
;
5 use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route
;
6 use Symfony\Bundle\FrameworkBundle\Controller\Controller
;
7 use Symfony\Component\HttpFoundation\Request
;
8 use Symfony\Component\HttpKernel\Exception\NotFoundHttpException
;
9 use Wallabag\CoreBundle\Entity\Entry
;
10 use Wallabag\CoreBundle\Entity\Tag
;
13 * The try/catch can be removed once all formats will be implemented.
14 * Still need implementation: txt.
16 class ExportController
extends Controller
19 * Gets one entry content.
22 * @param string $format
24 * @Route("/export/{id}.{format}", name="export_entry", requirements={
25 * "format": "epub|mobi|pdf|json|xml|txt|csv",
29 * @return \Symfony\Component\HttpFoundation\Response
31 public function downloadEntryAction(Entry
$entry, $format)
34 return $this->get('wallabag_core.helper.entries_export')
36 ->updateTitle('entry')
38 } catch (\InvalidArgumentException
$e) {
39 throw new NotFoundHttpException($e->getMessage());
44 * Export all entries for current user.
46 * @param string $format
47 * @param string $category
49 * @Route("/export/{category}.{format}", name="export_entries", requirements={
50 * "format": "epub|mobi|pdf|json|xml|txt|csv",
51 * "category": "all|unread|starred|archive|tag_entries|untagged|search"
54 * @return \Symfony\Component\HttpFoundation\Response
56 public function downloadEntriesAction(Request
$request, $format, $category)
58 $method = ucfirst($category);
59 $methodBuilder = 'getBuilderFor'.$method.'ByUser';
61 if ($category == 'tag_entries') {
62 $tag = $this->getDoctrine()->getRepository('WallabagCoreBundle:Tag')->findOneBySlug($request->query
->get('tag'));
64 $entries = $this->getDoctrine()
65 ->getRepository('WallabagCoreBundle:Entry')
66 ->findAllByTagId($this->getUser()->getId(), $tag->getId());
68 $entries = $this->getDoctrine()
69 ->getRepository('WallabagCoreBundle:Entry')
70 ->$methodBuilder($this->getUser()->getId())
76 return $this->get('wallabag_core.helper.entries_export')
77 ->setEntries($entries)
78 ->updateTitle($method)
80 } catch (\InvalidArgumentException
$e) {
81 throw new NotFoundHttpException($e->getMessage());