]>
Commit | Line | Data |
---|---|---|
03690d13 TC |
1 | <?php |
2 | ||
3 | namespace Wallabag\CoreBundle\Controller; | |
4 | ||
5 | use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; | |
6 | use Symfony\Bundle\FrameworkBundle\Controller\Controller; | |
7 | use Wallabag\CoreBundle\Entity\Entry; | |
8 | use Wallabag\CoreBundle\Helper\EntriesExport; | |
9 | ||
10 | class ExportController extends Controller | |
11 | { | |
12 | /** | |
13 | * Gets all entries for current user. | |
14 | * | |
15 | * @Route("/export/{category}.{format}", name="ebook", requirements={ | |
16 | * "_format": "epub|mobi|pdf|json|xml|txt|csv" | |
17 | * }) | |
18 | */ | |
19 | public function getEntriesAction($format, $category) | |
20 | { | |
21 | $repository = $this->getDoctrine()->getRepository('WallabagCoreBundle:Entry'); | |
22 | switch ($category) { | |
23 | case 'all': | |
24 | $method = 'All'; | |
25 | break; | |
26 | ||
27 | case 'unread': | |
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 | } | |
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 | } | |
51 | ||
52 | /** | |
53 | * Gets one entry content. | |
54 | * | |
55 | * @param Entry $entry | |
56 | * | |
57 | * @Route("/export/id/{id}.{format}", requirements={"id" = "\d+"}, name="ebook_entry") | |
58 | */ | |
59 | public function getEntryAction(Entry $entry, $format) | |
60 | { | |
61 | $export = new EntriesExport(array($entry)); | |
62 | $export->setMethod('entry'); | |
63 | $export->exportAs($format); | |
64 | } | |
65 | } |