diff options
Diffstat (limited to 'src/Wallabag/CoreBundle/Controller')
-rw-r--r-- | src/Wallabag/CoreBundle/Controller/ExportController.php | 77 |
1 files changed, 35 insertions, 42 deletions
diff --git a/src/Wallabag/CoreBundle/Controller/ExportController.php b/src/Wallabag/CoreBundle/Controller/ExportController.php index 123e491a..dd3cb7ca 100644 --- a/src/Wallabag/CoreBundle/Controller/ExportController.php +++ b/src/Wallabag/CoreBundle/Controller/ExportController.php | |||
@@ -4,62 +4,55 @@ namespace Wallabag\CoreBundle\Controller; | |||
4 | 4 | ||
5 | use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; | 5 | use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; |
6 | use Symfony\Bundle\FrameworkBundle\Controller\Controller; | 6 | use Symfony\Bundle\FrameworkBundle\Controller\Controller; |
7 | use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; | ||
7 | use Wallabag\CoreBundle\Entity\Entry; | 8 | use Wallabag\CoreBundle\Entity\Entry; |
8 | use Wallabag\CoreBundle\Helper\EntriesExport; | ||
9 | 9 | ||
10 | class ExportController extends Controller | 10 | class ExportController extends Controller |
11 | { | 11 | { |
12 | /** | 12 | /** |
13 | * Gets all entries for current user. | 13 | * Gets one entry content. |
14 | * | 14 | * |
15 | * @Route("/export/{category}.{format}", name="ebook", requirements={ | 15 | * @param Entry $entry |
16 | * "_format": "epub|mobi|pdf|json|xml|txt|csv" | 16 | * |
17 | * }) | 17 | * @Route("/export/{id}.{format}", requirements={"id" = "\d+"}, name="export_entry") |
18 | */ | 18 | */ |
19 | public function getEntriesAction($format, $category) | 19 | public function downloadEntryAction(Entry $entry, $format) |
20 | { | 20 | { |
21 | $repository = $this->getDoctrine()->getRepository('WallabagCoreBundle:Entry'); | 21 | try { |
22 | switch ($category) { | 22 | return $this->get('wallabag_core.helper.entries_export') |
23 | case 'all': | 23 | ->setEntries($entry) |
24 | $method = 'All'; | 24 | ->updateTitle('entry') |
25 | break; | 25 | ->exportAs($format); |
26 | 26 | } catch (\InvalidArgumentException $e) { | |
27 | case 'unread': | 27 | throw new NotFoundHttpException($e->getMessage()); |
28 | $method = 'Unread'; | ||
29 | break; | ||
30 | |||
31 | case 'starred': | ||
32 | $method = 'Starred'; | ||
33 | break; | ||
34 | |||
35 | case 'archive': | ||
36 | $method = 'Archive'; | ||
37 | break; | ||
38 | |||
39 | default: | ||
40 | break; | ||
41 | } | 28 | } |
42 | |||
43 | $methodBuilder = 'getBuilderFor'.$method.'ByUser'; | ||
44 | $qb = $repository->$methodBuilder($this->getUser()->getId()); | ||
45 | $entries = $qb->getQuery()->getResult(); | ||
46 | |||
47 | $export = new EntriesExport($entries); | ||
48 | $export->setMethod($method); | ||
49 | $export->exportAs($format); | ||
50 | } | 29 | } |
51 | 30 | ||
52 | /** | 31 | /** |
53 | * Gets one entry content. | 32 | * Export all entries for current user. |
54 | * | ||
55 | * @param Entry $entry | ||
56 | * | 33 | * |
57 | * @Route("/export/id/{id}.{format}", requirements={"id" = "\d+"}, name="ebook_entry") | 34 | * @Route("/export/{category}.{format}", name="export_entries", requirements={ |
35 | * "_format": "epub|mobi|pdf|json|xml|txt|csv", | ||
36 | * "category": "all|unread|starred|archive" | ||
37 | * }) | ||
58 | */ | 38 | */ |
59 | public function getEntryAction(Entry $entry, $format) | 39 | public function downloadEntriesAction($format, $category) |
60 | { | 40 | { |
61 | $export = new EntriesExport(array($entry)); | 41 | $method = ucfirst($category); |
62 | $export->setMethod('entry'); | 42 | $methodBuilder = 'getBuilderFor'.$method.'ByUser'; |
63 | $export->exportAs($format); | 43 | $entries = $this->getDoctrine() |
44 | ->getRepository('WallabagCoreBundle:Entry') | ||
45 | ->$methodBuilder($this->getUser()->getId()) | ||
46 | ->getQuery() | ||
47 | ->getResult(); | ||
48 | |||
49 | try { | ||
50 | return $this->get('wallabag_core.helper.entries_export') | ||
51 | ->setEntries($entries) | ||
52 | ->updateTitle($method) | ||
53 | ->exportAs($format); | ||
54 | } catch (\InvalidArgumentException $e) { | ||
55 | throw new NotFoundHttpException($e->getMessage()); | ||
56 | } | ||
64 | } | 57 | } |
65 | } | 58 | } |