-
Notifications
You must be signed in to change notification settings - Fork 0
/
update.php
150 lines (125 loc) · 5.25 KB
/
update.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
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
145
146
147
148
149
150
<?php
if (isset($_POST['type'])) {
$type = $_POST['type'];
$type = htmlentities(strip_tags($type));
if (strlen($type) > 16)
exit();
}
if (isset($_POST['last_update'])) {
$last_update = $_POST['last_update'];
if ($last_update == null)
$last_update = 0;
$last_update = htmlentities(strip_tags($last_update));
if (strlen($last_update) > 16)
exit();
}
if (isset($_POST['username'])) {
$username = $_POST['username'];
$username = htmlentities(strip_tags($username));
if (strlen($username) > 16)
exit();
}
if (isset($_POST['password'])) {
$password = $_POST['password'];
$password = htmlentities(strip_tags($password));
if (strlen($password) > 16)
exit();
}
require_once('logins.php');
if (!isset($logins[$username]) or $logins[$username] != $password) {
echo "Bad credentials";
exit();
}
require_once('db_connection.php');
switch ($type) {
case "races":
$newArray = null;
$stmt = $db->prepare("SELECT username, coursename, style, season, duration_ms, topspeed, average, end_time, rank, entries, season_rank, season_entries FROM LocalRun WHERE last_update > :last_update ORDER BY end_time DESC");
$stmt->bindValue(":last_update", $last_update, SQLITE3_TEXT);
$result = $stmt->execute();
$exists = sql2arr2($result);
$result->finalize();
if($exists){
foreach ($exists as $key => $value) {
$newArray[]=array(0=>$value["username"],1=>$value["coursename"],2=>$value["style"],3=>$value["season"],4=>$value["duration_ms"],5=>$value["topspeed"],6=>$value["average"],7=>$value["end_time"],8=>$value["rank"],9=>$value["entries"],10=>$value["season_rank"],11=>$value["season_entries"]);
}
}
$json = json_encode($newArray);
break;
case "race_demos":
$newArray = null;
//$stmt = $db->prepare("SELECT username, coursename, style, rank FROM LocalRun WHERE rank = 1 AND last_update > :last_update ORDER BY end_time DESC"); //Should be regardless of season, use duration_ms
$stmt = $db->prepare("SELECT username, coursename, style, MIN(duration_ms) FROM LocalRun WHERE last_update >:last_update GROUP BY coursename, style ORDER BY end_time DESC"); //Use this to ignore season
$stmt->bindValue(":last_update", $last_update, SQLITE3_TEXT);
$result = $stmt->execute();
$exists = sql2arr2($result);
$result->finalize();
if($exists){
foreach ($exists as $key => $value) {
//$newArray[]=array(0=>"http://162.248.89.208/races/" . $value["username"] . "/" . $value["username"] . "-" . $value["coursename"] . $value["style"] . ".dm_26");
$newArray[]=array(0=>$value["username"],1=>$value["coursename"],2=>$value["style"]);
}
}
$json = json_encode($newArray);
break;
case "duels":
$newArray = null;
$stmt = $db->prepare("SELECT winner, loser, type, duration, winner_hp, winner_shield, end_time, winner_elo, loser_elo, odds FROM LocalDuel WHERE end_time > :end_time ORDER BY end_time DESC");
$stmt->bindValue(":end_time", $last_update, SQLITE3_TEXT);
$result = $stmt->execute();
$exists = sql2arr2($result);
$result->finalize();
if($exists){
foreach ($exists as $key => $value) {
$newArray[]=array(0=>$value["winner"],1=>$value["loser"],2=>$value["type"],3=>$value["duration"],4=>$value["winner_hp"],5=>$value["winner_shield"],6=>$value["end_time"],7=>$value["winner_elo"],8=>$value["loser_elo"],9=>$value["odds"]);
}
}
$json = json_encode($newArray);
break;
case "accounts":
$newArray = null;
$stmt = $db->prepare("SELECT username, kills, deaths, suicides, captures, returns, lastlogin, created FROM LocalAccount WHERE lastlogin > :lastlogin ORDER BY lastlogin DESC");
$stmt->bindValue(":lastlogin", $last_update, SQLITE3_TEXT);
$result = $stmt->execute();
$exists = sql2arr2($result);
$result->finalize();
if($exists){
foreach ($exists as $key => $value) {
$newArray[]=array(0=>$value["username"],1=>$value["kills"],2=>$value["deaths"],3=>$value["suicides"],4=>$value["captures"],5=>$value["returns"],6=>$value["lastlogin"],7=>$value["created"]);
}
}
$json = json_encode($newArray);
break;
case "teams":
$newArray = null;
$stmt = $db->prepare("SELECT name, tag, longname, flags FROM LocalTeam DESC"); //Add last_update ?
//$stmt->bindValue(":lastlogin", $last_update, SQLITE3_TEXT);
$result = $stmt->execute();
$exists = sql2arr2($result);
$result->finalize();
if($exists){
foreach ($exists as $key => $value) {
$newArray[]=array(0=>$value["name"],1=>$value["tag"],2=>$value["longname"],3=>$value["flags"]);
}
}
$json = json_encode($newArray);
break;
case "team_accounts":
$newArray = null;
$stmt = $db->prepare("SELECT team, account, flags FROM LocalTeamAccount DESC"); //Add last_update ?
//$stmt->bindValue(":lastlogin", $last_update, SQLITE3_TEXT);
$result = $stmt->execute();
$exists = sql2arr2($result);
$result->finalize();
if($exists){
foreach ($exists as $key => $value) {
$newArray[]=array(0=>$value["team"],1=>$value["account"],2=>$value["flags"]);
}
}
$json = json_encode($newArray);
break;
}
ob_start('ob_gzhandler'); //Compress json
echo $json;
$db->close();
?>