- $export = new EntriesExport(array($entry));
- $export->setMethod('entry');
- $export->exportAs($format);
+ $method = ucfirst($category);
+ $methodBuilder = 'getBuilderFor' . $method . 'ByUser';
+ $repository = $this->get('wallabag_core.entry_repository');
+ $title = $method;
+
+ if ('tag_entries' === $category) {
+ $tag = $this->get('wallabag_core.tag_repository')->findOneBySlug($request->query->get('tag'));
+
+ $entries = $repository->findAllByTagId(
+ $this->getUser()->getId(),
+ $tag->getId()
+ );
+
+ $title = 'Tag ' . $tag->getLabel();
+ } else {
+ $entries = $repository
+ ->$methodBuilder($this->getUser()->getId())
+ ->getQuery()
+ ->getResult();
+ }
+
+ try {
+ return $this->get('wallabag_core.helper.entries_export')
+ ->setEntries($entries)
+ ->updateTitle($title)
+ ->updateAuthor($method)
+ ->exportAs($format);
+ } catch (\InvalidArgumentException $e) {
+ throw new NotFoundHttpException($e->getMessage());
+ }