private static function render(Site $site, Response $response, array $blocks) { $redirectTo = $response->getRedirectTo(); if ($redirectTo !== null) { header("Location: " . $redirectTo, true, 303); die; } $rawContent = $response->getRawContent(); if ($rawContent !== "") { echo $rawContent; return; } require_once EDUCASK_ROOT . "/core/thirdPartyLibraries/twig/lib/Twig/Autoloader.php"; Twig_Autoloader::register(); $theme = EDUCASK_ROOT . '/site/themes/' . $site->getTheme(); str_replace('..', '', $theme); if (!is_dir($theme)) { $theme = EDUCASK_ROOT . '/site/themes/default'; } $loader = new Twig_Loader_Filesystem(array($theme)); $baseThemes = glob(EDUCASK_ROOT . '/core/baseThemes/*'); foreach ($baseThemes as $baseTheme) { $name = explode('/', $baseTheme); $name = end($name); $loader->addPath($baseTheme, $name); } $viewsDirectories = glob(EDUCASK_ROOT . '/site/modules/*/views'); foreach ($viewsDirectories as $viewDirectory) { $name = explode('/', $viewDirectory); $name = $name[count($name) - 2]; $loader->addPath($viewDirectory, $name); } $twig = new Twig_Environment($loader, array('debug' => true)); $twig->addExtension(new Twig_Extension_Debug()); $twig->addExtension(new TwigExtensions()); if ($site->isInMaintenanceMode()) { if (!PermissionEngine::getInstance()->currentUserCanDo('bypasssMaintenanceMode')) { echo $twig->render('maintenance.twig', array('site' => $site)); return; } } $noticeEngine = NoticeEngine::getInstance(); $notices = $noticeEngine->getNotices(); $noticeEngine->removeNotices(); echo $twig->render('index.twig', array('site' => $site, 'model' => $response->getObjectToPassToView(), 'title' => $response->getPageTitle(), 'blocks' => $blocks, 'notices' => $notices, 'response' => $response)); }