]> git.immae.eu Git - github/wallabag/wallabag.git/blob - src/Wallabag/CoreBundle/Controller/ExportController.php
Start work on export
[github/wallabag/wallabag.git] / src / Wallabag / CoreBundle / Controller / ExportController.php
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 }