From 6ee6d213e08ca4a5dfa53ba7f74e5b78b6098b73 Mon Sep 17 00:00:00 2001 From: Patrick Davison Date: Tue, 29 Jan 2013 15:50:46 -0800 Subject: Leaderboard renamed to scores. URL backdating included. --- index.php | 11 +- pages/leaderboard.php | 459 ------------------------------------------- pages/scores.php | 531 ++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 539 insertions(+), 462 deletions(-) delete mode 100644 pages/leaderboard.php create mode 100644 pages/scores.php diff --git a/index.php b/index.php index 7561071..21abbde 100644 --- a/index.php +++ b/index.php @@ -51,7 +51,7 @@ $footerLinks['members'] = "Member List"; //ROW 2 $footerLinks['chat'] = "Chat"; -$footerLinks['leaderboard'] = "Scores"; +$footerLinks['scores'] = "Scores"; $footerLinks['about'] = "About Us"; //ROW 3 @@ -71,7 +71,7 @@ $footerLinks['#top'] = "Back to Top"; //Links appear in order. $Links['home'] = "Home"; -$Links['leaderboard'] = "Scores"; +$Links['scores'] = "Scores"; $Links['challengelist'] = "Challenges BETA!"; //$Links['howtoplay'] = "How to Play"; //$Links['tutorial'] = "Tutorial"; @@ -149,8 +149,13 @@ switch ($request) { require("pages/howtoplay.php"); break; + //Support older links. case "leaderboard": - require("pages/leaderboard.php"); + header("Location: $mydomain"."scores?date=".$_GET['date']); + exit; + break; + case "scores": + require("pages/scores.php"); break; case "cp": diff --git a/pages/leaderboard.php b/pages/leaderboard.php deleted file mode 100644 index 963faa2..0000000 --- a/pages/leaderboard.php +++ /dev/null @@ -1,459 +0,0 @@ - - - - - - - - - - - - -
- -
-

-
- -
-< Previous Day -Next Day > -Current Day >> -
- -
-name == '') - $map->name = $mapNamesByType[$mapType]; - $r[$mapID] = $map; - - } - return $r; -} - - -function getMapNavigation(&$maps) { - foreach ($maps as $mapID => &$map) { - $r .= "
"; - $r .= $map->name; - $r .= DisplayMapThumbnail($map); - $r .= "
";; - } - return $r; -} - - - -$time_start = microtime(true); - - -$special = 'Special'; -if ($specialMapName != '') - $special = $specialMapName; - -?> -
- -
-
- -
- EXAMPLE DATA -
1 2 3 4
RankNameMoves
1
vzl[pi]
41
2
Anderson[pi]
41
3
???t?d?
41
4
DothThouHoist?
41
5
WuTheFWasThat
41
6
Eric (??)
41
7
Lana Del Gabe
41
8
deWax
41
9
Jared[pi]
41
10
Goa [R-TD]
41
-
- - -
- - - -
- - - -
-
- - - - - - -"; - $headers .= "Rank"; - $headers .= "Name"; - $headers .= "Moves"; - $headers .= "Time taken"; - $headers .= ""; - //Start table - //$r .= ""; - //$r .= ""; - //Headers on the top. including Rank. - //$r .= ""; - //$r .= $headers; - //$r .= ""; - - $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 = "\n"; - $x .= ""; - $x .= ""; - //$x .= "'; - $x .= ''; - $x .= ''; - $x .= ""; - - if ($userID == $_SESSION['userID']) { - $promotedContent .= $x; - $championPoints = $row['championPointsWorth']; - } else { - $content .= $x; - } - - $i++; - } - - $r = ''; - if($championPoints != null && $championPoints > 0) - { - $r .= "
Points earned: $championPoints
"; - } - $r .= "
$caption
$i$displayName" . $row['Name'] . '' . $row['Moves'] . '' . $row['Timetaken'] . '
"; - $r .= ""; - $r .= $headers; - $r .= $promotedContent; - $r .= $content; - - $r .= "
$caption
"; - return $r; -} - -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; -} - - -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); -} - -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 .= '
'; - $r .= "
"; - $r .= '
'; - $r .= $stats; - $r .= '
'; - - $r .= '
'; - $r .= "Best solution for this map: $bestMoves by $byName "; - $r .= DisplayMap($map, $mapID, 'normal', 2); - $r .= '
'; - $r .= '
'; - return $r; -} - - -?> diff --git a/pages/scores.php b/pages/scores.php new file mode 100644 index 0000000..3a79529 --- /dev/null +++ b/pages/scores.php @@ -0,0 +1,531 @@ + + + + + + + + + + + + +
+ +
+

+
+ +
+< Previous Day +Next Day > +Yesterday >> +
+ +
+name == '') + $map->name = $mapNamesByType[$mapType]; + $r[$mapID] = $map; + + } + return $r; +} + + +function getMapNavigation(&$maps) { + foreach ($maps as $mapID => &$map) { + $r .= "
"; + $r .= $map->name; + $r .= DisplayMapThumbnail($map); + $r .= "
";; + } + return $r; +} + + + +$time_start = microtime(true); + + +$special = 'Special'; +if ($specialMapName != '') + $special = $specialMapName; + +?> +
+ +
+
+ +
+ +
+ + +
+ + + +
+ + + +
+
+ + + + + + +"; + $headers .= "Rank"; + $headers .= "Name"; + $headers .= "Moves"; + $headers .= "Time taken"; + $headers .= ""; + //Start table + //$r .= ""; + //$r .= ""; + //Headers on the top. including Rank. + //$r .= ""; + //$r .= $headers; + //$r .= ""; + + $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 = "\n"; + $x .= ""; + $x .= ""; + //$x .= "'; + $x .= ''; + $x .= ''; + $x .= ""; + + if ($userID == $_SESSION['userID']) { + $promotedContent .= $x; + $championPoints = $row['championPointsWorth']; + } else { + $content .= $x; + } + + $i++; + } + + $r = ''; + if($championPoints != null && $championPoints > 0) + { + $r .= "
Points earned: $championPoints
"; + } + $r .= "
$caption
$i$displayName" . $row['Name'] . '' . $row['Moves'] . '' . $row['Timetaken'] . '
"; + $r .= ""; + $r .= $headers; + $r .= $promotedContent; + $r .= $content; + + $r .= "
$caption
"; + return $r; +} + +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; +} + + +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); +} + +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 .= '
'; + $r .= "
"; + $r .= '
'; + $r .= $stats; + $r .= '
'; + + $r .= '
'; + $r .= "Best solution for this map: $bestMoves by $byName "; + $r .= DisplayMap($map, $mapID, 'normal', 2); + $r .= '
'; + $r .= '
'; + return $r; +} + + +?> -- cgit v1.2.3