diff --git a/kernel/App.php b/kernel/App.php index f185ce8..1e6cbb9 100644 --- a/kernel/App.php +++ b/kernel/App.php @@ -7,6 +7,7 @@ namespace kernel; use kernel\helpers\Debug; use kernel\modules\user\models\User; use kernel\services\ModuleService; +use kernel\services\ThemeService; use Phroute\Phroute\Dispatcher; class App @@ -24,6 +25,8 @@ class App public ModuleService $moduleService; + public ThemeService $themeService; + public static Database $db; public function run(): void @@ -39,6 +42,7 @@ class App public function load(): static { $this->moduleService = new ModuleService(); + $this->themeService = new ThemeService(); App::$collector = new CgRouteCollector(); $this->setRouting(); @@ -53,6 +57,10 @@ class App foreach ($modules_routs as $rout){ include "$rout"; } + $activeTheme = getConst($this->themeService->getActiveTheme()); + if (!empty($activeTheme)){ + include $activeTheme . "/" . $this->themeService->getThemeRout($activeTheme); + } } public static function create(): App diff --git a/kernel/CgView.php b/kernel/CgView.php index 5934f82..68237bb 100644 --- a/kernel/CgView.php +++ b/kernel/CgView.php @@ -2,6 +2,8 @@ namespace kernel; +use kernel\helpers\Debug; + class CgView { public string $viewPath = ''; @@ -61,6 +63,13 @@ class CgView private function createContent(string $viewFile, array $data = []): false|string { ob_start(); + + if ($this->varToLayout){ + foreach ($this->varToLayout as $key => $datum) { + ${"$key"} = $datum; + } + } + $view = $this; foreach ($data as $key => $datum) { ${"$key"} = $datum; diff --git a/kernel/manifest.json b/kernel/manifest.json index bc1217e..c621680 100644 --- a/kernel/manifest.json +++ b/kernel/manifest.json @@ -1,6 +1,6 @@ { "name": "Kernel", - "version": "0.1.3", + "version": "0.1.4", "author": "ITGuild", "slug": "kernel", "type": "kernel", diff --git a/kernel/services/ThemeService.php b/kernel/services/ThemeService.php new file mode 100644 index 0000000..92557eb --- /dev/null +++ b/kernel/services/ThemeService.php @@ -0,0 +1,41 @@ +option = new Option(); + $this->findActiveAdminTheme(); + } + + public function findActiveAdminTheme(): void + { + $model = $this->option::where("key", "active_theme")->first(); + $this->active_theme = $model->value; + } + + public function getActiveTheme(): string + { + return $this->active_theme; + } + + public function getThemeRout(string $path) + { + if (file_exists($path . "/manifest.json")){ + $manifest = json_decode(file_get_contents($path . "/manifest.json"), true); + if ($manifest['routs']) { + return $manifest['routs']; + } + } + + return false; + } + +} \ No newline at end of file