From 2aaa7fbd1952057612cc7079dcf5d2082fef68e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Lucas?= Date: Wed, 15 Jan 2014 20:20:47 +0100 Subject: [PATCH] Fix the handling of kepub.epub. --- data.php | 9 ++++++++- test/bookTest.php | 7 ++++--- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/data.php b/data.php index b8118cb..33c5343 100644 --- a/data.php +++ b/data.php @@ -28,6 +28,7 @@ class Data extends Base { 'doc' => 'application/msword', 'epub' => 'application/epub+zip', 'fb2' => 'text/fb2+xml', + 'kepub' => 'application/epub+zip', 'kobo' => 'application/x-koboreader-ebook', 'mobi' => 'application/x-mobipocket-ebook', 'lit' => 'application/x-ms-reader', @@ -81,6 +82,10 @@ class Data extends Base { return $result; } + public function isEpubValidOnKobo () { + return $this->format == "EPUB" || $this->format == "KEPUB"; + } + public function getFilename () { return $this->name . "." . strtolower ($this->format); } @@ -112,7 +117,9 @@ class Data extends Base { { $database = ""; if (!is_null (GetUrlParam (DB))) $database = GetUrlParam (DB) . "/"; - if ($config['cops_provide_kepub'] == "1" && preg_match("/Kobo/", $_SERVER['HTTP_USER_AGENT'])) { + if ($config['cops_provide_kepub'] == "1" && + $this->isEpubValidOnKobo () && + preg_match("/Kobo/", $_SERVER['HTTP_USER_AGENT'])) { return "download/" . $this->id . "/" . $database . urlencode ($this->getUpdatedFilenameKepub ()); } else { return "download/" . $this->id . "/" . $database . urlencode ($this->getFilename ()); diff --git a/test/bookTest.php b/test/bookTest.php index 62108de..ef5ce58 100644 --- a/test/bookTest.php +++ b/test/bookTest.php @@ -264,6 +264,7 @@ class BookTest extends PHPUnit_Framework_TestCase $config['cops_provide_kepub'] = "1"; $_SERVER["HTTP_USER_AGENT"] = "Kobo"; $this->assertEquals ("download/20/Carroll%2C+Lewis+-+Alice%27s+Adventures+in+Wonderland.kepub.epub", $epub->getHtmlLink ()); + $this->assertEquals ("download/17/Alice%27s+Adventures+in+Wonderland+-+Lewis+Carroll.mobi", $mobi->getHtmlLink ()); $_SERVER["HTTP_USER_AGENT"] = "Firefox"; $this->assertEquals ("download/20/Alice%27s+Adventures+in+Wonderland+-+Lewis+Carroll.epub", $epub->getHtmlLink ()); $config['cops_use_url_rewriting'] = "0"; @@ -292,7 +293,7 @@ class BookTest extends PHPUnit_Framework_TestCase $this->assertFalse ($book->getDataFormat ("FB2")); } - + public function testGetMimeType () { $book = Book::getBookById(17); @@ -303,8 +304,8 @@ class BookTest extends PHPUnit_Framework_TestCase $this->assertEquals ("application/x-mobipocket-ebook", $data->getMimeType ()); $data = $book->getDataFormat ("PDF"); $this->assertEquals ("application/pdf", $data->getMimeType ()); - - // Alter a data to make a test for finfo_file if enabled + + // Alter a data to make a test for finfo_file if enabled $data->extension = "ico"; $data->format = "ICO"; $data->name = "favicon";