]> git.immae.eu Git - github/wallabag/wallabag.git/commitdiff
send2kindle
authortcit <tcit@tcit.fr>
Thu, 24 Jul 2014 23:33:31 +0000 (01:33 +0200)
committertcit <tcit@tcit.fr>
Thu, 24 Jul 2014 23:33:31 +0000 (01:33 +0200)
inc/poche/Routing.class.php
inc/poche/WallabagEBooks.class.php

index 83eabf1989bf2e752730c6e98143a26910db9e0f..ec33432ca63c33c6cd89521afc2d5a8c75460f60 100644 (file)
@@ -118,6 +118,10 @@ class Routing
             $mobi = new WallabagMobi($this->wallabag, $_GET['method'], $_GET['value']);
             $mobi->prepareData();
             $mobi->produceMobi();
+        } elseif (isset($_GET['send2kindle'])) {
+            $mobi = new WallabagMobi($this->wallabag, $_GET['method'], $_GET['value']);
+            $mobi->prepareData();
+            $mobi->produceMobi(TRUE);
         } elseif (isset($_GET['pdf'])) {
             $pdf = new WallabagPDF($this->wallabag, $_GET['method'], $_GET['value']);
             $pdf->prepareData();
index 2b18b718caa2c6c23e2e322fbe4fbe6f823982ff..a12befa8ba81b63afa8e670bb8f1dc2aaf48ed68 100644 (file)
@@ -151,19 +151,21 @@ class WallabagMobi extends WallabagEBooks
        * @author Sander Kromwijk
        */
 
-       public function produceMobi($send = FALSE)
+    private $_kindle_email;
+
+       public function produceMobi($sendByMail = FALSE)
        {
 
         $mobi = new MOBI();
-            
         $content = new MOBIFile();
+
+        $messages = new Messages(); // for later
             
         $content->set("title", $this->bookTitle);
         $content->set("author", "wallabag");
         $content->set("subject", $this->bookTitle);
 
         # introduction
-        //$content->appendChapterTitle("Cover");
         $content->appendParagraph('<div style="text-align:center;" ><p>' . _('Produced by wallabag with PHPMobi') . '</p><p>'. _('Please open <a href="https://github.com/wallabag/wallabag/issues" >an issue</a> if you have trouble with the display of this E-Book on your device.') . '</p></div>');
         $content->appendImage(imagecreatefrompng("themes/baggy/img/apple-touch-icon-152.png"));
         $content->appendPageBreak();
@@ -175,7 +177,56 @@ class WallabagMobi extends WallabagEBooks
         }
         $mobi->setContentProvider($content);
 
-        $mobi->download($this->bookFileName.".mobi");
+        if (!$sendByMail) {
+            // we offer file to download
+            $mobi->download($this->bookFileName.'.mobi');
+        }
+        else {
+            // we send file to kindle
+
+            $char_in = array('/', '.', ',', ':', '|'); # we sanitize filename to avoid conflicts with special characters (for instance, / goes for a directory)
+            $mobiExportName = preg_replace('/\s+/', '-', str_replace($char_in, '-', $this->bookFileName . '.mobi'));
+            
+            $file = 'cache/' . $mobiExportName;
+            $mobi->save($file);
+
+            $file_size = filesize($file);
+            $filename = basename($file);
+            $handle = fopen($file, "r");
+            $content = fread($handle, $file_size);
+            fclose($handle);
+            $content = chunk_split(base64_encode($content));
+
+            $uid = md5(uniqid(time())); 
+
+            //generate header for mail
+            $header  = "From: wallabag <". $this->wallabag->user->email .">\r\n";        
+            $header .= "MIME-Version: 1.0\r\n";
+            $header .= "Content-Type: multipart/mixed; boundary=\"".$uid."\"\r\n\r\n";
+            $header .= "This is a multi-part message in MIME format.\r\n";
+            $header .= "--".$uid."\r\n";
+            $header .= "Content-type:text/plain; charset=iso-8859-1\r\n";
+            $header .= "Content-Transfer-Encoding: 7bit\r\n\r\n";
+            $header .= "send via wallabag\r\n\r\n";
+            $header .= "--".$uid."\r\n";
+            $header .= "Content-Type: application/x-mobipocket-ebook; name=\"".$filename."\"\r\n";
+            $header .= "Content-Transfer-Encoding: base64\r\n";
+            $header .= "Content-Disposition: attachment; filename=\"".$filename."\"\r\n\r\n";
+            $header .= $content."\r\n\r\n";
+            $header .= "--".$uid."--";
+
+            # trying to get the kindle email adress
+            if ($this->wallabag->user->getConfigValue('kindleemail')) 
+            {
+                #do a try...exeption here
+                mail( $this->wallabag->user->getConfigValue('kindleemail'), '[wallabag] ' . $this->bookTitle, "", $header );
+                $messages->add('s', _('The email has been sent to your kindle !'));
+            }
+            else
+            {
+                $messages->add('e', _('You didn\'t set your kindle\'s email adress !'));
+            }
+        }
     }
 }