public function __construct() { parent::__construct(); $this['debug'] = filter_var(StatTracker::getConstant("DEBUG", false), FILTER_VALIDATE_BOOLEAN); $this->basedir = dirname($_SERVER['SCRIPT_FILENAME']); $this->logger = new Logger(LOG_DIR, $this['debug'] ? LogLevel::DEBUG : LogLevel::INFO); $this->register(new \Silex\Provider\SessionServiceProvider()); $this->register(new \Silex\Provider\TwigServiceProvider(), array('twig.path' => array($this->basedir . "/views", $this->basedir . "/resources", $this->basedir . "/resources/scripts"))); $this['twig']->addFilter(new \Twig_SimpleFilter('name_sort', function ($array) { usort($array, function ($a, $b) { return strcmp($a->name, $b->name); }); return $array; })); }
} })->assert('page', '[a-z-]+')->value('page', 'dashboard'); $StatTracker->get('/page/{page}', function (Request $request, $page) use($StatTracker) { $page_parameters = array(); if ($page == "submit-stats") { $date = $request->get("date"); $date = $StatTracker->isValidDate($date) ? $date : null; if ($date == null || new DateTime() < new DateTime($date)) { $StatTracker->getAgent()->getStats("latest", true); $date = date("Y-m-d"); } else { $StatTracker->getAgent()->getStats($date, true); } $page_parameters['date'] = $date; } return $StatTracker['twig']->render($page . ".twig", array("agent" => $StatTracker->getAgent(), "constants" => array("admin_agent" => StatTracker::getConstant("ADMIN_AGENT"), "email_submission" => StatTracker::getConstant("EMAIL_SUBMISSION")), "stats" => $StatTracker->getStats(), "faction_class" => $StatTracker->getAgent()->faction == "R" ? "resistance-agent" : "enlightened-agent", "faction_color" => $StatTracker->getAgent()->faction == "R" ? RES_BLUE : ENL_GREEN, "parameters" => $page_parameters)); }); $StatTracker->get("/resources/{resource_dir}/{resource}", function (Request $request, $resource) use($StatTracker) { switch ($resource) { case "style.css": $file = "./resources/css/style.less"; $lastModified = filemtime($file); $css = new Symfony\Component\HttpFoundation\Response("", 200, array("Content-Type" => "text/css")); $css->setLastModified(new \DateTime("@" . filemtime($file))); if ($css->isNotModified($request)) { $css->setNotModified(); } else { $parser = new Less_Parser(array("compress" => true)); $parser->parseFile($file, $request->getBaseUrl()); $css->setLastModified(new \DateTime("@" . filemtime($file))); $css->setContent($parser->getCss());