]> git.immae.eu Git - github/wallabag/wallabag.git/blobdiff - src/Wallabag/CoreBundle/Helper/EntriesExport.php
Merge pull request #1805 from wallabag/v2-assign-comma-tags
[github/wallabag/wallabag.git] / src / Wallabag / CoreBundle / Helper / EntriesExport.php
index 79fe6eaadc8f6eff7b4e5a5b9f4064f88e90b6cb..82004a6d51371c348a012cae99dc11b7b49adbf8 100644 (file)
@@ -6,7 +6,6 @@ use JMS\Serializer;
 use JMS\Serializer\SerializationContext;
 use JMS\Serializer\SerializerBuilder;
 use PHPePub\Core\EPub;
-use Html2Text\Html2Text;
 use PHPePub\Core\Structure\OPF\DublinCore;
 use Symfony\Component\HttpFoundation\Response;
 use Craue\ConfigBundle\Util\Config;
@@ -82,26 +81,9 @@ class EntriesExport
      */
     public function exportAs($format)
     {
-        switch ($format) {
-            case 'epub':
-                return $this->produceEpub();
-
-            case 'mobi':
-                return $this->produceMobi();
-
-            case 'pdf':
-                return $this->producePDF();
-
-            case 'csv':
-                return $this->produceCSV();
-
-            case 'json':
-                return $this->produceJSON();
-
-            case 'xml':
-                return $this->produceXML();
-            case 'txt':
-                return $this->produceTXT();
+        $functionName = 'produce'.ucfirst($format);
+        if (method_exists($this, $functionName)) {
+            return $this->$functionName();
         }
 
         throw new \InvalidArgumentException(sprintf('The format "%s" is not yet supported.', $format));
@@ -186,7 +168,7 @@ class EntriesExport
                 'Content-Disposition' => 'attachment; filename="'.$this->title.'.epub"',
                 'Content-Transfer-Encoding' => 'binary',
             )
-        )->send();
+        );
     }
 
     /**
@@ -236,13 +218,13 @@ class EntriesExport
                 'Content-Disposition' => 'attachment; filename="'.$this->title.'.mobi"',
                 'Content-Transfer-Encoding' => 'binary',
             )
-        )->send();
+        );
     }
 
     /**
      * Use TCPDF to dump a .pdf file.
      */
-    private function producePDF()
+    private function producePdf()
     {
         $pdf = new \TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
 
@@ -290,13 +272,13 @@ class EntriesExport
                 'Content-Disposition' => 'attachment; filename="'.$this->title.'.pdf"',
                 'Content-Transfer-Encoding' => 'binary',
             )
-        )->send();
+        );
     }
 
     /**
      * Inspired from CsvFileDumper.
      */
-    private function produceCSV()
+    private function produceCsv()
     {
         $delimiter = ';';
         $enclosure = '"';
@@ -333,10 +315,10 @@ class EntriesExport
                 'Content-Disposition' => 'attachment; filename="'.$this->title.'.csv"',
                 'Content-Transfer-Encoding' => 'UTF-8',
             )
-        )->send();
+        );
     }
 
-    private function produceJSON()
+    private function produceJson()
     {
         return Response::create(
             $this->prepareSerializingContent('json'),
@@ -346,10 +328,10 @@ class EntriesExport
                 'Content-Disposition' => 'attachment; filename="'.$this->title.'.json"',
                 'Content-Transfer-Encoding' => 'UTF-8',
             )
-        )->send();
+        );
     }
 
-    private function produceXML()
+    private function produceXml()
     {
         return Response::create(
             $this->prepareSerializingContent('xml'),
@@ -359,16 +341,18 @@ class EntriesExport
                 'Content-Disposition' => 'attachment; filename="'.$this->title.'.xml"',
                 'Content-Transfer-Encoding' => 'UTF-8',
             )
-        )->send();
+        );
     }
 
-    private function produceTXT()
+    private function produceTxt()
     {
         $content = '';
+        $bar = str_repeat('=', 100);
         foreach ($this->entries as $entry) {
-            $content .= $entry->getTitle();
-            $content .= strip_tags($entry->getContent());
+            $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";
         }
+
         return Response::create(
             $content,
             200,
@@ -377,10 +361,9 @@ class EntriesExport
                 'Content-Disposition' => 'attachment; filename="'.$this->title.'.txt"',
                 'Content-Transfer-Encoding' => 'UTF-8',
             )
-        )->send();
+        );
     }
 
-
     /**
      * Return a Serializer object for producing processes that need it (JSON & XML).
      *