/** * Template rendering * * Uses Twig * * @param string $template Template file name * @param array $data Data passed to template * @return void */ public function renderTemplate($template, array $data = array()) { require_once __DIR__ . '/../../vendor/Twig/Autoloader.php'; Twig_Autoloader::register(); $templateFolder = __DIR__ . '/../view/'; $teamplateFile = $templateFolder . $template . ".html.twig"; $loader = new Twig_Loader_Filesystem($templateFolder); $twig = new Twig_Environment($loader, array('cache' => __DIR__ . '/../../cache/', 'debug' => isset($_SERVER['SERVER_NAME']) && preg_match("/localhost/", $_SERVER['SERVER_NAME']) ? true : false)); // Add link generator $this->linkGenerator() for templates $twig = new Twig_Environment($loader); $linkGenerator = new Twig_SimpleFunction('link', array($this, "linkGenerator")); $twig->addFunction($linkGenerator); // Root for links $twig->addGlobal('LINK_BASE', LINK_BASE); // Category list $twig->addGlobal('categoryList', $this->db->category()); // Flash messages $twig->addGlobal('messages', $_SESSION['messages']); // User $auth = new Auth($this->db); if ($auth->isLogged()) { $twig->addGlobal('authUser', $auth->userInfo()); } if (!is_file($teamplateFile) && $template == '404') { die('404: Not found'); } if (!is_file($teamplateFile)) { $this->notFound(); } try { // render template echo $twig->render($template . ".html.twig", $data); } catch (Exception $e) { die(__LINE__ . " :: " . $e->getMessage()); } // reset messages $_SESSION['messages'] = array(); }