themePath = $themePath; $this->themeAssetPath = $themeAssetPath; $path = explode("/", $themeAssetPath); $this->themeFolder = $path[4]; $this->settings = json_decode(file_get_contents("./data/settings.json"), true); $this->posts = json_decode(file_get_contents("./data/posts.json"), true); $this->archives = json_decode(file_get_contents("./data/archives.json"), true); $this->loader = new \Twig\Loader\FilesystemLoader( $themePath . "/" . $path[4] ); $this->twig = new \Twig\Environment($this->loader, []); $this->router($_SERVER["REQUEST_URI"]); } public function router(string $request) { $pageInfo = [ "keywords" => $this->settings["keywords"], "description" => $this->settings["description"], "image" => $this->themeAssetPath . "/assets/images/global/default-bg.jpg", ]; $featureList = explode(",", $this->posts["feature"]); $fileList = explode(",", $this->posts["files"]); $images = []; $files = []; foreach ($featureList as $file) { $item = trim($file); $ext = pathinfo($item, PATHINFO_EXTENSION); if ($item != null || $item != "") { array_push($images, ["file" => $item, "type" => trim($ext)]); } } foreach ($fileList as $file) { $item = trim($file); $ext = pathinfo($item, PATHINFO_EXTENSION); if ($item != null || $item != "") { array_push($files, ["file" => $item, "type" => trim($ext)]); } } $menu = $this->settings["menu"]; switch ($request) { case "/": $recent = $this->posts["recent_posts"]; $featured = $this->posts["featured_posts"]; $template = "index.twig"; $content = $this->posts["index-content"]; $pageOptions = [ "debug" => true, //for theme kit "theme" => $this->themeFolder, //for theme kit "title" => "This is Fipamo", "dynamicRender" => $this->settings["dynamicRender"], "background" => $this->themeAssetPath . "/assets/images/global/default-bg.jpg", "recent" => $recent, "featured" => $featured, "info" => $pageInfo, "menu" => $menu, "content" => $content, ]; break; case "/page": $content = $this->posts["content"]; $meta = $this->posts["meta"]; $template = $request . ".twig"; $pageOptions = [ "debug" => true, //for theme kit "theme" => $this->themeFolder, //for theme kit "title" => "Page Title", "dynamicRender" => $this->settings["dynamicRender"], "background" => $this->themeAssetPath . "/assets/images/global/default-bg.jpg", "content" => $content, "meta" => $meta, "info" => $pageInfo, "menu" => $menu, "media" => $images, "files" => $files, ]; break; case "/tags": $tags = $this->settings["tag_list"]; $template = $this->themeFolder . "/tags.twig"; $pageOptions = [ "debug" => true, //for theme kit "theme" => $this->themeFolder, //for theme kit "title" => "Pages Tagged as Tag", "dynamicRender" => $this->settings["dynamicRender"], "background" => $this->themeAssetPath . "/assets/images/global/default-bg.jpg", "tag_list" => $tags, "info" => $pageInfo, "menu" => $menu, ]; break; case "/archive": $archive = $this->archives; $template = $this->themeFolder . "/archive.twig"; $pageOptions = [ "debug" => true, //for theme kit "theme" => $this->themeFolder, //for theme kit "title" => "Archive", "dynamicRender" => $this->settings["dynamicRender"], "background" => $this->themeAssetPath . "/assets/images/global/default-bg.jpg", "archives" => $archive, "info" => $pageInfo, "menu" => $menu, ]; break; default: http_response_code(404); require __DIR__ . "/views/404.php"; break; } echo $this->twig->render($template, $pageOptions); } } new StartKit();