- 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 !'));
- }
+ // the browser inside Kindle Devices doesn't likes special caracters either, we limit to A-z/0-9
+ $this->bookFileName = preg_replace('/[^A-Za-z0-9\-]/', '', $this->bookFileName);
+
+ // we offer file to download
+ $mobi->download($this->bookFileName.'.mobi');
+ Tools::logm('Mobi file produced');
+ }
+ catch (Exception $e) {
+ Tools::logm('PHPMobi has encountered an error : '.$e->getMessage());
+ $this->wallabag->messages->add('e', $e->getMessage());