function getPercentTimesVotedFor($char, $users) { $retVal = 0; $query = 'SELECT round_id FROM round WHERE round_character1_id = :id OR round_character2_id = :id'; $result = Lib\Db::Query('SELECT COUNT(1) AS total, SUM(CASE WHEN character_id = :id THEN 1 ELSE 0 END) AS character_votes FROM votes WHERE round_id IN (' . $query . ') AND user_id IN (' . implode(',', $users) . ')', [':id' => $char->id]); if ($result && $result->count) { $row = Lib\Db::Fetch($result); $retVal = (int) $row->character_votes / (int) $row->total; } return $retVal; }
<?php require 'config.php'; require 'lib/aal.php'; // Disable caching Lib\Cache::setDisabled(true); // Get all brackets that need to be updated $brackets = Api\Bracket::queryReturnAll(['advanceHour' => gmdate('G'), 'state' => ['in' => [BS_ELIMINATIONS, BS_VOTING]]]); if ($brackets && count($brackets)) { foreach ($brackets as $bracket) { echo 'Advancing ', $bracket->name, '...'; $bracket->advance(); Api\Bracket::getBracketByPerma($bracket->perma); echo 'DONE', PHP_EOL; } } // Reorder the brackets based upon participation Lib\Db::Query('CALL proc_UpdateBracketScores'); // Clean out old brackets Lib\Db::Query('CALL proc_CleanBrackets'); // Refresh caches Api\Bracket::getAll();
<?php require 'lib/aal.php'; $db = Lib\Mongo::getDatabase(); $characterRankingInfo = $db->characterRankingInfo; $result = Lib\Db::Query('SELECT * FROM `character` WHERE bracket_id = 6 AND (SELECT COUNT(1) FROM round WHERE round_tier > 0 AND (round_character1_id = character_id OR round_character2_id = character_id)) > 0'); while ($row = Lib\Db::Fetch($result)) { $character = new Api\Character($row); echo $character->name, '...'; $obj = new stdClass(); $obj->characterId = (int) $character->id; $obj->performance = round($character->getAverageRoundPerformance(true) * 100); $obj->alsoVotedFor = $character->getCharactersAlsoVotedFor(false, true); $obj->sameSourceVotes = $character->getCharactersAlsoVotedFor(true, true); // JSON encode/decode the object to strip private keys $obj = json_decode(json_encode($obj)); // Check for this character in the collection so we can update the existing record. This is intentionally // done after the JSON bullshit above to make sure the object is correctly represented $record = $characterRankingInfo->findOne(['characterId' => $character->id]); if ($record) { $obj->_id = $record['_id']; } $characterRankingInfo->save($obj); echo 'DONE', PHP_EOL; }