summaryrefslogtreecommitdiffstats
path: root/ajax/scores.ajax.php
blob: 7ba25d0a72c6f66a4f3550cec5c1010235c2d5dc (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
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
<?
// Session as read-only to not lock the file.
session_start();
session_write_close();

$userID = $_SESSION['userID'];

require('../includes/maps.php');
require('../includes/mapclass.php');
require('../includes/datas.php');
include_once('../includes/sqli.php');

if ($_GET['getmap'] == 'true') {
	$mapID = $_GET['mapID'];
	$code = getMapCode($mapID);
	$map = GenerateMapByCode($code);
	echo displaymap($map, $mapID);
}


if ($_GET['getscores'] == 'true') {

}

if ($_GET['getmaplist'] == 'true') {
	$daysAgo = $_GET['daysago'];
	//echo "$daysAgo";
	$todaysScoreMaps = getMapsPlayed($daysAgo);
	echo getMapNavigation($todaysScoreMaps);
}

if (isset($_GET['getmapidsbydate'])) {
	//TODO: SANATIZE
	$requestDate = $_GET['getmapidsbydate'];
	echo json_encode(getMapIDsByDate($requestDate));
}

// Here is that SQL for you
// SELECT correctMapIds.mapType, maps.ID, maps.code
// FROM maps
// INNER JOIN
// (
       // SELECT MIN(mapOfTheDay.mapId) AS mapId, mapOfTheDay.mapType
       // FROM `mapOfTheDay`
       // INNER JOIN
       // (
               // SELECT mapType, MIN(mapExpireTime) AS mapExpireTime
               // FROM mapOfTheDay
               // WHERE mapExpireTime > DATE_ADD(CURDATE(), INTERVAL -1 DAY)
               // GROUP BY mapType
       // ) AS expireTimes ON mapOfTheDay.mapType = expireTimes.mapType
                                       // AND mapOfTheDay.mapExpireTime = expireTimes.mapExpireTime
       // GROUP BY mapOfTheDay.mapType
// ) AS correctMapIds ON maps.ID = correctMapIds.mapId

//TODO: SANITIZE.
function getMapIDsByDate($date) {
	global $mysqli;
$sql = "SELECT MIN(mapOfTheDay.mapId) AS mapId
FROM `mapOfTheDay`
INNER JOIN
(
	SELECT mapType, MIN(mapExpireTime) AS mapExpireTime
	FROM mapOfTheDay
	WHERE mapExpireTime > ?
	GROUP BY mapType
) AS expireTimes ON mapOfTheDay.mapType = expireTimes.mapType
						AND mapOfTheDay.mapExpireTime = expireTimes.mapExpireTime
GROUP BY mapOfTheDay.mapType";

$stmt = $mysqli->prepare($sql);
$stmt->bind_param("s", $date);
$stmt->execute();

    $stmt->bind_result($mapID);
    /* fetch values */
    while ($stmt->fetch()) {
        $ids[] = $mapID;
    }

	 return $ids;

var_dump($ids);


while ($myrow[] = $result->fetch_assoc()) {}

	$result = mysql_query($sql) or die(mysql_error());
	if (mysql_num_rows($result) == 0) return -1;
	global $mapNamesByType;
	$r = array();
	while($data[] = mysql_fetch_array($result)) {
		$mapID = $data['mapID'];
		$mapType = $data['mapType'];
		$map = new map($code);
		if ($map->name == '')
			$map->name = $mapNamesByType[$mapType];
		$r[$mapID] = $map;
	}
	return $myrow;
}

	
function getMapsPlayed($daysAgo) {
	// $sql = "
	// SELECT `mapID`, `code`, `mapType`
	// FROM `mapOfTheDay`
	// INNER JOIN `maps` ON `mapID` = maps.ID
	// WHERE DATE_ADD(CURDATE(), INTERVAL -$daysAgo DAY) =    
	// mapDate AND
	// `mapType` IN (1, 2, 3, 4, 5)
	// ";
	
	$sql = "SELECT correctMapIds.mapType, maps.ID as mapID, maps.code
FROM maps
INNER JOIN
(
       SELECT MIN(mapOfTheDay.mapId) AS mapId, mapOfTheDay.mapType
       FROM `mapOfTheDay`
       INNER JOIN
       (
               SELECT mapType, MIN(mapExpireTime) AS mapExpireTime
               FROM mapOfTheDay
               WHERE mapExpireTime > DATE_ADD(CURDATE(), INTERVAL -$daysAgo DAY)
               GROUP BY mapType
       ) AS expireTimes ON mapOfTheDay.mapType = expireTimes.mapType
                                       AND mapOfTheDay.mapExpireTime = expireTimes.mapExpireTime
       GROUP BY mapOfTheDay.mapType
) AS correctMapIds ON maps.ID = correctMapIds.mapId";
	
	$result = mysql_query($sql) or die(mysql_error());
	if (mysql_num_rows($result) == 0)
		return -1;
	global $mapNamesByType;
	$r = array();
	while($data = mysql_fetch_array($result)) {
		$code = $data['code'];
		$mapID = $data['mapID'];
		$mapType = $data['mapType'];
		$map = new map($code);
		if ($map->name == '') $map->name = $mapNamesByType[$mapType];
		$r[$mapID] = $map;

	}
	return $r;
}

function getMapNavigation(&$maps) {
	foreach ($maps as $mapID => &$map) {
		$r .= "<div class='mapThumbnail' onclick='displayMap($mapID)'>";
		$r .= $map->name;
		$r .= DisplayMapThumbnail($map);
		$r .= "</div>";;
	}
	return $r;
}



?>