1
|
|
|
<?php |
2
|
|
|
/** |
3
|
|
|
* COPS (Calibre OPDS PHP Server) class file |
4
|
|
|
* |
5
|
|
|
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html) |
6
|
|
|
* @author At Libitum <[email protected]> |
7
|
|
|
*/ |
8
|
|
|
|
9
|
|
View Code Duplication |
class Publisher extends Base |
|
|
|
|
10
|
|
|
{ |
11
|
|
|
const ALL_PUBLISHERS_ID = "cops:publishers"; |
|
|
|
|
12
|
|
|
const PUBLISHERS_COLUMNS = "publishers.id as id, publishers.name as name, count(*) as count"; |
|
|
|
|
13
|
|
|
const SQL_ALL_PUBLISHERS = "select {0} from publishers, books_publishers_link where publishers.id = publisher group by publishers.id, publishers.name order by publishers.name"; |
|
|
|
|
14
|
|
|
const SQL_PUBLISHERS_FOR_SEARCH = "select {0} from publishers, books_publishers_link where publishers.id = publisher and upper (publishers.name) like ? group by publishers.id, publishers.name order by publishers.name"; |
|
|
|
|
15
|
|
|
|
16
|
|
|
|
17
|
|
|
public $id; |
18
|
|
|
public $name; |
19
|
|
|
|
20
|
12 |
|
public function __construct($post) { |
21
|
12 |
|
$this->id = $post->id; |
22
|
12 |
|
$this->name = $post->name; |
23
|
12 |
|
} |
24
|
|
|
|
25
|
10 |
|
public function getUri () { |
26
|
10 |
|
return "?page=".parent::PAGE_PUBLISHER_DETAIL."&id=$this->id"; |
|
|
|
|
27
|
|
|
} |
28
|
|
|
|
29
|
7 |
|
public function getEntryId () { |
30
|
7 |
|
return self::ALL_PUBLISHERS_ID.":".$this->id; |
|
|
|
|
31
|
|
|
} |
32
|
|
|
|
33
|
18 |
|
public static function getCount() { |
34
|
|
|
// str_format (localize("publishers.alphabetical", count(array)) |
|
|
|
|
35
|
18 |
|
return parent::getCountGeneric ("publishers", self::ALL_PUBLISHERS_ID, parent::PAGE_ALL_PUBLISHERS); |
|
|
|
|
36
|
|
|
} |
37
|
|
|
|
38
|
5 |
|
public static function getPublisherByBookId ($bookId) { |
39
|
5 |
|
$result = parent::getDb ()->prepare('select publishers.id as id, name |
|
|
|
|
40
|
|
|
from books_publishers_link, publishers |
41
|
|
|
where publishers.id = publisher and book = ?'); |
42
|
5 |
|
$result->execute (array ($bookId)); |
43
|
5 |
|
if ($post = $result->fetchObject ()) { |
44
|
5 |
|
return new Publisher ($post); |
45
|
|
|
} |
46
|
|
|
return NULL; |
47
|
|
|
} |
48
|
|
|
|
49
|
1 |
|
public static function getPublisherById ($publisherId) { |
50
|
1 |
|
$result = parent::getDb ()->prepare('select id, name |
|
|
|
|
51
|
|
|
from publishers where id = ?'); |
52
|
1 |
|
$result->execute (array ($publisherId)); |
53
|
1 |
|
if ($post = $result->fetchObject ()) { |
54
|
1 |
|
return new Publisher ($post); |
55
|
|
|
} |
56
|
|
|
return NULL; |
57
|
|
|
} |
58
|
|
|
|
59
|
2 |
|
public static function getAllPublishers() { |
60
|
2 |
|
return Base::getEntryArrayWithBookNumber (self::SQL_ALL_PUBLISHERS, self::PUBLISHERS_COLUMNS, array (), "Publisher"); |
|
|
|
|
61
|
|
|
} |
62
|
|
|
|
63
|
23 |
|
public static function getAllPublishersByQuery($query) { |
64
|
23 |
|
return Base::getEntryArrayWithBookNumber (self::SQL_PUBLISHERS_FOR_SEARCH, self::PUBLISHERS_COLUMNS, array ('%' . $query . '%'), "Publisher"); |
|
|
|
|
65
|
|
|
} |
66
|
|
|
} |
67
|
|
|
|
Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.
You can also find more detailed suggestions in the “Code” section of your repository.