diff --git a/custom_column.php b/custom_column.php new file mode 100644 index 0000000..a876a71 --- /dev/null +++ b/custom_column.php @@ -0,0 +1,93 @@ + + */ + +require_once('base.php'); + +class CustomColumn extends Base { + const ALL_CUSTOMS_ID = "calibre:custom"; + + public $id; + public $name; + public $customId; + + public function __construct($pid, $pname, $pcustomId) { + $this->id = $pid; + $this->name = $pname; + $this->customId = $pcustomId; + } + + public function getUri () { + return "?page=".parent::PAGE_CUSTOM_DETAIL."&custom={$this->customId}&id={$this->id}"; + } + + public function getEntryId () { + return self::ALL_CUSTOMS_ID.":".$this->customId.":".$this->id; + } + + public static function getTableName ($customId) { + return "custom_column_{$customId}"; + } + + public static function getTableLinkName ($customId) { + return "books_custom_column_{$customId}_link"; + } + + public static function getTableLinkColumn ($customId) { + return "value"; + } + + public static function getAllCustomsId ($customId) { + return self::ALL_CUSTOMS_ID . ":" . $customId; + } + + public static function getUriAllCustoms ($customId) { + return "?page=" . parent::PAGE_ALL_CUSTOMS . "&custom={$customId}"; + } + + public static function getCount($customId) { + $nCustoms = parent::getDb ()->query('select count(*) from ' . self::getTableName ($customId))->fetchColumn(); + $entry = new Entry (localize("tags.title"), self::getAllCustomsId ($customId), + str_format (localize("tags.alphabetical"), $nCustoms), "text", + array ( new LinkNavigation (self::getUriAllCustoms ($customId)))); + return $entry; + } + + public static function getCustomById ($customId, $id) { + $test = 'select id, value as name from ' . self::getTableName ($customId) . ' where id = ?'; + $result = parent::getDb ()->prepare('select id, value as name from ' . self::getTableName ($customId) . ' where id = ?'); + $result->execute (array ($id)); + if ($post = $result->fetchObject ()) { + return new CustomColumn ($post->id, $post->name, $customId); + } + return NULL; + } + + public static function getAllCustoms($customId) { + $test = str_format ("{0} - {1} - {2}", self::getTableName ($customId), self::getTableLinkName ($customId), self::getTableLinkColumn ($customId)); + $test = str_format ('select {0}.id as id, {0}.value as name, count(*) as count +from {0}, {1} +where {0}.id = {1}.{2} +group by {0}.id, {0}.value +order by {0}.value', self::getTableName ($customId), self::getTableLinkName ($customId), self::getTableLinkColumn ($customId)); + $result = parent::getDb ()->query(str_format ('select {0}.id as id, {0}.value as name, count(*) as count +from {0}, {1} +where {0}.id = {1}.{2} +group by {0}.id, {0}.value +order by {0}.value', self::getTableName ($customId), self::getTableLinkName ($customId), self::getTableLinkColumn ($customId))); + $entryArray = array(); + while ($post = $result->fetchObject ()) + { + $customColumn = new CustomColumn ($post->id, $post->name, $customId); + array_push ($entryArray, new Entry ($customColumn->name, $customColumn->getEntryId (), + str_format (localize("bookword", $post->count), $post->count), "text", + array ( new LinkNavigation ($customColumn->getUri ())))); + } + return $entryArray; + } +} +?> \ No newline at end of file