summaryrefslogtreecommitdiffstats
path: root/pages/leaderboard.php
diff options
context:
space:
mode:
Diffstat (limited to 'pages/leaderboard.php')
-rw-r--r--pages/leaderboard.php236
1 files changed, 236 insertions, 0 deletions
diff --git a/pages/leaderboard.php b/pages/leaderboard.php
new file mode 100644
index 0000000..c8f03b8
--- /dev/null
+++ b/pages/leaderboard.php
@@ -0,0 +1,236 @@
+<?PHP
+htmlHeader();
+?>
+
+<body>
+
+<?php
+
+topbar($Links);
+
+include('./includes/maps.php');
+//include('./includes/mapoftheday.php');
+include('./includes/datas.php');
+
+include_once ('./includes/db.inc.php');
+
+echo '<br /><br />';
+
+
+$tStats = getStat(1);
+$yStats = getStat(2);
+
+$wStats = getStat(3);
+$mStats = getStat(4);
+
+
+function getStat ($type) {
+ switch ($type) {
+
+ //Todays
+ case 1:
+ $where = "
+ DATE_ADD(CURDATE(), INTERVAL -0 DAY) =
+ DATE_FORMAT(solutions.dateModified,'%Y-%m-%d')
+ AND DATE_ADD(CURDATE(), INTERVAL -0 DAY) =
+ DATE_FORMAT(maps.dateCreated,'%Y-%m-%d')
+ ";
+ $statname = "Today's Best Overall:";
+ break;
+ //Yesterdays
+ case 2:
+ $where = "
+ DATE_ADD(CURDATE(), INTERVAL -1 DAY) =
+ DATE_FORMAT(solutions.dateModified,'%Y-%m-%d')
+ AND DATE_ADD(CURDATE(), INTERVAL -1 DAY) =
+ DATE_FORMAT(maps.dateCreated,'%Y-%m-%d')
+ ";
+ $statname = "Yesterday's Best Overall:";
+ break;
+ case 3:
+ $where = "
+ YEARweek(solutions.dateModified) = YEARweek(CURRENT_DATE)
+ ";
+ $statname = "This week, starting Sunday";
+ break;
+ case 4:
+ $where = "
+ month(solutions.dateModified) = month(CURRENT_DATE)
+ ";
+ $statname = "This month's Best";
+ break;
+ }
+
+ $sql = "SELECT
+ users.displayName as Name,
+ SUM(solutions.moves) as Moves,
+ timediff(MAX(dateModified), maps.dateCreated) as Timetaken
+ FROM `maps`
+ JOIN `solutions`
+ ON maps.ID = solutions.mapID
+ JOIN `users`
+ ON solutions.userID = users.ID
+ WHERE $where
+ GROUP BY solutions.userID
+ ORDER BY Moves DESC, MAX(dateModified) ASC
+ ";
+ $result = mysql_query($sql);
+ return displayStats($result, $statname);
+}
+
+
+
+?>
+<div style="padding-left: 400px">
+<a href="javascript:showStats(0)">Overall</a> |
+<a href="javascript:showStats(1)">Simple</a> |
+<a href="javascript:showStats(2)">Normal</a> |
+<a href="javascript:showStats(3)">Complex</a> |
+<a href="javascript:showStats(4)">Special</a> |
+<a href="javascript:showStats(5)">Week/Month</a>
+</div>
+<br />
+
+<div id="yms-0">
+ <div class="col1">
+ <? echo $tStats;?>
+ </div>
+ <div class="col2">
+ <? echo $yStats;?>
+ </div>
+</div>
+
+
+<?
+function yesterdayMaze($mapType, $name) {
+ $sql = "SELECT
+ maps.ID as mapID,
+ solution,
+ users.displayName as Name,
+ SUM(solutions.moves) as Moves,
+ timediff(solutions.dateModified, maps.dateCreated) as Timetaken
+ FROM `maps`
+ JOIN `solutions`
+ ON maps.ID = solutions.mapID
+ JOIN `users`
+ ON solutions.userID = users.ID
+ JOIN `mapOfTheDay`
+ ON maps.ID = mapOfTheDay.mapID
+ WHERE DATE_ADD(CURDATE(), INTERVAL -1 DAY) =
+ DATE_FORMAT(solutions.dateModified,'%Y-%m-%d')
+ AND DATE_ADD(CURDATE(), INTERVAL -1 DAY) =
+ DATE_FORMAT(maps.dateCreated,'%Y-%m-%d')
+ AND `mapType` = '$mapType'
+ GROUP BY solutions.userID
+ ORDER BY Moves DESC, `dateModified` ASC
+ ";
+ $result = mysql_query($sql);
+ $stats = displayStats($result, "Yesterday's Best $name:");
+
+
+ $pastMap = pastMap($mapType, 1);
+ $mapID = $pastMap;
+ $mapcode = getMapCode($mapID);
+ $map = GenerateMapByCode($mapcode);
+ $sql = "SELECT `moves`, `displayName`, `solution`
+ FROM `solutions`, `users`
+ WHERE `mapID` = '$mapID' AND
+ `userID` = users.ID
+ ORDER BY `moves` DESC, `dateModified` ASC
+ LIMIT 1";
+ $result = mysql_query($sql) or die(mysql_error());
+ if (mysql_num_rows($result) > 0) {
+ list($bestMoves, $byName, $solution) = mysql_fetch_row($result);
+ //echo "Best solution for this map: $bestMoves by $byName";
+ //$map = MergeMapSolution($map, $solution);
+ //echo DisplayMap($map, $mapID);
+ }
+ echo '<div style="clear: both"></div>';
+ echo "<div id=\"yms-$mapType\">";
+ echo '<div class="col1">';
+ echo $stats;
+ echo '</div>';
+
+ echo '<div class="col2">';
+ echo "Best solution for this map: <b>$bestMoves by $byName </b>";
+ echo DisplayMap($map, $mapID, true, 2);
+ echo '</div>';
+ echo '</div>';
+}
+
+function displaystats($result, $caption = NULL) {
+ //Get names.
+ $headers .= "<th style='border:1px solid #ccc'>Rank</th>";
+ $headers .= "<th style='border:1px solid #ccc'>Name</th>";
+ $headers .= "<th style='border:1px solid #ccc'>Moves</th>";
+ $headers .= "<th style='border:1px solid #ccc'>Time taken</th>";
+ //Start table
+ $r .= "<table style='border:1px solid #FFF'>";
+ $r .= "<caption>$caption</caption>";
+ //Headers on the top. including Rank.
+ $r .= "<tr>";
+ $r .= $headers;
+ $r .= "</tr>";
+
+ $i = 1;
+ while ($row = mysql_fetch_assoc($result)) {
+ $rowcontent = '';
+ $mapid = $row['mapID'];
+ $solution = $row['solution'];
+
+ $r .= "<tr class='lbrow' onmouseover='javascript:loadSol(\"$mapid:$solution\")'>";
+ $r .= "<td>$i</td>";
+ $r .= '<td>' . $row['Name'] . '</td>';
+ $r .= '<td><a href="javascript:void(0)">' . $row['Moves'] . '</a></td>';
+ $r .= '<td>' . $row['Timetaken'] . '</td>';
+ $r .= "</tr>";
+ $i++;
+ }
+ $r .= "</table>";
+ return $r;
+}
+
+function mysql_field_array( $query ) {
+ $field = mysql_num_fields( $query );
+ for ( $i = 0; $i < $field; $i++ ) {
+ $names[] = mysql_field_name( $query, $i );
+ }
+ return $names;
+}
+
+// $sql = 'select columnname etc'
+// $result = mysql_query($sql);
+// while ($data[] = mysql_fetch_row($result));
+
+// $data[1]['columnname'] == 'my data';
+
+yesterdayMaze(1, 'Easy');
+yesterdayMaze(2, 'Normal');
+yesterdayMaze(3, 'Complex');
+yesterdayMaze(4, 'Special');
+
+?>
+
+<div style="clear: both"></div>
+<div id="yms-5">
+ <div class="col1">
+ <? echo $wStats;?>
+ </div>
+ <div class="col2">
+ <? echo $mStats;?>
+ </div>
+</div>
+
+
+<script>
+function showStats(type) {
+ for (var i = 0; i < 6; i++) {
+ var elem = document.getElementById("yms-" + i);
+ if (elem.className.indexOf('hidden-stats') < 0)
+ elem.className += 'hidden-stats';
+ }
+ var elem = document.getElementById("yms-" + type);
+ elem.className = elem.className.replace('hidden-stats', '');
+}
+showStats(0);
+</script>