loader = new FilesystemLoader(dirname($_SERVER["DOCUMENT_ROOT"]) . "/Templates/"); $this->twig = new Environment($this->loader, ["debug" => true]); SessionWrapper::Start(); $this->twig->addGlobal('_SESSION_', $_SESSION); $this->twig->addGlobal('_ALGOLIA_INDEXES_', [ "Tunes" => Configuration::GetConfig("Algolia", "Indexes", "Tunes"), "Dances" => Configuration::GetConfig("Algolia", "Indexes", "Dances"), ]); $this->twig->addGlobal('_ALGOLIA_APP_ID_', Configuration::GetConfig("Algolia", "AppID")); $this->twig->addGlobal('_ALGOLIA_SEARCH_ONLY_API_KEY_', Configuration::GetConfig("Algolia", "APIKeys", "SearchOnly")); $this->twig->addGlobal('_CURRENT_PAGE_', strtok($_SERVER['REQUEST_URI'], '?')); $this->twig->addGlobal('_CURRENT_URI_', urlencode("http://{$_SERVER['HTTP_HOST']}{$_SERVER['REQUEST_URI']}")); $this->twig->addGlobal('_USER_TIMEZONE_OFFSET_', 60); $this->twig->addExtension(new FiltersExtension()); $this->twig->addExtension(new FunctionExtensions($this->twig)); $this->twig->addExtension(new NavigationExtension()); $this->twig->addExtension(new StringManipulationExtension()); $this->twig->addExtension(new TwigTests()); } public static function AutoRenderTwig(array $arguments) { $twigRenderer = new TwigWrapper(); $twigRenderer->RenderTwig($twigRenderer->GuessTargetTwigFile(), $arguments); } public static function RenderTwig(string $target, array $arguments) { $twigRenderer = new TwigWrapper(); echo $twigRenderer->twig->render($target, $arguments); die(); } private function GuessTargetTwigFile() : string { $twigFile = str_replace(search: ".php",replace: ".html.twig", subject: $_SERVER['REQUEST_URI']); if($twigFile == "/") $twigFile = "/index.html.twig"; $pageTemplateDirectory = __DIR__ . "/../../Templates/Pages"; if(!file_exists($pageTemplateDirectory . $twigFile)) return "ErrorPages/404.html.twig"; return "Pages" . $twigFile; } }