$entry = $this->wallabag->store->retrieveOneById($entryID, $this->wallabag->user->getId());
$this->entries = array($entry);
$this->bookTitle = $entry['title'];
- $this->bookFileName = substr($this->bookTitle, 0, 200);
+ $this->bookFileName = str_replace('/', '_', substr($this->bookTitle, 0, 200));
$this->author = preg_replace('#^w{3}.#', '', Tools::getdomain($entry["url"])); # if only one article, set author to domain name (we strip the eventual www part)
Tools::logm('Producing ebook from article ' . $this->bookTitle);
break;
public function produceEpub()
{
Tools::logm('Starting to produce ePub 3 file');
+
+ try {
+
$content_start =
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
. "<html xmlns=\"http://www.w3.org/1999/xhtml\" xmlns:epub=\"http://www.idpf.org/2007/ops\">\n"
$fullTitle = "<h1> " . $this->bookTitle . "</h1>\n";
- $book->setCoverImage("Cover.png", file_get_contents("themes/baggy/img/apple-touch-icon-152.png"), "image/png", $fullTitle);
+ $book->setCoverImage("Cover.png", file_get_contents("themes/_global/img/appicon/apple-touch-icon-152.png"), "image/png", $fullTitle);
$cover = $content_start . '<div style="text-align:center;"><p>' . _('Produced by wallabag with PHPePub') . '</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>' . $bookEnd;
$book->finalize();
$zipData = $book->sendBook($this->bookFileName);
Tools::logm('Ebook produced');
+ }
+ catch (Exception $e) {
+ Tools::logm('PHPePub has encountered an error : '.$e->getMessage());
+ $this->wallabag->messages->add('e', $e->getMessage());
+ }
}
}
* @author Sander Kromwijk
*/
- public function produceMobi($sendByMail = FALSE)
+ public function produceMobi()
{
-
+ try {
Tools::logm('Starting to produce Mobi file');
$mobi = new MOBI();
$content = new MOBIFile();
# introduction
$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->appendImage(imagecreatefrompng("themes/_global/img/appicon/apple-touch-icon-152.png"));
$content->appendPageBreak();
Tools::logm('Adding actual content...');
}
$mobi->setContentProvider($content);
- if (!$sendByMail) {
- // we offer file to download
- $mobi->download($this->bookFileName.'.mobi');
- Tools::logm('Mobi file produced');
- }
- else {
- ## ##
- # Not working yet !!! #
- ## ##
- // we send file to kindle
-
- Tools::logm('Preparing to send file by email');
-
- $error = FALSE;
- # testing Mail function
- if (!function_exists('mail')) {
- $error = _("Mail function is disabled. You can't send emails from your server");
- }
+ // 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);
- $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'))
- {
- $error = _("You didn't set your kindle's email adress !");
- }
- if (!$error) {
- mail($this->wallabag->user->getConfigValue('kindleemail'), '[wallabag] ' . $this->bookTitle, "", $header );
- $messages->add('s', _('The email has been sent to your kindle !'));
- Tools::logm('Email sent');
- } else {
- $messages->add('e', $error);
- Tools::logm($error);
- }
+ // 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());
}
}
}
{
Tools::logm('Starting to produce PDF file');
-
+ @define ('K_TCPDF_THROW_EXCEPTION_ERROR', TRUE);
+ try {
$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
Tools::logm('Filling metadata for PDF...');
$pdf->SetCreator(PDF_CREATOR);
- $pdf->SetAuthor('');
+ $pdf->SetAuthor('wallabag');
$pdf->SetTitle($this->bookTitle);
- $pdf->SetSubject('TCPDF Tutorial');
- $pdf->SetKeywords('TCPDF, PDF, example, test, guide');
+ $pdf->SetSubject('Articles via wallabag');
+ $pdf->SetKeywords('wallabag');
Tools::logm('Adding introduction...');
$pdf->AddPage();
$intro = '<h1>' . $this->bookTitle . '</h1><div style="text-align:center;" >
<p>' . _('Produced by wallabag with tcpdf') . '</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>
- <img src="themes/baggy/img/apple-touch-icon-152.png" /></div>';
+ <img src="themes/_global/img/appicon/apple-touch-icon-152.png" /></div>';
$pdf->writeHTMLCell(0, 0, '', '', $intro, 0, 1, 0, true, '', true);
$i = 1;
Tools::logm('Adding actual content...');
foreach ($this->entries as $item) {
+ $tags = $this->wallabag->store->retrieveTagsByEntry($entry['id']);
+ foreach ($tags as $tag) {
+ $pdf->SetKeywords($tag['value']);
+ }
$pdf->AddPage();
$html = '<h1>' . $item['title'] . '</h1>';
$html .= $item['content'];
$pdf->writeHTMLCell(0, 0, '', '', $html, 0, 1, 0, true, '', true);
- $i = $i+1;
}
// set image scale factor
$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);
-
-
- $pdf->Output($this->bookFileName, 'FD');
+ $pdf->Output($this->bookFileName . '.pdf', 'FD');
+ }
+ catch (Exception $e) {
+ Tools::logm('TCPDF has encountered an error : '.$e->getMessage());
+ $this->wallabag->messages->add('e', $e->getMessage());
+ }
}
-}
\ No newline at end of file
+}