From 7969dcfa62ac271ed6ef6d6b8d10bcf0659e25b5 Mon Sep 17 00:00:00 2001 From: Patrick Davison Date: Wed, 23 Jan 2013 22:25:28 -0800 Subject: A functional Memberlist again! New and improved! --- css/stats.css | 13 +++++++ do.php | 18 ++++----- includes/datas.php | 25 +++++++++---- js/scores.js | 104 ++++++++++++++++++++++++++++++--------------------- pages/memberlist.php | 85 ++++++++++------------------------------- 5 files changed, 119 insertions(+), 126 deletions(-) diff --git a/css/stats.css b/css/stats.css index 28d6842..122e300 100644 --- a/css/stats.css +++ b/css/stats.css @@ -108,6 +108,19 @@ td, th { position:relative; } +.membersList { + width:850px; +} + +.scoreRight{ + float:right; + margin: 5px; +} +.scoreLeft{ + float:left; + margin: 5px; +} + .scoreMedal { text-align:left; diff --git a/do.php b/do.php index 1009a91..731d69f 100644 --- a/do.php +++ b/do.php @@ -57,12 +57,13 @@ if (isset($_GET['checkachieve']) && $_GET['checkachieve'] == 'true' && $_SESSION } if ($_GET['r'] == 'reqMemberPage') { + $order = $_GET['order']; + $orderBy = $_GET['orderBy']; - $order = 'ORDER BY dateJoined DESC'; $page = $_GET['reqPage'] + 0; if (!is_int($page)) return; - $json = getMembers($order, $page, 4); + $json = getMembers($page, 10, $order, $orderBy); $json['page'] = $page; $encoded = json_encode($json); die($encoded); @@ -253,6 +254,10 @@ if ($_GET['r'] == 'getpath') { } // --------- CONTINUE EXECUTION --------- + //TODO: !! Close the session with session_write_close(); as soon as possible. + // This allows the session file to be opened by other requests. + + // Now we don't have to worry about how long we're taking. // All of this code will execute without the user waiting on the server. @@ -264,15 +269,6 @@ if ($_GET['r'] == 'getpath') { ////Challenge/Tutorial? - - ////--------- RUSH THE PATH BACK TO THE USER - // ignore_user_abort(true); - // $encoded = json_encode($json); - // header("Connection: close"); - // header("Content-Length: " . mb_strlen($encoded)); - // echo $encoded; - // flush(); - ////TODO: Clean this up a bit // if ($_GET['isChallenge'] == 'true') // { diff --git a/includes/datas.php b/includes/datas.php index 8ae5d5f..124b303 100644 --- a/includes/datas.php +++ b/includes/datas.php @@ -708,7 +708,17 @@ function getChampionPointsArray() { } //Select Members -function getMembers($order, $pageNumber = 1, $pageDivide = 50) { +function getMembers($pageNumber = 1, $pageDivide = 50, $order = 'DESC', $orderBy = 'dateJoined') { + + if ($order !== 'ASC' AND $order !== 'DESC') + $order = 'DESC'; + $columns = array('dateJoined', 'dateLogin', 'championPoints', + 'totalMazes', 'totalWins', 'totalTies', 'totalMovesThisWeek', + 'totalMoves', 'display'); + if (!in_array($orderBy, $columns)) + $orderBy = 'dateJoined'; + //These values are now confirmed. + $sqlOrder = "ORDER BY `$orderBy` $order"; $top = $pageNumber * $pageDivide; $bottom = $top - $pageDivide; @@ -720,7 +730,7 @@ function getMembers($order, $pageNumber = 1, $pageDivide = 50) { $row = mysql_fetch_assoc($result); $total = $row['count']; - $output['pageCount'] = $total / $pageDivide; + $output['pageCount'] = ceil(($total / $pageDivide)); $pageRequest = 'all'; if ($pageRequest == 'all') { @@ -745,17 +755,18 @@ function getMembers($order, $pageNumber = 1, $pageDivide = 50) { WHERE solutions.userID = users.ID AND solutions.dateModified BETWEEN DATE_SUB(CURRENT_DATE, INTERVAL 7 DAY) AND CURRENT_DATE) , 0) AS totalMovesThisWeek, - users.totalMazes, - users.totalWins, - users.totalTies, + users.championPoints as championPoints, + users.totalMazes as totalMazes, + users.totalWins as totalWins, + users.totalTies as totalTies, IfNull(userData.wallColor, '#666666') as wallColor, - IfNull(userData.displayColor, '#cccccc'), + IfNull(userData.displayColor, '#cccccc') as displayColor, userData.wallEmblem as wallEmblem, users.datejoined as dateJoined, users.dateLogin as dateLogin FROM `users` LEFT JOIN `userData` ON users.ID = userData.userID - $order + $sqlOrder LIMIT $limitTop, $pageDivide "; diff --git a/js/scores.js b/js/scores.js index 734683a..32f7c7f 100644 --- a/js/scores.js +++ b/js/scores.js @@ -219,7 +219,9 @@ function scoresFormatPageNavi(JO) { //Memberlist related functions: var membersPages = new Object; -var membersCurrentPage = 1; +var membersCurrentPage = 1; +var membersOrderBy = 'joined'; +var membersOrder = 'ASC'; function membersRequestPage(page) { console.log('membersRequestPage', page); @@ -239,7 +241,7 @@ function membersRequestPage(page) { //console.log("Requesting Page", page, ajax.inUse); // == Additionally, check for achievements. - ajax.requestFile = "do.php?r=reqMemberPage&reqPage="+page; + ajax.requestFile = "do.php?r=reqMemberPage&reqPage="+page+"&orderBy="+membersOrderBy+"&order="+membersOrder; ajax.onCompletion = membersRequestPageDone; // Specify function to be executed on response. //ajax.onLoading = ''; //ajax.onLoaded = ''; @@ -255,8 +257,21 @@ function membersRequestPageDone() { return; membersUpdatePage(JO.page, membersFormatPage(JO)); } +function membersToggleOrder() { + if (membersOrder == 'ASC') + membersOrder = 'DESC'; + else + membersOrder = 'ASC'; +} + +function membersShowPage(page, orderBy) { + + if (orderBy) { + if (membersOrderBy == orderBy) + membersToggleOrder(); + membersOrderBy = orderBy; + } -function membersShowPage(page) { page = page - 0; console.log('membersShowPage', page); if (membersPreparePage(page) == false) { @@ -276,7 +291,7 @@ function membersShowPage(page) { //Also; update the page - if (page != membersCurrentPage) { + if (page != membersCurrentPage || orderBy) { membersRequestPage(page); } membersCurrentPage = page; @@ -308,7 +323,7 @@ function membersFormatPageNavi(JO) { var r = ''; var showedPrevPage = true; for (var i = 1; i <= JO.pageCount; i++) { - if ( + if ( (JO.page > i - 3 && JO.page < i + 3) || (i == 1) || (i == JO.pageCount) @@ -329,6 +344,24 @@ function membersFormatPageNavi(JO) { showedPrevPage = false; } } + var nextPage = JO.page - 0 + 1; + var prevPage = JO.page - 1; + if (JO.pageCount > 1) { + if (JO.page < JO.pageCount) { + r = r+" >>>"; + r = r+" >"; + } else { + r = r+" >>>"; + r = r+" >"; + } + if (JO.page > 1) { + r = " <"+r; + r = " <<<"+r; + } else { + r = r+" <<<"; + r = r+" <"; + } + } return r; } @@ -336,22 +369,24 @@ function membersFormatPageNavi(JO) { function membersFormatPage(JO) { // console.log("Formating page"); - var p = ""; + var p = "
"; if (JO.pageCount > 1) { var navi = membersFormatPageNavi(JO); - p = p+""; + p = p+""; } p = p+""; p = p+""; - p = p+""; - p = p+""; - p = p+""; - p = p+""; - p = p+""; - p = p+""; - p = p+""; - p = p+""; + p = p+""; + p = p+""; + p = p+""; + p = p+""; + p = p+""; + p = p+""; + p = p+""; + p = p+""; + p = p+""; p = p+""; var showedLastUser = true; @@ -369,19 +404,23 @@ function membersFormatPage(JO) { if (previousI != i + 1) if (previousI < i - 1 && previousI != 0) styleClass = 'border-top: 6px solid #777799;'; + + if (u.wallEmblem == undefined) + u.wallEmblem = 'blank.png'; - p = p+ ""; + p = p+ ""; p = p+ ""; - p = p+ ""; + p = p+ ""; p = p+ ""; p = p+ ""; p = p+ ""; @@ -393,29 +432,8 @@ function membersFormatPage(JO) { previousI = i; } - - //p = p+""; + p = p+""; p = p+"
"+navi+"
"+navi+"
RankNameMazesMovesPast WeekWinsTiesJoinedLast Login"; + p = p+" NameCPMazesMovesPast WeekWinsTiesJoinedLast Login
"; p = p+ i+ ""; + + p = p+ ""; p = p+ "
"; - p = p+ "
"; - p = p+ "
"; + p = p+ "
"; + p = p+ "
"; p = p+ "
"; - p = p+ ""; - p = p+ ""+u.display+""; + p = p+ " "+u.display+""; p = p+ "
"+u.championPoints+""+u.totalMazes+""+u.totalMoves+""+u.totalMovesThisWeek+"
"+navi+"
"+navi+"
"; - - var nextPage = JO.page - 0 + 1; - var prevPage = JO.page - 1; - - if (JO.pageCount > 1) { - if (JO.page < JO.pageCount) { - p = p+">"; - } else - p = "
>
"+p; - if (JO.page > 1) { - p = "<"+p; - } else - p = "
<
"+p; - } - p = "
"+p+"
"; - - //console.log(p); - //console.log('jo page', JO.page); - //console.log('jo pagecount', JO.pageCount); - //p = JO.navi+p; return p; } diff --git a/pages/memberlist.php b/pages/memberlist.php index 038b023..641034f 100644 --- a/pages/memberlist.php +++ b/pages/memberlist.php @@ -17,88 +17,43 @@ include_once ('./includes/sqlEmbedded.php'); include_once ('./includes/datas.php'); - -//Order by prep -$c = 'totalMovesThisWeek'; -if (isset($_GET['c'])) { - switch ($_GET['c']) { - case "totalMoves": - $c = 'totalMoves'; - break; - case "totalMovesThisWeek": - $c = 'totalMovesThisWeek'; - break; - case "totalMazes": - $c = 'totalMazes'; - break; - case "totalWins": - $c = 'totalWins'; - break; - case "totalTies": - $c = 'totalTies'; - break; - case "dateJoined": - $c = 'dateJoined'; - break; - case "dateLogin": - $c = 'dateLogin'; - break; - } -} -$o = 'DESC'; -if (isset($_GET['o'])) { - switch ($_GET['o']) { - case "desc": - $o = 'DESC'; - break; - case "asc": - $o = 'ASC'; - break; - } -} - ?> -
-
- -
-"; +
+
+