mirror of
https://github.com/wallabag/wallabag.git
synced 2024-06-12 18:29:34 +00:00
07320a2bd2
When exporting an entry, use the domain name as author name for epub, mobi and pdf formats, instead of 'wallabag'. Change the author from array to string, because for now, there is always only one author.
87 lines
2.7 KiB
PHP
87 lines
2.7 KiB
PHP
<?php
|
|
|
|
namespace Wallabag\CoreBundle\Controller;
|
|
|
|
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
|
|
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
|
|
use Symfony\Component\HttpFoundation\Request;
|
|
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
|
|
use Wallabag\CoreBundle\Entity\Entry;
|
|
|
|
/**
|
|
* The try/catch can be removed once all formats will be implemented.
|
|
* Still need implementation: txt.
|
|
*/
|
|
class ExportController extends Controller
|
|
{
|
|
/**
|
|
* Gets one entry content.
|
|
*
|
|
* @param Entry $entry
|
|
* @param string $format
|
|
*
|
|
* @Route("/export/{id}.{format}", name="export_entry", requirements={
|
|
* "format": "epub|mobi|pdf|json|xml|txt|csv",
|
|
* "id": "\d+"
|
|
* })
|
|
*
|
|
* @return \Symfony\Component\HttpFoundation\Response
|
|
*/
|
|
public function downloadEntryAction(Entry $entry, $format)
|
|
{
|
|
try {
|
|
return $this->get('wallabag_core.helper.entries_export')
|
|
->setEntries($entry)
|
|
->updateTitle('entry')
|
|
->updateAuthor('entry')
|
|
->exportAs($format);
|
|
} catch (\InvalidArgumentException $e) {
|
|
throw new NotFoundHttpException($e->getMessage());
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Export all entries for current user.
|
|
*
|
|
* @param string $format
|
|
* @param string $category
|
|
*
|
|
* @Route("/export/{category}.{format}", name="export_entries", requirements={
|
|
* "format": "epub|mobi|pdf|json|xml|txt|csv",
|
|
* "category": "all|unread|starred|archive|tag_entries|untagged|search"
|
|
* })
|
|
*
|
|
* @return \Symfony\Component\HttpFoundation\Response
|
|
*/
|
|
public function downloadEntriesAction(Request $request, $format, $category)
|
|
{
|
|
$method = ucfirst($category);
|
|
$methodBuilder = 'getBuilderFor' . $method . 'ByUser';
|
|
$repository = $this->get('wallabag_core.entry_repository');
|
|
|
|
if ($category === 'tag_entries') {
|
|
$tag = $this->get('wallabag_core.tag_repository')->findOneBySlug($request->query->get('tag'));
|
|
|
|
$entries = $repository->findAllByTagId(
|
|
$this->getUser()->getId(),
|
|
$tag->getId()
|
|
);
|
|
} else {
|
|
$entries = $repository
|
|
->$methodBuilder($this->getUser()->getId())
|
|
->getQuery()
|
|
->getResult();
|
|
}
|
|
|
|
try {
|
|
return $this->get('wallabag_core.helper.entries_export')
|
|
->setEntries($entries)
|
|
->updateTitle($method)
|
|
->updateAuthor($method)
|
|
->exportAs($format);
|
|
} catch (\InvalidArgumentException $e) {
|
|
throw new NotFoundHttpException($e->getMessage());
|
|
}
|
|
}
|
|
}
|