kernel v0.1.4

This commit is contained in:
2025-01-21 16:51:29 +03:00
parent b733a49738
commit 2664f7fd78
35 changed files with 1249 additions and 82 deletions

View File

@ -16,6 +16,7 @@ class AdminThemeService
protected Option $option;
protected string $active_theme;
protected ModuleService $moduleService;
@ -82,12 +83,22 @@ class AdminThemeService
return $info;
}
public function getAdminThemeInfoBySlug(string $slug)
public function getAdminThemeInfoBySlug(string $slug): false|array|string
{
// TODO
$dirs = $this->getAdminThemeDirs();
foreach ($dirs as $dir) {
foreach (new DirectoryIterator($dir) as $fileInfo) {
if ($fileInfo->isDot()) continue;
if ($this->getAdminThemeInfo($fileInfo->getPathname())['slug'] === $slug) {
return $this->getAdminThemeInfo($fileInfo->getPathname());
}
}
}
return false;
}
public function isInstall(string $slug): bool
public function getAdminThemeDirs(): array
{
$adminThemePaths = Option::where("key", "admin_theme_paths")->first();
$dirs = [];
@ -97,6 +108,12 @@ class AdminThemeService
$dirs[] = getConst($p);
}
}
return $dirs;
}
public function isInstall(string $slug): bool
{
$dirs = $this->getAdminThemeDirs();
foreach ($dirs as $dir) {
foreach (new DirectoryIterator($dir) as $fileInfo) {
if ($fileInfo->isDot()) continue;
@ -116,8 +133,7 @@ class AdminThemeService
$modulesInfo = json_decode($modulesInfo->getBody()->getContents(), true);
$themeInfo = $this->getAdminThemeInfo($slug);
// Debug::dd($themeInfo);
$themeInfo = $this->getAdminThemeInfoBySlug($slug);
foreach ($modulesInfo as $mod) {
if ($mod['slug'] === $themeInfo['slug'] && $mod['version'] === $themeInfo['version']) {
return true;
@ -136,7 +152,7 @@ class AdminThemeService
$fileHelper = new Files();
$fileHelper->copy_folder(ROOT_DIR . $path, $tmpThemeDirFull . 'meta/');
$fileHelper->copy_folder(RESOURCES_DIR . '/' . $themeName, $tmpThemeDirFull . 'resources/');
$fileHelper->copy_folder(RESOURCES_DIR . '/admin_themes/' . $themeName, $tmpThemeDirFull . 'resources/');
if (!is_dir(RESOURCES_DIR . '/tmp/admin_themes')) {
$old_mask = umask(0);
@ -178,7 +194,7 @@ class AdminThemeService
if (isset($manifest['resource_path'])) {
$fileHelper->copy_folder($tmpThemeDirFull . "resources", $manifest['resource_path']);
} else {
$fileHelper->copy_folder($tmpThemeDirFull . "resources", RESOURCES_DIR . '/' . $manifest['slug']);
$fileHelper->copy_folder($tmpThemeDirFull . "resources", RESOURCES_DIR . '/admin_themes/' . $manifest['slug']);
}
$fileHelper->recursiveRemoveDir($tmpThemeDirFull);
@ -195,11 +211,20 @@ class AdminThemeService
$this->setActiveAdminTheme(KERNEL_ADMIN_THEMES_DIR . '/default');
}
$fileHelper = new Files();
if (file_exists(ROOT_DIR . $path)) {
$fileHelper->recursiveRemoveDir(ROOT_DIR . $path);
if (file_exists($path)) {
$fileHelper->recursiveRemoveDir($path);
}
if (file_exists(RESOURCES_DIR . '/' . $themeInfo['slug'])) {
$fileHelper->recursiveRemoveDir(RESOURCES_DIR . '/' . $themeInfo['slug']);
if (file_exists(RESOURCES_DIR . '/admin_themes/' . $themeInfo['slug'])) {
$fileHelper->recursiveRemoveDir(RESOURCES_DIR . '/admin_themes/' . $themeInfo['slug']);
}
}
public function update(string $path): bool
{
if ($this->install($path)) {
return true;
}
return false;
}
}