diff --git a/book.php b/book.php index 931997b..ed5aab0 100644 --- a/book.php +++ b/book.php @@ -166,6 +166,17 @@ class Book extends Base { return $this->datas; } + public function getDataById ($idData) + { + foreach ($this->getDatas () as $data) { + if ($data->id == $idData) { + return $data; + } + } + return NULL; + } + + public function getTagsName () { $tagList = null; foreach ($this->getTags () as $tag) { @@ -230,14 +241,8 @@ class Book extends Base { } 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); - } + $data = $this->getDataById ($idData); + $file = $data->name . "." . strtolower ($data->format); } if ($relative) @@ -340,13 +345,16 @@ where books.id = ?'); } public static function getBookByDataId($dataId) { - $result = parent::getDb ()->prepare('select ' . self::BOOK_COLUMNS . ' + $result = parent::getDb ()->prepare('select ' . self::BOOK_COLUMNS . ', data.name, data.format from data, books ' . self::SQL_BOOKS_LEFT_JOIN . ' where data.book = books.id and data.id = ?'); $result->execute (array ($dataId)); while ($post = $result->fetchObject ()) { $book = new Book ($post); + $data = new Data ($post, $book); + $data->id = $dataId; + $book->datas = array ($data); return $book; } return NULL; diff --git a/data.php b/data.php index 6869636..b66c8b6 100644 --- a/data.php +++ b/data.php @@ -58,7 +58,11 @@ class Data extends Base { } public function getMimeType () { - return self::$mimetypes [$this->extension]; + if ($this->isKnownType ()) { + return self::$mimetypes [$this->extension]; + } else { + return "application/octet-stream"; + } } public function getFilename () { diff --git a/fetch.php b/fetch.php index cf60a68..4c8309b 100644 --- a/fetch.php +++ b/fetch.php @@ -87,7 +87,7 @@ break; } $file = $book->getFilePath ($type, $idData, true); - header('Content-Type: application/octet-stream'); + header('Content-Type: ' . $book->getDataById ($idData)->getMimeType ()); header('Content-Disposition: attachment; filename="' . basename ($file) . '"'); header ($config['cops_x_accel_redirect'] . ": " . $config['calibre_internal_directory'] . $file); ?> \ No newline at end of file