X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=src%2FWallabag%2FCoreBundle%2FHelper%2FEntriesExport.php;h=cbf1037bff60d53715be00325f0da4fa15e0f918;hb=3a696280075af753fc57ad1a0a6ca3636ef0255d;hp=de259e7ffc25246acbab2299078b63afd38778cd;hpb=854616ac6d6246e8e0451342ab841985b401604d;p=github%2Fwallabag%2Fwallabag.git diff --git a/src/Wallabag/CoreBundle/Helper/EntriesExport.php b/src/Wallabag/CoreBundle/Helper/EntriesExport.php index de259e7f..cbf1037b 100644 --- a/src/Wallabag/CoreBundle/Helper/EntriesExport.php +++ b/src/Wallabag/CoreBundle/Helper/EntriesExport.php @@ -2,11 +2,13 @@ namespace Wallabag\CoreBundle\Helper; +use Html2Text\Html2Text; use JMS\Serializer\SerializationContext; use JMS\Serializer\SerializerBuilder; use PHPePub\Core\EPub; use PHPePub\Core\Structure\OPF\DublinCore; use Symfony\Component\HttpFoundation\Response; +use Symfony\Component\Translation\TranslatorInterface; use Wallabag\CoreBundle\Entity\Entry; /** @@ -16,21 +18,20 @@ class EntriesExport { private $wallabagUrl; private $logoPath; + private $translator; private $title = ''; private $entries = []; private $author = 'wallabag'; private $language = ''; - private $footerTemplate = '
-

Produced by wallabag with %EXPORT_METHOD%

-

Please open an issue if you have trouble with the display of this E-Book on your device.

-
'; /** - * @param string $wallabagUrl Wallabag instance url - * @param string $logoPath Path to the logo FROM THE BUNDLE SCOPE + * @param TranslatorInterface $translator Translator service + * @param string $wallabagUrl Wallabag instance url + * @param string $logoPath Path to the logo FROM THE BUNDLE SCOPE */ - public function __construct($wallabagUrl, $logoPath) + public function __construct(TranslatorInterface $translator, $wallabagUrl, $logoPath) { + $this->translator = $translator; $this->wallabagUrl = $wallabagUrl; $this->logoPath = $logoPath; } @@ -44,7 +45,7 @@ class EntriesExport */ public function setEntries($entries) { - if (!is_array($entries)) { + if (!\is_array($entries)) { $this->language = $entries->getLanguage(); $entries = [$entries]; } @@ -173,8 +174,6 @@ class EntriesExport $book->setCoverImage('Cover.png', file_get_contents($this->logoPath), 'image/png'); } - $book->buildTOC(); - /* * Adding actual entries */ @@ -189,11 +188,13 @@ class EntriesExport // in filenames, we limit to A-z/0-9 $filename = preg_replace('/[^A-Za-z0-9\-]/', '', $entry->getTitle()); + $titlepage = $content_start . '

' . $entry->getTitle() . '

' . $this->getExportInformation('PHPePub') . $bookEnd; + $book->addChapter('Title', 'Title.html', $titlepage, true, EPub::EXTERNAL_REF_ADD); $chapter = $content_start . $entry->getContent() . $bookEnd; $book->addChapter($entry->getTitle(), htmlspecialchars($filename) . '.html', $chapter, true, EPub::EXTERNAL_REF_ADD); } - $book->addChapter('Notices', 'Cover2.html', $content_start . $this->getExportInformation('PHPePub') . $bookEnd); + $book->buildTOC(); return Response::create( $book->getBook(), @@ -324,7 +325,7 @@ class EntriesExport { $delimiter = ';'; $enclosure = '"'; - $handle = fopen('php://memory', 'rb+'); + $handle = fopen('php://memory', 'b+r'); fputcsv($handle, ['Title', 'URL', 'Content', 'Tags', 'MIME Type', 'Language', 'Creation date'], $delimiter, $enclosure); @@ -408,7 +409,8 @@ class EntriesExport $bar = str_repeat('=', 100); foreach ($this->entries as $entry) { $content .= "\n\n" . $bar . "\n\n" . $entry->getTitle() . "\n\n" . $bar . "\n\n"; - $content .= trim(preg_replace('/\s+/S', ' ', strip_tags($entry->getContent()))) . "\n\n"; + $html = new Html2Text($entry->getContent(), ['do_links' => 'none', 'width' => 100]); + $content .= $html->getText(); } return Response::create( @@ -449,7 +451,9 @@ class EntriesExport */ private function getExportInformation($type) { - $info = str_replace('%EXPORT_METHOD%', $type, $this->footerTemplate); + $info = $this->translator->trans('export.footer_template', [ + '%method%' => $type, + ]); if ('tcpdf' === $type) { return str_replace('%IMAGE%', '', $info);