diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..e2c7f28 --- /dev/null +++ b/.prettierignore @@ -0,0 +1,2 @@ +*.php +*.inc.php \ No newline at end of file diff --git a/composer.json b/composer.json index 8d8c008..762dd84 100644 --- a/composer.json +++ b/composer.json @@ -1,5 +1,10 @@ { - "require": { - "twig/twig": "^3.0" + "autoload": { + "psr-4": { + "engine\\": "engine" } + }, + "require": { + "twig/twig": "^3.0" + } } diff --git a/engine/StartKit.php b/engine/StartKit.php new file mode 100644 index 0000000..dc1a6d7 --- /dev/null +++ b/engine/StartKit.php @@ -0,0 +1,16 @@ +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); + } +} diff --git a/index.php b/index.php index 75ce545..579ddc3 100644 --- a/index.php +++ b/index.php @@ -1,148 +1,7 @@ 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); - } -} +use engine\StartKit as StartKit; new StartKit();