Commit | Line | Data |
---|---|---|
6706658b S |
1 | <?php |
2 | namespace dns\page; | |
01c0ad42 | 3 | use dns\system\api\idna\idna_convert; |
6706658b S |
4 | use dns\system\DNS; |
5 | use dns\system\User; | |
6 | ||
7 | /** | |
8 | * @author Jan Altensen (Stricted) | |
9 | * @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php> | |
d4779364 | 10 | * @copyright 2014-2016 Jan Altensen (Stricted) |
6706658b S |
11 | */ |
12 | class IndexPage extends AbstractPage { | |
13 | public $activeMenuItem = 'index'; | |
14 | ||
15 | public function prepare() { | |
16 | $domains = array(); | |
17 | $soaIDs = User::getAccessibleDomains(); | |
18 | $idna = new idna_convert(); | |
19 | ||
20 | $sortField = "id"; | |
21 | $sortOrder = "ASC"; | |
22 | $sqlOrderBy = ""; | |
23 | $validSortFields = array('id', 'origin', 'serial'); | |
24 | ||
25 | if (isset($_GET['sortField'])) { | |
26 | if (in_array($_GET['sortField'], $validSortFields)) { | |
27 | $sortField = $_GET['sortField']; | |
28 | } | |
29 | } | |
30 | ||
31 | if (isset($_GET['sortOrder'])) { | |
32 | if ($_GET['sortOrder'] == "ASC" || $_GET['sortOrder'] == "DESC") { | |
33 | $sortOrder = $_GET['sortOrder']; | |
34 | } | |
35 | } | |
36 | ||
37 | if (!empty($sortField) && !empty($sortField)) { | |
38 | $sqlOrderBy = $sortField." ".$sortOrder; | |
39 | } | |
40 | ||
41 | $pageNo = 1; | |
42 | if (isset($_GET['pageNo']) && !empty($_GET['pageNo'])) { | |
43 | $pageNo = intval($_GET['pageNo']); | |
44 | } | |
45 | ||
46 | $itemsPerPage = 20; | |
47 | $pages = 0; | |
48 | ||
49 | $sqlLimit = $itemsPerPage; | |
50 | $sqlOffset = ($pageNo - 1) * $itemsPerPage; | |
51 | $pages = intval(ceil(count($soaIDs) / $itemsPerPage)); | |
52 | ||
53 | if (count($soaIDs) > 0) { | |
54 | $sql = "SELECT * FROM dns_soa WHERE id IN (".str_repeat('?, ', count($soaIDs) - 1). "?)".(!empty($sqlOrderBy) ? " ORDER BY ".$sqlOrderBy : '')." LIMIT " . $sqlLimit . " OFFSET " . $sqlOffset; | |
55 | $res = DNS::getDB()->query($sql, $soaIDs); | |
56 | while ($row = DNS::getDB()->fetch_array($res)) { | |
57 | $sql2 = "SELECT count(*) as count FROM dns_rr WHERE zone = ?"; | |
58 | $res2 = DNS::getDB()->query($sql2, array($row['id'])); | |
59 | $row2 = DNS::getDB()->fetch_array($res2); | |
60 | $row['origin'] = $idna->decode($row['origin']); | |
61 | $row['rrc'] = $row2['count']; | |
62 | $domains[] = $row; | |
63 | } | |
64 | } | |
65 | ||
66 | DNS::getTPL()->assign(array( | |
67 | 'domains' => $domains, | |
68 | 'pageNo' => $pageNo, | |
69 | 'pages' => $pages, | |
70 | 'count' => count($soaIDs), | |
71 | 'sortField' => $sortField, | |
72 | 'sortOrder' => $sortOrder | |
73 | )); | |
74 | } | |
75 | } |