blob: 4cdd72a2460a658670a8de65207109d715cf0309 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
|
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="lib/bootstrap/v3/css/bootstrap.min.css" rel="stylesheet" media="screen">
<link href="lib/bootstrap/v3/css/bootstrap-theme.min.css" rel="stylesheet" media="screen">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script src="lib/bootstrap/v3/js/jquery.js"></script>
<script src="lib/bootstrap/v3/js/bootstrap.min.js"></script>
<script src="lib/holder.min.js"></script>
<title>The Epube</title>
<link type="text/css" rel="stylesheet" media="screen" href="css/index.css" />
</head>
<body>
<?php
$query = $_REQUEST["query"];
?>
<div class="navbar navbar-default navbar-static-top">
<div class="container">
<div class="navbar-header">
<span class="navbar-brand"><a href="?">The Epube</a> (<?php echo $_SERVER["PHP_AUTH_USER"] ?>)</span>
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#nav-collapse" aria-expanded="false">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
</div>
<div class="collapse navbar-collapse" id="nav-collapse">
<ul class="nav navbar-nav">
</ul>
<form class="navbar-form navbar-right">
<input type="text" name="query" class="form-control"
value="<?php echo htmlspecialchars($query) ?>">
<button type="submit" class="btn btn-default">Search</button>
</form>
</div>
</div>
</div>
<div class="container">
<?php
require_once "config.php";
require_once "include/functions.php";
$owner = db_escape_string($_SERVER["PHP_AUTH_USER"]);
if (!$owner) {
print "<h1>Not authenticated</h1>";
die;
}
$db = new SQLite3(CALIBRE_DB, SQLITE3_OPEN_READONLY);
if ($query) {
$query_esc = db_escape_string($query);
$search_qpart = "(LOWER(author_sort) LIKE LOWER('%$query_esc%') OR LOWER(title) LIKE LOWER('%$query_esc%'))";
} else {
$search_qpart = "1";
}
$limit = 60;
$offset = (int) $_REQUEST["offset"];
$result = $db->query("SELECT books.*,
(SELECT id FROM data WHERE book = books.id AND format = 'EPUB' LIMIT 1) AS epub_id FROM books
WHERE $search_qpart ORDER BY books.id DESC LIMIT $limit OFFSET $offset");
print "<div class='row'>";
while ($line = $result->fetchArray(SQLITE3_ASSOC)) {
$cover_link = "backend.php?" . http_build_query(["op" => "cover", "id" => $line["id"]]);
$author_link = "?" . http_build_query(["query" => $line["author_sort"]]);
$read_link = $line["epub_id"] ? "read.html?" . http_build_query(["id" => $line["epub_id"]]) : "";
print "<div class='col-xs-6 col-md-2' style='height : 250px'>";
print "<div class='thumb'>";
if ($read_link) print "<a href=\"$read_link\">";
if ($line["has_cover"]) {
print "<img src='$cover_link'>";
} else {
print "<img src='holder.js/120x180'>";
}
if ($read_link) print "</a>";
print "<div class='caption'>";
if ($read_link) {
print "<div><a href=\"$read_link\">" . $line["title"] . "</a></div>";
} else {
print "<div>" . $line["title"] . "</div>";
}
print "<div><a href=\"$author_link\">" . $line["author_sort"] . "</a></div>";
$data_result = $db->query("SELECT * FROM data WHERE book = " . $line["id"] . " LIMIT 3");
while ($data_line = $data_result->fetchArray(SQLITE3_ASSOC)) {
if ($data_line["format"] != "ORIGINAL_EPUB") {
$download_link = "backend.php?op=download&id=" . $data_line["id"];
print "<a target=\"_blank\" href=\"$download_link\"><span class='label label-primary'>" . $data_line["format"] . "</span></a> ";
}
}
print "</div>";
print "</div>";
print "</div>";
}
?>
</div>
<?php
$prev_link = http_build_query(["query" => $query, "offset" => $offset > 0 ? $offset - $limit : 0]);
$next_link = http_build_query(["query" => $query, "offset" => $offset + $limit]);
?>
<ul class="pager">
<li class="previous"><a href="?<?php echo $prev_link ?>">← Previous</a></li>
<li class="next"><a href="?<?php echo $next_link ?>">Next→</a></li>
</ul>
</div>
</body>
</html>
|