From 9a8e9bacae1c299851e37b0793edbf0c96aed419 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Lucas?= Date: Sat, 23 Jun 2012 22:11:13 +0200 Subject: [PATCH] Better handling of book format inside Calibre. Not tested enough --- book.php | 52 ++++++++++++++++++++++++++++++++++------------------ fetch.php | 3 ++- 2 files changed, 36 insertions(+), 19 deletions(-) diff --git a/book.php b/book.php index ea1e798..c8d210e 100644 --- a/book.php +++ b/book.php @@ -139,32 +139,48 @@ class Book extends Base { } } - public function getFilePath ($extension, $relative = false) + public function getFilePath ($extension, $idData = NULL, $relative = false) { - if ($handle = opendir($this->path)) { - while (false !== ($file = readdir($handle))) { - if (preg_match ('/' . $extension . '$/', $file)) { - if ($relative) - { - return $this->relativePath."/".$file; - } - else - { - return $this->path."/".$file; - } - } + $file = NULL; + if ($extension == "jpg") + { + $file = "cover.jpg"; + } + else + { + $result = parent::getDb ()->prepare('select format, name + from data where id = ?'); + $result->execute (array ($idData)); + + while ($post = $result->fetchObject ()) + { + $file = $post->name . "." . strtolower ($post->format); } } - return NULL; + + if ($relative) + { + return $this->relativePath."/".$file; + } + else + { + return $this->path."/".$file; + } } - private function getLink ($type, $mime, $rel, $filename, $title = NULL) + private function getLink ($type, $mime, $rel, $filename, $idData, $title = NULL) { global $config; + $textData = ""; + if (!is_null ($idData)) + { + $textData = "&data=" . $idData; + } + if (preg_match ('/^\//', $config['calibre_directory'])) { - return new Link ("fetch.php?id=$this->id&type=" . $type, $mime, $rel, $title); + return new Link ("fetch.php?id=$this->id" . $textData . "&type=" . $type, $mime, $rel, $title); } else { @@ -179,7 +195,7 @@ class Book extends Base { if ($this->hasCover) { - array_push ($linkArray, $this->getLink ("jpg", "image/jpeg", Link::OPDS_IMAGE_TYPE, "cover.jpg")); + array_push ($linkArray, $this->getLink ("jpg", "image/jpeg", Link::OPDS_IMAGE_TYPE, "cover.jpg", NULL)); $height = "50"; if (preg_match ('/feed.php/', $_SERVER["SCRIPT_NAME"])) { $height = $config['cops_opds_thumbnail_height']; @@ -200,7 +216,7 @@ from data where book = ?'); $ext = strtolower (str_replace ("ORIGINAL_", "", $post->format)); if (array_key_exists ($ext, self::$mimetypes)) { - array_push ($linkArray, $this->getLink ($ext, self::$mimetypes [$ext], Link::OPDS_ACQUISITION_TYPE, $post->name . "." . strtolower ($post->format), "Download")); + array_push ($linkArray, $this->getLink ($ext, self::$mimetypes [$ext], Link::OPDS_ACQUISITION_TYPE, $post->name . "." . strtolower ($post->format), $post->id, "Download")); $this->format [$ext] = $post->name . "." . strtolower ($post->format); } } diff --git a/fetch.php b/fetch.php index b81be61..5942283 100644 --- a/fetch.php +++ b/fetch.php @@ -17,6 +17,7 @@ $bookId = $_GET["id"]; $book = Book::getBookById($bookId); $type = getURLParam ("type", "jpg"); + $idData = getURLParam ("data", NULL); switch ($type) { @@ -77,7 +78,7 @@ header("Content-type: " . Book::$mimetypes[$type]); break; } - $file = $book->getFilePath ($type, true); + $file = $book->getFilePath ($type, $idData, true); header('Content-Disposition: attachement; filename="' . basename ($file) . '"'); header ($config['cops_x_accel_redirect'] . ": " . $config['calibre_internal_directory'] . $file); ?> \ No newline at end of file