summaryrefslogtreecommitdiffstats
path: root/pages/oldleaderboard.php
diff options
context:
space:
mode:
authorPatrick Davison <snapwilliam@gmail.com>2013-02-18 23:29:47 -0800
committerPatrick Davison <snapwilliam@gmail.com>2013-02-18 23:29:47 -0800
commitd4d2cc43100934cb615492f519fc4ddded6d544c (patch)
treeda616d556bc529bec21c6bb59aa57f663c539c18 /pages/oldleaderboard.php
parent895690e7e54079851d534bea2b35a25840434ac7 (diff)
downloadpathery-d4d2cc43100934cb615492f519fc4ddded6d544c.tar.xz
The forgotten oldleaderboard - but will be deleted soon.
Diffstat (limited to 'pages/oldleaderboard.php')
-rw-r--r--pages/oldleaderboard.php377
1 files changed, 377 insertions, 0 deletions
diff --git a/pages/oldleaderboard.php b/pages/oldleaderboard.php
new file mode 100644
index 0000000..cb9a029
--- /dev/null
+++ b/pages/oldleaderboard.php
@@ -0,0 +1,377 @@
+<?php
+htmlHeader(array('stats'), 'Pathery Scores', 'Score history for Pathery');
+?>
+
+<body>
+
+<?php
+topbar($Links);
+
+include('./includes/maps.php');
+//include('./includes/mapoftheday.php');
+include('./includes/datas.php');
+
+include_once ('./includes/sqlEmbedded.php');
+
+function day_diff($date1, $date2) {
+ $current = $date1;
+ $datetime2 = date_create($date2);
+ $count = 0;
+ while(date_create($current) < $datetime2){
+ $current = gmdate("Y-m-d", strtotime("+1 day", strtotime($current)));
+ $count++;
+ }
+ return $count;
+}
+
+//The date to display
+$dateDisplay = date('Y-m-d', strtotime("-1 days"));
+
+//This is only used in a strtotime function, so this should be safe.
+if (isset($_GET['date'])) {
+ $dateLookup = $_GET['date'];
+ if (!strtotime($dateLookup))
+ $dateLookup = $dateDisplay;
+} else
+ $dateLookup = $dateDisplay;
+
+$daysAgo = day_diff($dateLookup, date('Y-m-d'));
+$dateAgo = strtotime("-$daysAgo days");
+
+$dateAsStr = date('l F jS Y', $dateAgo);
+
+$dateNextDay = date('Y-m-d', strtotime("+1 day", $dateAgo));
+$datePrevDay = date('Y-m-d', strtotime("-1 day", $dateAgo));
+
+//No cheater cheaters
+if ($daysAgo < 1)
+ die("You must specify a date previous to today.");
+
+
+
+$time_start = microtime(true);
+
+$tStats = getStat(1, $daysAgo);
+$yStats = getStat(2, $daysAgo);
+$wStats = getStat(3, $daysAgo);
+$mStats = getStat(4, $daysAgo);
+
+$time_end = microtime(true);
+$time = $time_end - $time_start;
+
+if ($_GET['debug'] == true) echo "XX StatContent getStat Rechieve: $time seconds XX\n";
+
+
+function getStat ($type, $daysAgo = 1) {
+ 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 -$daysAgo DAY) =
+ DATE_FORMAT(solutions.dateModified,'%Y-%m-%d')
+ AND DATE_ADD(CURDATE(), INTERVAL -$daysAgo DAY) =
+ DATE_FORMAT(maps.dateCreated,'%Y-%m-%d')
+ ";
+ $statname = "Yesterday's Best Overall:";
+ if ($daysAgo > 1) {
+ $statname = "$daysAgo days ago'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) AND year(solutions.dateModified) = year(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,
+ users.wallColor,
+ users.wallEmblem,
+ users.displayColor,
+ users.ID as userID,
+ SUM(CASE WHEN solutions.dateModified < CURDATE()
+ THEN solutions.championPointsWorth
+ ELSE 0 END) AS championPointsWorth
+ 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 class="wrapper">
+
+<div style='text-align:center;padding-bottom:7px;'>
+<strong>12-28-12. I plan on making considerable changes to this page in the near future.
+<br />Thank you for your patience!</strong>
+<br />
+<br />Showing scores for the maps played on <? echo $dateAsStr; ?>
+</div>
+
+<div id="daynav">
+<?
+if ($daysAgo > 1) {
+ echo "<a href='leaderboard?date=$dateDisplay' title='Now'>Current Day</a>";
+ echo "<a href='leaderboard?date=$dateNextDay' title='Newer'>Next Day</a>";
+}
+ echo "<a href='leaderboard?date=$datePrevDay' title='Older'>Previous Day</a>";
+
+
+
+$time_start = microtime(true);
+
+$statContent .= displayPastMaze(1, 'Simple', $daysAgo);
+$statContent .= displayPastMaze(2, 'Normal', $daysAgo);
+$statContent .= displayPastMaze(3, 'Complex', $daysAgo);
+$statContent .= displayPastMaze(4, 'Special', $daysAgo);
+
+$time_end = microtime(true);
+$time = $time_end - $time_start;
+
+if ($_GET['debug'] == true) echo "StatContent Rechieve: $time seconds\n";
+
+
+$special = 'Special';
+if ($specialMapName != '')
+ $special = $specialMapName;
+
+?>
+</div>
+
+<div id="difficulties">
+ <a href="javascript:showStats(1)" id="dl-1">Simple</a>
+ <a href="javascript:showStats(2)" id="dl-2">Normal</a>
+ <a href="javascript:showStats(3)" id="dl-3">Complex</a>
+ <a href="javascript:showStats(4)" id="dl-4"><? echo $special; ?></a>
+ <a href="javascript:showStats(5)" id="dl-5">Overall</a>
+ <a href="javascript:showStats(6)" id="dl-6">Week/Month</a>
+</div>
+
+<?
+
+echo $statContent;
+
+function displayPastMaze($mapType, $name, $daysAgo = 1) {
+ //Ensure no cheating
+ if ($daysAgo < 1)
+ return;
+
+ $pastMap = pastMap($mapType, $daysAgo);
+ $mapID = $pastMap;
+ $mapcode = getMapCode($mapID);
+ $map = GenerateMapByCode($mapcode);
+
+ $sql = "SELECT
+ maps.ID as mapID,
+ solution,
+ users.displayName as Name,
+ SUM(solutions.moves) as Moves,
+ timediff(solutions.dateModified, maps.dateCreated) as Timetaken,
+ users.wallColor,
+ users.wallEmblem,
+ users.displayColor,
+ users.ID as userID,
+ solutions.championPointsWorth
+ FROM `maps`
+ JOIN `solutions`
+ ON maps.ID = solutions.mapID
+ JOIN `users`
+ ON solutions.userID = users.ID
+ JOIN `mapOfTheDay`
+ ON maps.ID = mapOfTheDay.mapID
+ WHERE
+ maps.ID = '$mapID'
+ GROUP BY solutions.userID
+ ORDER BY Moves DESC, `dateModified` ASC
+ ";
+
+ $result = mysql_query($sql) or die(mysql_error());
+
+ $statname = "Yesterday's Best $name:";
+ if ($daysAgo > 1) {
+ $statname = "$daysAgo days ago's Best $name:";
+ }
+ $stats = displayStats($result, $statname);
+
+ //Sucky temporary solution:
+ $GLOBALS['specialMapName'] = $map[0][6];
+
+ $sql = "SELECT `moves`, `displayName`, `solution`
+ FROM `solutions`
+ LEFT JOIN `users`
+ ON solutions.userID = users.ID
+ WHERE `mapID` = '$mapID'
+ 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);
+ }
+ $r = '';
+
+ $r .= '<div style="clear: both"></div>';
+ $r .= "<div id=\"yms-$mapType\">";
+ $r .= '<div class="col1">';
+ $r .= $stats;
+ $r .= '</div>';
+
+ $r .= '<div class="col2">';
+ $r .= "Best solution for this map: <b>$bestMoves by $byName </b>";
+ $r .= DisplayMap($map, $mapID, 'normal', 2);
+ $r .= '</div>';
+ $r .= '</div>';
+ return $r;
+}
+
+function displaystats($result, $caption = NULL) {
+ //Get names.
+ $headers = "<tr class='leaderboardHeaders'>";
+ $headers .= "<th class='leaderboardHeadersRank'>Rank</th>";
+ $headers .= "<th class='leaderboardHeadersName'>Name</th>";
+ $headers .= "<th class='leaderboardHeadersMoves'>Moves</th>";
+ $headers .= "<th class='leaderboardHeadersTime'>Time taken</th>";
+ $headers .= "</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;
+ $championPoints = null;
+ while ($row = mysql_fetch_assoc($result)) {
+ $rowcontent = '';
+ $mapid = $row['mapID'];
+ $solution = $row['solution'];
+ $wallColor = $row['wallColor'];
+ $wallEmblem = $row['wallEmblem'];
+ $displayColor = $row['displayColor'];
+ $displayName = $row['Name'];
+ $userID = $row['userID'];
+
+ //Default
+ if ($wallColor == '')
+ $wallColor = '#666666';
+
+ $x = "<tr class='lbrow' onmouseover='changeWallEmblem(\"$wallEmblem\"); changeWallColor(\"$wallColor\"); loadSol(\"$mapid:$solution\");'>\n";
+ $x .= "<td>$i</td>";
+ $x .= "<td class='leaderboardName'><span title='UserID: $userID'><a href='achievements?id=$userID' style='color:$displayColor'>$displayName</a></span></td>";
+ //$x .= "<td style='color:$displayColor';>" . $row['Name'] . '</td>';
+ $x .= '<td><a href="javascript:void(0)">' . $row['Moves'] . '</a></td>';
+ $x .= '<td>' . $row['Timetaken'] . '</td>';
+ $x .= "</tr>";
+
+ if ($userID == $_SESSION['userID']) {
+ $promotedContent .= $x;
+ $championPoints = $row['championPointsWorth'];
+ } else {
+ $content .= $x;
+ }
+
+ $i++;
+ }
+
+ $r = '';
+ if($championPoints != null && $championPoints > 0)
+ {
+ $r .= "<div class='myPoints'>Points earned: <span class='myPointsValue'>$championPoints</span> <img src='../images/championpoints.png' width='16px' height='16px'></img></div>";
+ }
+ $r .= "<table style='border:1px solid #FFF'>";
+ $r .= "<caption>$caption</caption>";
+ $r .= $headers;
+ $r .= $promotedContent;
+ $r .= $content;
+
+ $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;
+}
+
+
+?>
+
+<div style="clear: both"></div>
+
+<div id="yms-5">
+ <div class="col1">
+ <? echo $tStats;?>
+ </div>
+ <div class="col2">
+ <? echo $yStats;?>
+ </div>
+</div>
+
+<div id="yms-6">
+ <div class="col1">
+ <? echo $wStats;?>
+ </div>
+ <div class="col2">
+ <? echo $mStats;?>
+ </div>
+</div>
+
+<br class="clear">
+</div>
+
+<script>
+function showStats(type) {
+ for (var i = 1; i <= 6; i++) {
+ var elem = document.getElementById("yms-" + i);
+ if (elem.className.indexOf('hidden-stats') < 0)
+ elem.className += 'hidden-stats';
+ elem = document.getElementById("dl-" + i);
+ elem.className = elem.className.replace('selected', '');
+ }
+ elem = document.getElementById("yms-" + type);
+ elem.className = elem.className.replace('hidden-stats', '');
+ elem = document.getElementById("dl-" + type);
+ if (elem.className.indexOf('selected') < 0)
+ elem.className += 'selected';
+}
+showStats(1);
+</script>
+
+<script src="sounds/script/soundmanager.js"></script>
+<script type="text/javascript">soundManagerInit();</script>
+
+<?php
+htmlFooter();
+?>