Move link handling in a seperate class
This commit is contained in:
parent
75e4362044
commit
4473037ae8
59
book.php
59
book.php
|
@ -10,6 +10,7 @@ require_once('base.php');
|
||||||
require_once('serie.php');
|
require_once('serie.php');
|
||||||
require_once('author.php');
|
require_once('author.php');
|
||||||
require_once('tag.php');
|
require_once('tag.php');
|
||||||
|
require_once('data.php');
|
||||||
|
|
||||||
class Book extends Base {
|
class Book extends Base {
|
||||||
const ALL_BOOKS_UUID = "urn:uuid";
|
const ALL_BOOKS_UUID = "urn:uuid";
|
||||||
|
@ -27,15 +28,12 @@ class Book extends Base {
|
||||||
public $relativePath;
|
public $relativePath;
|
||||||
public $seriesIndex;
|
public $seriesIndex;
|
||||||
public $comment;
|
public $comment;
|
||||||
|
public $datas = NULL;
|
||||||
public $authors = NULL;
|
public $authors = NULL;
|
||||||
public $serie = NULL;
|
public $serie = NULL;
|
||||||
public $tags = NULL;
|
public $tags = NULL;
|
||||||
public $format = array ();
|
public $format = array ();
|
||||||
public static $mimetypes = array(
|
|
||||||
'epub' => 'application/epub+zip',
|
|
||||||
'mobi' => 'application/x-mobipocket-ebook',
|
|
||||||
'pdf' => 'application/pdf'
|
|
||||||
);
|
|
||||||
|
|
||||||
public function __construct($line) {
|
public function __construct($line) {
|
||||||
global $config;
|
global $config;
|
||||||
|
@ -109,6 +107,23 @@ class Book extends Base {
|
||||||
return $this->tags;
|
return $this->tags;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getDatas ()
|
||||||
|
{
|
||||||
|
if (is_null ($this->datas)) {
|
||||||
|
$this->datas = array ();
|
||||||
|
|
||||||
|
$result = parent::getDb ()->prepare('select id, format, name
|
||||||
|
from data where book = ?');
|
||||||
|
$result->execute (array ($this->id));
|
||||||
|
|
||||||
|
while ($post = $result->fetchObject ())
|
||||||
|
{
|
||||||
|
array_push ($this->datas, new Data ($post, $this));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $this->datas;
|
||||||
|
}
|
||||||
|
|
||||||
public function getTagsName () {
|
public function getTagsName () {
|
||||||
$tagList = null;
|
$tagList = null;
|
||||||
foreach ($this->getTags () as $tag) {
|
foreach ($this->getTags () as $tag) {
|
||||||
|
@ -168,26 +183,6 @@ class Book extends Base {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
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" . $textData . "&type=" . $type, $mime, $rel, $title);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return new Link (str_replace('%2F','/',rawurlencode ($this->path."/".$filename)), $mime, $rel, $title);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getLinkArray ()
|
public function getLinkArray ()
|
||||||
{
|
{
|
||||||
global $config;
|
global $config;
|
||||||
|
@ -195,7 +190,7 @@ class Book extends Base {
|
||||||
|
|
||||||
if ($this->hasCover)
|
if ($this->hasCover)
|
||||||
{
|
{
|
||||||
array_push ($linkArray, $this->getLink ("jpg", "image/jpeg", Link::OPDS_IMAGE_TYPE, "cover.jpg", NULL));
|
array_push ($linkArray, Data::getLink ($this, "jpg", "image/jpeg", Link::OPDS_IMAGE_TYPE, "cover.jpg", NULL));
|
||||||
$height = "50";
|
$height = "50";
|
||||||
if (preg_match ('/feed.php/', $_SERVER["SCRIPT_NAME"])) {
|
if (preg_match ('/feed.php/', $_SERVER["SCRIPT_NAME"])) {
|
||||||
$height = $config['cops_opds_thumbnail_height'];
|
$height = $config['cops_opds_thumbnail_height'];
|
||||||
|
@ -207,17 +202,11 @@ class Book extends Base {
|
||||||
array_push ($linkArray, new Link ("fetch.php?id=$this->id&height=" . $height, "image/jpeg", Link::OPDS_THUMBNAIL_TYPE));
|
array_push ($linkArray, new Link ("fetch.php?id=$this->id&height=" . $height, "image/jpeg", Link::OPDS_THUMBNAIL_TYPE));
|
||||||
}
|
}
|
||||||
|
|
||||||
$result = parent::getDb ()->prepare('select id, format, name
|
foreach ($this->getDatas () as $data)
|
||||||
from data where book = ?');
|
|
||||||
$result->execute (array ($this->id));
|
|
||||||
|
|
||||||
while ($post = $result->fetchObject ())
|
|
||||||
{
|
{
|
||||||
$ext = strtolower (str_replace ("ORIGINAL_", "", $post->format));
|
if ($data->isKnownType ())
|
||||||
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), $post->id, "Download"));
|
array_push ($linkArray, $data->getDataLink (Link::OPDS_ACQUISITION_TYPE, "Download"));
|
||||||
$this->format [$post->format] = array ($post->id, $post->name . "." . strtolower ($post->format));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
70
data.php
Normal file
70
data.php
Normal file
|
@ -0,0 +1,70 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* COPS (Calibre OPDS PHP Server) class file
|
||||||
|
*
|
||||||
|
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
|
||||||
|
* @author Sébastien Lucas <sebastien@slucas.fr>
|
||||||
|
*/
|
||||||
|
|
||||||
|
require_once('base.php');
|
||||||
|
|
||||||
|
class Data extends Base {
|
||||||
|
public $id;
|
||||||
|
public $name;
|
||||||
|
public $format;
|
||||||
|
public $realFormat;
|
||||||
|
public $extension;
|
||||||
|
public $book;
|
||||||
|
|
||||||
|
public static $mimetypes = array(
|
||||||
|
'epub' => 'application/epub+zip',
|
||||||
|
'mobi' => 'application/x-mobipocket-ebook',
|
||||||
|
'pdf' => 'application/pdf'
|
||||||
|
);
|
||||||
|
|
||||||
|
public function __construct($post, $book = null) {
|
||||||
|
$this->id = $post->id;
|
||||||
|
$this->name = $post->name;
|
||||||
|
$this->format = $post->format;
|
||||||
|
$this->realFormat = str_replace ("ORIGINAL_", "", $post->format);
|
||||||
|
$this->extension = strtolower ($this->realFormat);
|
||||||
|
$this->book = $book;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function isKnownType () {
|
||||||
|
return array_key_exists ($this->extension, self::$mimetypes);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getMimeType () {
|
||||||
|
return self::$mimetypes [$this->extension];
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getFilename () {
|
||||||
|
$this->name . "." . strtolower ($this->format);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getDataLink ($rel, $title = NULL) {
|
||||||
|
return self::getLink ($this->book, $this->extension, $this->getMimeType (), $rel, $this->getFilename (), $this->id, $title);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function getLink ($book, $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=$book->id" . $textData . "&type=" . $type, $mime, $rel, $title);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return new Link (str_replace('%2F','/',rawurlencode ($book->path."/".$filename)), $mime, $rel, $title);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
?>
|
Loading…
Reference in a new issue