Merge pull request #3266 from egilli/export-domain-as-author

Use the article publisher as author for exported files
This commit is contained in:
Jérémy Benoist 2017-07-11 09:21:49 +02:00 committed by GitHub
commit f39152ad6e
4 changed files with 35 additions and 6 deletions

View file

@ -180,6 +180,7 @@ class EntryRestController extends WallabagRestController
return $this->get('wallabag_core.helper.entries_export')
->setEntries($entry)
->updateTitle('entry')
->updateAuthor('entry')
->exportAs($request->attributes->get('_format'));
}

View file

@ -56,6 +56,7 @@ class ExportCommand extends ContainerAwareCommand
$data = $this->getContainer()->get('wallabag_core.helper.entries_export')
->setEntries($entries)
->updateTitle('All')
->updateAuthor('All')
->exportJsonData();
file_put_contents($filePath, $data);
} catch (\InvalidArgumentException $e) {

View file

@ -33,6 +33,7 @@ class ExportController extends Controller
return $this->get('wallabag_core.helper.entries_export')
->setEntries($entry)
->updateTitle('entry')
->updateAuthor('entry')
->exportAs($format);
} catch (\InvalidArgumentException $e) {
throw new NotFoundHttpException($e->getMessage());
@ -76,6 +77,7 @@ class ExportController extends Controller
return $this->get('wallabag_core.helper.entries_export')
->setEntries($entries)
->updateTitle($method)
->updateAuthor($method)
->exportAs($format);
} catch (\InvalidArgumentException $e) {
throw new NotFoundHttpException($e->getMessage());

View file

@ -18,7 +18,7 @@ class EntriesExport
private $logoPath;
private $title = '';
private $entries = [];
private $authors = ['wallabag'];
private $author = 'wallabag';
private $language = '';
private $footerTemplate = '<div style="text-align:center;">
<p>Produced by wallabag with %EXPORT_METHOD%</p>
@ -72,6 +72,33 @@ class EntriesExport
return $this;
}
/**
* Sets the author for one entry or category.
*
* The publishers are used, or the domain name if empty.
*
* @param string $method Method to get articles
*
* @return EntriesExport
*/
public function updateAuthor($method)
{
if ('entry' !== $method) {
$this->author = $method . ' authors';
return $this;
}
$this->author = $this->entries[0]->getDomainName();
$publishedBy = $this->entries[0]->getPublishedBy();
if (!empty($publishedBy)) {
$this->author = implode(', ', $publishedBy);
}
return $this;
}
/**
* Sets the output format.
*
@ -128,9 +155,7 @@ class EntriesExport
$book->setLanguage($this->language);
$book->setDescription('Some articles saved on my wallabag');
foreach ($this->authors as $author) {
$book->setAuthor($author, $author);
}
$book->setAuthor($this->author, $this->author);
// I hope this is a non existant address :)
$book->setPublisher('wallabag', 'wallabag');
@ -196,7 +221,7 @@ class EntriesExport
* Book metadata
*/
$content->set('title', $this->title);
$content->set('author', implode($this->authors));
$content->set('author', $this->author);
$content->set('subject', $this->title);
/*
@ -247,7 +272,7 @@ class EntriesExport
* Book metadata
*/
$pdf->SetCreator(PDF_CREATOR);
$pdf->SetAuthor('wallabag');
$pdf->SetAuthor($this->author);
$pdf->SetTitle($this->title);
$pdf->SetSubject('Articles via wallabag');
$pdf->SetKeywords('wallabag');