-
Notifications
You must be signed in to change notification settings - Fork 0
/
gservers_json.php
63 lines (54 loc) · 1.69 KB
/
gservers_json.php
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
<?php
// Get the defines
require_once("config.php");
// Required defines
// * PREFIX_DBHOST
// * PREFIX_DBUSER
// * PREFIX_DBPASS
// * PREFIX_DBNAME
// Connect to database
$mysqli = new mysqli(PREFIX_DBHOST, PREFIX_DBUSER, PREFIX_DBPASS, PREFIX_DBNAME);
if(!$mysqli) die("ERR1: Database connection failed!");
// Handle sorting
$sorting = "";
switch(isset($_GET['sorting']) ? $_GET['sorting'] : "") {
case "status": $sorting = " ORDER BY restartsend='no' DESC,goingdown='no' DESC"; break;
case "game": $sorting = " ORDER BY type"; break;
case "name": $sorting = " ORDER BY servername"; break;
case "map": $sorting = " ORDER BY currentmap"; break;
case "players": $sorting = " ORDER BY currentplayers DESC"; break;
}
// Handle filters
$filter = "";
if(isset($_GET['filter'])) if(trim($_GET['filter'])) {
$filters = array();
foreach(explode(",", $_GET['filter']) as $f) if(trim($f)) {
$filters[] = $mysqli->real_escape_string(trim($f));
}
if(count($filters)) {
$filter = sprintf(" WHERE type IN('%s')", implode("','", $filters));
}
}
// Query for content
$q = "SELECT * FROM servers{$filter}{$sorting}";
$resp = $mysqli->query($q);
if(!$resp) die("ERR2: Query error!");
// Fetch content
$data = array();
while($row = $resp->fetch_assoc()) {
$data[] = array(
'serverid' => $row['serverid'],
'servername' => $row['servername'],
'ip' => $row['ip'],
'port' => $row['port'],
'type' => $row['type'],
'currentmap' => $row['currentmap'],
'currentplayers' => $row['currentplayers'],
'maxplayers' => $row['maxplayers'],
'restartsend' => $row['restartsend'],
'goingdown' => $row['goingdown']
);
}
// Output content
echo "SUCCESS:" . json_encode($data);
?>