/** * Loads the test buckets and sets the bucket seed */ public static function initialize($seed = null) { if (!self::$_initialized) { self::$_tests = Cache::fetch(function () { return json_decode(@file_get_contents('buckets.json')); }, TEST_BUCKET_CACHE_KEY); self::$_initialized = true; // Add template helpers Display::addHelper('inTestBucket', function ($template, $context, $args, $source) { if (preg_match_all('/([\\w]+)=\\"([^\\"]+)\\"/i', $args, $matches)) { $args = new stdClass(); for ($i = 0, $count = count($matches[0]); $i < $count; $i++) { $key = $matches[1][$i]; $args->{$key} = str_replace('"', '', $matches[2][$i]); } if (isset($args->key) && isset($args->value)) { if (self::get($args->key) == $args->value) { return $template->render($context); } } else { throw new Exception('inTestBucket requires "key" and "test" parameters'); } } }); } if ($seed || !self::$_seed) { self::$_seed = $seed ?: (int) str_replace('.', '', $_SERVER['REMOTE_ADDR']); } }
/** * Registers some generic bracket related template helpers */ public static function _initTemplateHelpers() { Lib\Display::addHelper('isBracketNotHidden', function ($template, $context, $args, $source) { $bracket = $context->get($args); $retVal = ''; if ($bracket instanceof Api\Bracket && $bracket->state != BS_HIDDEN) { $retVal = $template->render($context); } return $retVal; }); Lib\Display::addHelper('hasNotStarted', function ($template, $context, $args, $source) { return self::_bracketStateIs($template, $context, $args, BS_NOT_STARTED); }); Lib\Display::addHelper('isBracketNominations', function ($template, $context, $args, $source) { return self::_bracketStateIs($template, $context, $args, BS_NOMINATIONS); }); Lib\Display::addHelper('isBracketEliminations', function ($template, $context, $args, $source) { return self::_bracketStateIs($template, $context, $args, BS_ELIMINATIONS); }); Lib\Display::addHelper('isBracketVoting', function ($template, $context, $args, $source) { return self::_bracketStateIs($template, $context, $args, BS_VOTING); }); Lib\Display::addHelper('isBracketFinal', function ($template, $context, $args, $source) { return self::_bracketStateIs($template, $context, $args, BS_FINAL); }); Lib\Display::addHelper('hasResults', function ($template, $context, $args, $source) { $retVal = ''; $bracket = $context->get($args); if ($bracket instanceof Api\Bracket && ($bracket->state == BS_VOTING || $bracket->state == BS_FINAL)) { $retVal = $template->render($context); } else { $template->setStopToken('else'); $template->discard($context); $template->setStopToken(false); $retVal = $template->render($context); } return $retVal; }); }