mirror of
https://github.com/wallabag/wallabag.git
synced 2024-12-05 15:26:27 +00:00
132 lines
2.9 KiB
PHP
132 lines
2.9 KiB
PHP
|
<?php
|
||
|
//Reference: http://wiki.mobileread.com/wiki/MOBI
|
||
|
|
||
|
class EXTHHelper{
|
||
|
static function typeToText($type){
|
||
|
$types = self::$types;
|
||
|
if(isset($types[$type])){
|
||
|
return $types[$type];
|
||
|
}
|
||
|
return $type;
|
||
|
}
|
||
|
static function textToType($text){
|
||
|
$text = strtolower($text);
|
||
|
if(isset(self::$flippedTypes[$text])){
|
||
|
return self::$flippedTypes[$text];
|
||
|
}
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
static function convert($n, $size){
|
||
|
$mask = 0xFF;
|
||
|
$out = "";
|
||
|
for($i = 0; $i < $size; $i++){
|
||
|
$out = chr(($n & $mask) >> (8*$i)).$out;
|
||
|
$mask = $mask << 8;
|
||
|
}
|
||
|
return $out;
|
||
|
}
|
||
|
|
||
|
static function getRightRepresentation($type, $value){
|
||
|
if($type >= 100 && $type < 200){
|
||
|
return $value;
|
||
|
}else{
|
||
|
return self::toHex($value);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
static function toHex($value){
|
||
|
$out = "";
|
||
|
for($i = 0, $len = strlen($value); $i < $len; $i++){
|
||
|
if($i > 0) $out .= " ";
|
||
|
$hex = dechex(ord($value[$i]));
|
||
|
if(strlen($hex) < 2) $hex = "0".$hex;
|
||
|
$out .= $hex;
|
||
|
}
|
||
|
return $out;
|
||
|
}
|
||
|
|
||
|
|
||
|
static private $types = array(
|
||
|
1 => "drm server id",
|
||
|
2 => "drm commerce id",
|
||
|
3 => "drm ebookbase book id",
|
||
|
100 => "author",
|
||
|
101 => "publisher",
|
||
|
102 => "imprint",
|
||
|
103 => "description",
|
||
|
104 => "isbn",
|
||
|
105 => "subject",
|
||
|
106 => "publishingdate",
|
||
|
107 => "review",
|
||
|
108 => "contributor",
|
||
|
109 => "rights",
|
||
|
110 => "subjectcode",
|
||
|
111 => "type",
|
||
|
112 => "source",
|
||
|
113 => "asin",
|
||
|
114 => "versionnumber",
|
||
|
115 => "sample",
|
||
|
116 => "startreading",
|
||
|
118 => "retail price",
|
||
|
119 => "retail price currency",
|
||
|
201 => "coveroffset",
|
||
|
202 => "thumboffset",
|
||
|
203 => "hasfakecover",
|
||
|
204 => "Creator Software",
|
||
|
205 => "Creator Major Version",
|
||
|
206 => "Creator Minor Version",
|
||
|
207 => "Creator Build Number",
|
||
|
208 => "watermark",
|
||
|
209 => "tamper proof keys",
|
||
|
300 => "fontsignature",
|
||
|
401 => "clippinglimit",
|
||
|
402 => "publisherlimit",
|
||
|
403 => "403",
|
||
|
404 => "ttsflag",
|
||
|
501 => "cdetype",
|
||
|
502 => "lastupdatetime",
|
||
|
503 => "updatedtitle"
|
||
|
);
|
||
|
static private $flippedTypes = array(
|
||
|
"drm server id" => 1,
|
||
|
"drm commerce id" => 2,
|
||
|
"drm ebookbase book id" => 3,
|
||
|
"author" => 100,
|
||
|
"publisher" => 101,
|
||
|
"imprint" => 102,
|
||
|
"description" => 103,
|
||
|
"isbn" => 104,
|
||
|
"subject" => 105,
|
||
|
"publishingdate" => 106,
|
||
|
"review" => 107,
|
||
|
"contributor" => 108,
|
||
|
"rights" => 109,
|
||
|
"subjectcode" => 110,
|
||
|
"type" => 111,
|
||
|
"source" => 112,
|
||
|
"asin" => 113,
|
||
|
"versionnumber" => 114,
|
||
|
"sample" => 115,
|
||
|
"startreading" => 116,
|
||
|
"retail price" => 118,
|
||
|
"retail price currency" => 119,
|
||
|
"coveroffset" => 201,
|
||
|
"thumboffset" => 202,
|
||
|
"hasfakecover" => 203,
|
||
|
"Creator Software" => 204,
|
||
|
"Creator Major Version" => 205,
|
||
|
"Creator Minor Version" => 206,
|
||
|
"Creator Build Number" => 207,
|
||
|
"watermark" => 208,
|
||
|
"tamper proof keys" => 209,
|
||
|
"fontsignature" => 300,
|
||
|
"clippinglimit" => 401,
|
||
|
"publisherlimit" => 402,
|
||
|
"403" => 403,
|
||
|
"ttsflag" => 404,
|
||
|
"cdetype" => 501,
|
||
|
"lastupdatetime" => 502,
|
||
|
"updatedtitle" => 503
|
||
|
);
|
||
|
}
|