function showResults() { #---------------------------------------------------------------------- global $chosenRegionId, $chosenSingle, $chosenAverage; #------------------------------ # Prepare stuff for the query. #------------------------------ $regionCondition = regionCondition('result'); $limitCondition = 'LIMIT 120'; $valueSource = $chosenAverage ? 'average' : 'best'; $valueName = $chosenAverage ? 'Average' : 'Single'; #------------------------------ # Get results from database. #------------------------------ $limitNumber = 300; $ranks = getRanks($valueName, $chosenRegionId); list($rows, $header) = sumOfRanks($valueName, getAllEventIds(), $ranks, $limitNumber + 20); $header = preg_replace('/ +/', '|', preg_replace('/\\[\\w+\\]/', '', "Rank {$header} ")); foreach (dbQuery("SELECT id, name FROM Persons WHERE subId=1") as $person) { $personName[$person[0]] = $person[1]; } #------------------------------ # Show the table. #------------------------------ $numColumns = count($rows[0]) + 2; $headerAttributes = array(0 => "class='r'", 2 => "class='R2'", $numColumns - 1 => 'class="f"'); for ($i = 3; $i < $numColumns - 1; $i++) { $headerAttributes[$i] = "class='r'"; } tableBegin('results', $numColumns); tableCaption(true, chosenRegionName(true)); # tableHeader( explode( '|', $header), $headerAttributes ); $ctr = $previousSumOfRanks = 0; $showHeader = true; foreach ($rows as $row) { $showHeader |= $ctr % 20 == 0; list($personId, $sumOfRanks) = $row; $ctr++; $no = $sumOfRanks == $previousSumOfRanks ? '' : $ctr; if ($limitCondition && $no > $limitNumber) { break; } if ($showHeader && $no) { tableHeader(explode('|', $header), $headerAttributes); $showHeader = false; } for ($i = 2; $i < $numColumns - 2; $i++) { if (preg_match('/^(10|[1-9])$/', $row[$i])) { $row[$i] = "<span style='color:#0D0'>{$row[$i]}</span>"; } } $row[0] = personLink($row[0], $personName[$row[0]]); $row[] = ''; array_unshift($row, $no); tableRow($row); $previousSumOfRanks = $sumOfRanks; } tableEnd(); }
<?php if (!isset($onlyProvideFunctions)) { #--- Get event ranks $ranksSingle = getRanks('Single'); $ranksAverage = getRanks('Average'); #--- Sum of 3x3/4x4/5x5 ranks, single and average list($single) = sumOfRanks('Single', array('333', '444', '555'), $ranksSingle); list($average) = sumOfRanks('Average', array('333', '444', '555'), $ranksAverage); $lists[] = array("sum_ranks_345", "Sum of 3x3/4x4/5x5 ranks", "Single | Average", "[P] Person [N] Sum [n] 3x3 [n] 4x4 [n] 5x5 [T] | [P] Person [N] Sum [n] 3x3 [n] 4x4 [n] 5x5", my_merge($single, $average)); #--- Sum of all single ranks list($rows, $header) = sumOfRanks('Single', getAllEventIds(), $ranksSingle); $lists[] = array("sum_ranks_single", "Sum of all single ranks", "", $header, $rows); #--- Sum of all average ranks list($rows, $header) = sumOfRanks('Average', getAllEventIds(), $ranksAverage); $lists[] = array("sum_ranks_average", "Sum of all average ranks", "", $header, $rows); } #---------------------------------------------------------------------- function getRanks($sourceName, $regionId = '') { #---------------------------------------------------------------------- #--- Build query for the requested region $query = "SELECT eventId, personId, worldRank FROM Ranks{$sourceName}"; if (in_array($regionId, getAllUsedCountriesIds())) { $query = "SELECT eventId, personId, countryRank FROM Ranks{$sourceName}, Persons WHERE Persons.id=personId AND subId=1 AND countryId='{$regionId}'"; } if (in_array($regionId, getAllUsedContinentIds())) { $query = "SELECT eventId, personId, continentRank FROM Ranks{$sourceName}, Persons, Countries WHERE Persons.id=personId AND subId=1 AND Countries.id=countryId AND continentId='{$regionId}'"; } #--- Process the personal records, build ranks[event][person] foreach (dbQuery($query) as $row) {
foreach ($minBidVar as $bid) { setMinimalBids($bid); } $minBidInsertTime = date('U') - ($beginTime + $categoryInsertTime + $secQuestionsInsertTime + $usersInsertTime + $objectsInsertTime); echo "Done inserting minimal bids. (took " . $minBidInsertTime . " seconds)\r\n\r\n"; echo "Fetching ranks.\r\n"; function getRanks() { $ranks = array(); $ranks['username'] = '******'; $ranks['customer_service'] = 1; $ranks['administrator'] = 1; $ranks['manager'] = 1; return $ranks; } $ranksVar = getRanks(); echo "Done fetching ranks.\r\n"; function setRanks($ranksArr) { global $dbOut; $ranksArr = array("username" => "Admin", "customer_service" => 1, "administrator" => 1, "manager" => 1); $dbOut->insert("ranks", $ranksArr); } echo "Inserting ranks.\r\n"; setRanks(null); /*foreach($ranksVar as $rank) { setRanks($rank); }*/ $ranksInsertTime = date('U') - ($beginTime + $categoryInsertTime + $secQuestionsInsertTime + $usersInsertTime + $objectsInsertTime + $minBidInsertTime); echo "Done inserting ranks. (took " . $ranksInsertTime . " seconds )\r\n\r\n"; $endTime = date('U');
function getTopPlayers() { $players = array(); for ($i = 0; $i < 3000; $i = $i + 500) { $rankingUrl = "http://a.scrollsguide.com/ranking?start=" . $i . "&limit=500"; $json = json_decode(file_get_contents($rankingUrl), true); // due to rate limit sleep(1); foreach ($json["data"] as $player) { $players[] = new Player($player["name"], $player["rating"]); } } return $players; } echo "start: " . date("Y/m/d g:i") . "<br>"; // start $topPlayers = getTopPlayers(); $ranks = getRanks(); $outputObj = array(); foreach ($topPlayers as $player) { $playerInfoUrl = "http://a.scrollsguide.com/player?name=" . $player->getName() . "&fields=name,rankedwon,rank"; $json = json_decode(file_get_contents($playerInfoUrl), true); // due to rate limit sleep(1); $playerInfo = $json["data"]; $player->setRankedGamesWon($playerInfo["rankedwon"]); $player->setRank($ranks[$playerInfo["rank"]]); $outputObj["data"][] = array("name" => $player->getName(), "rating" => $player->getRating(), "rank" => $player->getRank(), "rankedGamesWon" => $player->getRankedGamesWon()); } file_put_contents("test.json", json_encode($outputObj)); echo "end: " . date("Y/m/d g:i");