diff --git a/web/ajax.php b/web/ajax.php index 00c11df1..29acf569 100644 --- a/web/ajax.php +++ b/web/ajax.php @@ -128,10 +128,72 @@ if ($ui->smallletters('w', 9, 'get') == 'datatable') { $array['aaData'][] = array($row['logdate'], $username, str_replace($placeholders2, $replace2, str_replace($placeholders, $replace, $row['useraction'])), $ip); } + + // App server + } else if ($ui->smallletters('d', 9, 'get') =='appserver' and isset($admin_id) and isset($reseller_id) and isset($resellerLockupID) and $pa['roots']) { + + if ($reseller_id == 0) { + $query = $sql->prepare("SELECT COUNT(`id`) AS `amount` FROM `rserverdata`"); + $query->execute(); + } else { + $query = $sql->prepare("SELECT COUNT(`id`) AS `amount` FROM `rserverdata` AS r WHERE `resellerid`=:reseller_id OR EXISTS (SELECT 1 FROM `userdata` WHERE `resellerid`=:reseller_id AND `id`=r.`resellerid`)"); + $query->execute(array(':reseller_id' => $resellerLockupID)); + } + + $array['iTotalRecords'] = $query->fetchColumn(); + + if ($sSearch) { + if ($reseller_id == 0) { + $query = $sql->prepare("SELECT COUNT(`id`) AS `amount` FROM `rserverdata` WHERE `id` LIKE :search OR `ip` LIKE :search OR `description` LIKE :search"); + $query->execute(array(':search' => '%' . $sSearch . '%')); + } else { + $query = $sql->prepare("SELECT COUNT(`id`) AS `amount` FROM `rserverdata` AS r WHERE (`resellerid`=:reseller_id OR EXISTS (SELECT 1 FROM `userdata` WHERE `resellerid`=:reseller_id AND `id`=r.`resellerid`)) AND (`id` LIKE :search OR `ip` LIKE :search OR `description` LIKE :search)"); + $query->execute(array(':search' => '%' . $sSearch . '%',':reseller_id' => $resellerLockupID)); + } + $array['iTotalDisplayRecords'] = $query->fetchColumn(); + } else { + $array['iTotalDisplayRecords'] = $array['iTotalRecords']; + } + + $orderFields = array(0 => 'r.`ip`', 1 => 'r.`id`', 2 => 'r.`active`', 3 => 'r.`os`', 4 => '`gameserver_amount`', 5 => '`gameserver_ram`', 6 => 'r.`description`'); + + if (isset($orderFields[$iSortCol]) and is_array($orderFields[$iSortCol])) { + $orderBy = implode(' ' . $sSortDir . ', ', $orderFields[$iSortCol]) . ' ' . $sSortDir; + } else if (isset($orderFields[$iSortCol]) and !is_array($orderFields[$iSortCol])) { + $orderBy = $orderFields[$iSortCol] . ' ' . $sSortDir; + } else { + $orderBy = '`id` ASC'; + } + + if ($sSearch) { + if ($reseller_id == 0) { + $query = $sql->prepare("SELECT r.`id`,r.`ip`,r.`active`,r.`description`,r.`maxserver`,r.`ram`,r.`os`,(SELECT COUNT(1) AS `amount` FROM `gsswitch` g WHERE g.`rootID`=r.`id`) AS `gameserver_amount`,(SELECT SUM(`maxram`) AS `amount` FROM `gsswitch` g WHERE g.`rootID`=r.`id`) AS `gameserver_ram` FROM `rserverdata` r WHERE r.`id` LIKE :search OR r.`ip` LIKE :search OR r.`description` LIKE :search ORDER BY $orderBy LIMIT {$iDisplayStart},{$iDisplayLength}"); + $query->execute(array(':search' => '%' . $sSearch . '%')); + } else { + $query = $sql->prepare("SELECT r.`id`,r.`ip`,r.`active`,r.`description`,r.`maxserver`,r.`ram`,,r.`os`,(SELECT COUNT(1) AS `amount` FROM `gsswitch` g WHERE g.`rootID`=r.`id`) AS `gameserver_amount`,(SELECT SUM(`maxram`) AS `amount` FROM `gsswitch` g WHERE g.`rootID`=r.`id`) AS `gameserver_ram` FROM `rserverdata` r WHERE (r.`resellerid`=:reseller_id OR EXISTS (SELECT 1 FROM `userdata` WHERE `resellerid`=:reseller_id AND `id`=r.`resellerid`)) AND (r.`id` LIKE :search OR r.`ip` LIKE :search OR r.`description` LIKE :search) ORDER BY $orderBy LIMIT {$iDisplayStart},{$iDisplayLength}"); + $query->execute(array(':search' => '%' . $sSearch . '%', ':reseller_id' => $resellerLockupID)); + } + } else { + if ($reseller_id == 0) { + $query = $sql->prepare("SELECT r.`id`,r.`ip`,r.`active`,r.`description`,r.`maxserver`,r.`ram`,r.`os`,(SELECT COUNT(1) AS `amount` FROM `gsswitch` g WHERE g.`rootID`=r.`id`) AS `gameserver_amount`,(SELECT SUM(`maxram`) AS `amount` FROM `gsswitch` g WHERE g.`rootID`=r.`id`) AS `gameserver_ram` FROM `rserverdata` r ORDER BY $orderBy LIMIT {$iDisplayStart},{$iDisplayLength}"); + $query->execute(); + } else { + $query = $sql->prepare("SELECT r.`id`,r.`ip`,r.`active`,r.`description`,r.`maxserver`,r.`ram`,r.`os`,(SELECT COUNT(1) AS `amount` FROM `gsswitch` g WHERE g.`rootID`=r.`id`) AS `gameserver_amount`,(SELECT SUM(`maxram`) AS `amount` FROM `gsswitch` g WHERE g.`rootID`=r.`id`) AS `gameserver_ram` FROM `rserverdata` r WHERE r.`resellerid`=:reseller_id OR EXISTS (SELECT 1 FROM `userdata` WHERE `resellerid`=:reseller_id AND `id`=r.`resellerid`) ORDER BY $orderBy LIMIT {$iDisplayStart},{$iDisplayLength}"); + $query->execute(array(':reseller_id' => $resellerLockupID)); + } + } + + while ($row = $query->fetch(PDO::FETCH_ASSOC)) { + $array['aaData'][] = array($row['ip'], $row['id'], ($row['active'] == 'Y') ? (string) $gsprache->yes : (string) $gsprache->no, ($row['os'] == 'L') ? 'Linux' : 'Windows', (int) $row['gameserver_amount'] . '/' . (int) $row['maxserver'], (int) $row['gameserver_ram'] . '/' . (int) $row['ram'], $row['description'], returnButton($template_to_use, 'ajax_admin_buttons_ri.tpl', 'ro', 'ri', $row['id'], $gsprache->reinstall), returnButton($template_to_use, 'ajax_admin_buttons_dl.tpl', 'ro', 'dl', $row['id'], $gsprache->del), returnButton($template_to_use, 'ajax_admin_buttons_md.tpl', 'ro', 'md', $row['id'], $gsprache->mod), ); + } + + // Code wise it seems odd, but this way we can get plausible userIDs for following queries up front + } else { + + // When searching a table combination that should provide a server and user´s loginname, firstname, lastname. First do a search at usertable and get IDs. + // This IDs should be used for doing a `ID` IN (implode(',', $foundIDs)) as it will be faster. } - // When searching a table combination that should provide a server and user´s loginname, firstname, lastname. First do a search at usertable and get IDs. - // This IDs should be used for doing a `ID` IN (implode(',', $foundIDs)) as it will be faster. die(json_encode($array)); diff --git a/web/languages/default/de/general.xml b/web/languages/default/de/general.xml index f3af8e67..ae91e1e0 100644 --- a/web/languages/default/de/general.xml +++ b/web/languages/default/de/general.xml @@ -1,6 +1,6 @@  - Aktive + Aktiv Hinzufügen Addons Addon diff --git a/web/languages/default/de/roots.xml b/web/languages/default/de/roots.xml index 0dd3b6fa..4c847258 100644 --- a/web/languages/default/de/roots.xml +++ b/web/languages/default/de/roots.xml @@ -32,6 +32,7 @@ Betriebssystem Bitversion Passwort + Reseller Zuwweisen Löschvorgang erfolgreich auf dem Rootserver gestartet Master Server wurde erfolgreich in die Datenbank eingetragen und wird nun auf dem Server installiert Update(s) erfolgreich gestartet diff --git a/web/languages/default/dk/roots.xml b/web/languages/default/dk/roots.xml index 66a17bc3..e80c01bd 100644 --- a/web/languages/default/dk/roots.xml +++ b/web/languages/default/dk/roots.xml @@ -32,6 +32,7 @@ Operativsystem Bit Version Adgangskode + Succesfuld startede fjernelse proces. Master serveren er blevet tilføjet til databasen, og er ved at blive installeret nu Succes begyndt at opdatere diff --git a/web/languages/default/uk/roots.xml b/web/languages/default/uk/roots.xml index 6368cdf7..9473bf4c 100644 --- a/web/languages/default/uk/roots.xml +++ b/web/languages/default/uk/roots.xml @@ -32,6 +32,7 @@ Operating system Bit-version Password + Assign to reseller Successfully started the removal process. The master server has been added to the database and is currently in the installation process. Successfully started updating diff --git a/web/stuff/admin/roots.php b/web/stuff/admin/roots.php index b7274a00..4433d36f 100644 --- a/web/stuff/admin/roots.php +++ b/web/stuff/admin/roots.php @@ -89,9 +89,10 @@ if ($ui->w('action', 4, 'post') and !token(true)) { $desc = $ui->description('desc', 'post'); $ram = $ui->id('ram', 5, 'post'); $updates = $ui->id('updates', 1, 'post'); - $ownerID = $ui->id('ownerID', 10, 'post'); - $publickey = ($ui->w('publickey',1 , 'post')) ? $ui->w('publickey', 1, 'post') : 'N'; + $ownerID = ($ui->active('assignToReseller', 'post') == 'Y' and $ui->id('ownerID', 10, 'post')) ? $ui->id('ownerID', 10, 'post') : 0; + $publickey = ($ui->w('publickey', 1, 'post')) ? $ui->w('publickey', 1, 'post') : 'N'; + $assignToReseller = ($ui->active('assignToReseller', 'post')) ? $ui->active('assignToReseller', 'post') : 'N'; $active = ($ui->active('active', 'post')) ? $ui->active('active', 'post') : 'Y'; $updateMinute = ($ui->id('updateMinute', 2, 'post')) ? $ui->id('updateMinute', 2, 'post') : 0; $ftpport = ($ui->port('ftpport', 'post')) ? $ui->port('ftpport', 'post') : 21; @@ -163,6 +164,7 @@ if ($ui->w('action', 4, 'post') and !token(true)) { $user = $row['duser']; $pass = $row['dpass']; $ownerID = $row['resellerid']; + $assignToReseller = ($ownerID > 0) ? 'Y' : 'N'; $query2->execute(array($row['resellerid'])); $ownerName = trim($query2->fetchColumn()); } @@ -280,12 +282,14 @@ if ($ui->w('action', 4, 'post') and !token(true)) { $id = $ui->id('id', 10, 'get'); if (!$ui->st('action', 'post')) { + $query = $sql->prepare("SELECT `ip`,`description` FROM `rserverdata` WHERE `id`=? AND (`userID` IS NULL OR `userID` IN ('',0)) LIMIT 1"); $query->execute(array($id)); foreach ($query->fetchAll(PDO::FETCH_ASSOC) as $row) { $desc = $row['description']; $ip = $row['ip']; } + $template_file = ($query->rowCount() > 0) ? 'admin_roots_dl.tpl' : 'admin_404.tpl'; } else if ($ui->st('action', 'post') == 'dl') { @@ -327,6 +331,7 @@ if ($ui->w('action', 4, 'post') and !token(true)) { } } else if ($ui->st('d', 'get') == 'ri' and $ui->id('id', 10, 'get')) { + $id = $ui->id('id', 10, 'get'); if (!$ui->st('action', 'post')) { @@ -340,6 +345,7 @@ if ($ui->w('action', 4, 'post') and !token(true)) { $query = $sql->prepare("SELECT `id`,`serverip`,`port` FROM `gsswitch` WHERE `rootID`=? AND `resellerid`=?"); $query->execute(array($id, $resellerLockupID)); } + foreach ($query->fetchAll(PDO::FETCH_ASSOC) as $row) { $ip = $row['serverip']; $table[$row['id']] = array('ip' => $row['serverip'], 'port' => $row['port']); @@ -397,120 +403,8 @@ if ($ui->w('action', 4, 'post') and !token(true)) { } } else { - $table = array(); - $o = $ui->st('o', 'get'); - if ($ui->st('o', 'get') == 'ar') { - $orderby = 'u.`cname` ASC'; - } else if ($ui->st('o', 'get') == 'dr') { - $orderby = 'u.`cname` DESC'; - } else if ($ui->st('o', 'get') == 'an') { - $orderby = 'u.`name` ASC,u.`vname` ASC'; - } else if ($ui->st('o', 'get') == 'dn') { - $orderby = 'u.`name` DESC,u.`vname` DESC'; - } else if ($ui->st('o', 'get') == 'ap') { - $orderby = 'r.`ip` ASC'; - } else if ($ui->st('o', 'get') == 'dp') { - $orderby = 'r.`ip` DESC'; - } else if ($ui->st('o', 'get') == 'as') { - $orderby = 'r.`active` ASC'; - } else if ($ui->st('o', 'get') == 'ds') { - $orderby = 'r.`active` DESC'; - } else if ($ui->st('o', 'get') == 'am') { - $orderby = 'r.`maxserver` ASC'; - } else if ($ui->st('o', 'get') == 'dm') { - $orderby = 'r.`maxserver` DESC'; - } else if ($ui->st('o', 'get') == 'di') { - $orderby = 'r.`id` DESC'; - } else { - $orderby = 'r.`id` ASC'; - $o = 'ai'; - } - if ($reseller_id == 0) { - $query = $sql->prepare("SELECT COUNT(`id`) AS `amount` FROM `rserverdata`"); - $query->execute(); - } else { - $query = $sql->prepare("SELECT COUNT(`id`) AS `amount` FROM `rserverdata` AS r WHERE `resellerid`=:reseller_id OR EXISTS (SELECT 1 FROM `userdata` WHERE `resellerid`=:reseller_id AND `id`=r.`resellerid`)"); - $query->execute(array(':reseller_id' => $resellerLockupID)); - } - $colcount = $query->fetchColumn(); + configureDateTables('-1, -2, -3', '1, "asc"', 'ajax.php?w=datatable&d=appserver'); - if ($ui->id('p', 19, 'get') > $colcount) { - $start = $colcount - $amount; - if ($start < 0) { - $start = 0; - } - } else { - $start = (int) $ui->id('p', 19, 'get'); - } - if ($reseller_id == 0) { - $query = $sql->prepare("SELECT r.*,u.`cname`,u.`name`,u.`vname` FROM `rserverdata` r LEFT JOIN `userdata` u ON r.`userID`=u.`id` ORDER BY $orderby LIMIT $start,$amount"); - $query2 = $sql->prepare("SELECT g.`id`,CONCAT(g.`serverip`, ':',g.`port`) AS `address`,g.`active`,g.`stopped`,g.`queryName`,g.`queryNumplayers`,g.`slots`,g.`maxram`,t.`shorten` FROM `gsswitch` g INNER JOIN `serverlist` s ON g.`serverid`=s.`id` INNER JOIN `servertypes` t ON s.`servertype`=t.`id` WHERE g.`rootID`=?"); - $query->execute(); - } else { - $query = $sql->prepare("SELECT r.*,u.`cname`,u.`name`,u.`vname` FROM `rserverdata` r LEFT JOIN `userdata` u ON r.`userID`=u.`id` WHERE r.`resellerid`=:reseller_id OR EXISTS (SELECT 1 FROM `userdata` WHERE `resellerid`=:reseller_id AND `id`=r.`resellerid`) ORDER BY $orderby LIMIT $start,$amount"); - $query2 = $sql->prepare("SELECT g.`id`,CONCAT(g.`serverip`, ':',g.`port`) AS `address`,g.`active`,g.`stopped`,g.`queryName`,g.`queryNumplayers`,g.`slots`,g.`maxram`,t.`shorten` FROM `gsswitch` g INNER JOIN `serverlist` s ON g.`serverid`=s.`id` INNER JOIN `servertypes` t ON s.`servertype`=t.`id` WHERE g.`rootID`=? AND g.`resellerid`=?"); - $query->execute(array(':reseller_id' => $resellerLockupID)); - } - foreach ($query->fetchAll(PDO::FETCH_ASSOC) as $row) { - $used = 0; - $available = 0; - $assignedRam = 0; - $i = 0; - $gs = array(); - $id = $row['id']; - $maxslots = $row['maxslots']; - $maxserver = $row['maxserver']; - if ($row['userID'] == 0 or $row['userID'] == null) { - $deleteAllowed = true; - $names = ''; - } else { - $deleteAllowed = false; - $names = trim($row['name'] . ' ' . $row['vname']); - } - if ($reseller_id == 0) { - $query2->execute(array($id)); - } else { - $query2->execute(array($id, $resellerLockupID)); - } - foreach ($query2->fetchAll(PDO::FETCH_ASSOC) as $row2) { - if ($row2['active'] == 'N' or $row2['stopped'] == 'Y') { - $gsStatus = 2; - } else if ($row2['active'] == 'Y' and $row2['stopped'] == 'N' and $row2['queryName'] != 'OFFLINE') { - $gsStatus = 1; - } else { - $gsStatus = 3; - } - $gs[] = array('id' => $row2['id'], 'address' => $row2['address'], 'shorten' => $row2['shorten'], 'name' => $row2['queryName'], 'status' => $gsStatus); - $used+=$row2['queryNumplayers']; - $available+=$row2['slots']; - $assignedRam+=$row2['maxram']; - $i++; - } - if ($row['active'] == 'Y' and isset($downChecks) and $downChecks > $row['notified']) { - $imgName = '16_ok'; - $imgAlt = 'Online'; - } else if ($row['active'] == 'Y' and isset($downChecks) and $downChecks <= $row['notified']) { - $imgName = '16_error'; - $imgAlt = 'Crashed'; - } else { - $imgName = '16_bad'; - $imgAlt = 'Inactive'; - } - $table[] = array('id' => $id, 'names' => $names, 'deleteAllowed' => $deleteAllowed, 'img' => $imgName, 'alt' => $imgAlt, 'ip' => $row['ip'], 'active' => $row['active'], 'os' => $row['os'], 'bit' => $row['bitversion'], 'description' => $row['description'], 'assignedRam' => $assignedRam, 'ram' => $row['ram'], 'used' => $used, 'max' => $available, 'maxslots' => $maxslots, 'maxserver' => $maxserver, 'installedserver' => $i, 'server' => $gs); - } - $next = $start + $amount; - $vor = ($colcount > $next) ? $next : $start; - $back = $start - $amount; - $zur = ($back >= 0) ? $start - $amount : $start; - $pageamount = ceil($colcount / $amount); - $pages[] = '1' : '&p=0">1'; - $i = 2; - while ($i <= $pageamount) { - $selectpage = ($i - 1) * $amount; - $pages[] = ($start == $selectpage) ? '' . $i . '' : '' . $i . ''; - $i++; - } - $pages = implode(', ', $pages); $template_file = 'admin_roots_list.tpl'; } \ No newline at end of file diff --git a/web/stuff/methods/functions.php b/web/stuff/methods/functions.php index 270a6309..c2c84564 100644 --- a/web/stuff/methods/functions.php +++ b/web/stuff/methods/functions.php @@ -851,6 +851,12 @@ if (!function_exists('passwordgenerate')) { return false; } + function returnButton ($templateToUse, $template, $what, $do, $id, $description = '') { + ob_start(); + include(IncludeTemplate($templateToUse, $template, 'ajax')); + return ob_get_clean(); + } + function User_Permissions($id) { global $sql; diff --git a/web/template/adminlte/admin/admin_addons_add.tpl b/web/template/adminlte/admin/admin_addons_add.tpl index 39a712a1..3e60901a 100644 --- a/web/template/adminlte/admin/admin_addons_add.tpl +++ b/web/template/adminlte/admin/admin_addons_add.tpl @@ -7,9 +7,7 @@ -
-
diff --git a/web/template/adminlte/admin/admin_header.tpl b/web/template/adminlte/admin/admin_header.tpl index 75885e9c..ac9e475a 100644 --- a/web/template/adminlte/admin/admin_header.tpl +++ b/web/template/adminlte/admin/admin_header.tpl @@ -481,10 +481,10 @@
-
@@ -43,8 +42,8 @@ - - + + -
\ No newline at end of file + \ No newline at end of file diff --git a/web/template/default/user/userpanel_tickets_list.tpl b/web/template/default/user/userpanel_tickets_list.tpl index def0f15c..12cb69a8 100644 --- a/web/template/default/user/userpanel_tickets_list.tpl +++ b/web/template/default/user/userpanel_tickets_list.tpl @@ -44,7 +44,7 @@ - +