kernel update to v0.1.5
This commit is contained in:
		@@ -1,6 +1,6 @@
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
  "name": "Kernel",
 | 
					  "name": "Kernel",
 | 
				
			||||||
  "version": "0.1.4",
 | 
					  "version": "0.1.5",
 | 
				
			||||||
  "author": "ITGuild",
 | 
					  "author": "ITGuild",
 | 
				
			||||||
  "slug": "kernel",
 | 
					  "slug": "kernel",
 | 
				
			||||||
  "type": "kernel",
 | 
					  "type": "kernel",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -3,18 +3,31 @@
 | 
				
			|||||||
namespace kernel\modules\themes\controllers;
 | 
					namespace kernel\modules\themes\controllers;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use DirectoryIterator;
 | 
					use DirectoryIterator;
 | 
				
			||||||
 | 
					use GuzzleHttp\Exception\GuzzleException;
 | 
				
			||||||
use JetBrains\PhpStorm\NoReturn;
 | 
					use JetBrains\PhpStorm\NoReturn;
 | 
				
			||||||
 | 
					use Josantonius\Session\Exceptions\HeadersSentException;
 | 
				
			||||||
 | 
					use Josantonius\Session\Exceptions\SessionNotStartedException;
 | 
				
			||||||
 | 
					use Josantonius\Session\Exceptions\SessionStartedException;
 | 
				
			||||||
 | 
					use Josantonius\Session\Exceptions\WrongSessionOptionException;
 | 
				
			||||||
 | 
					use Josantonius\Session\Facades\Session;
 | 
				
			||||||
use kernel\AdminController;
 | 
					use kernel\AdminController;
 | 
				
			||||||
use kernel\helpers\Debug;
 | 
					use kernel\helpers\Debug;
 | 
				
			||||||
use kernel\models\Option;
 | 
					use kernel\models\Option;
 | 
				
			||||||
use kernel\Request;
 | 
					use kernel\Request;
 | 
				
			||||||
 | 
					use kernel\services\ModuleService;
 | 
				
			||||||
 | 
					use kernel\services\ThemeService;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class ThemeController extends AdminController
 | 
					class ThemeController extends AdminController
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					    public ThemeService $themeService;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public ModuleService $moduleService;
 | 
				
			||||||
    protected function init(): void
 | 
					    protected function init(): void
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        parent::init();
 | 
					        parent::init();
 | 
				
			||||||
        $this->cgView->viewPath = KERNEL_MODULES_DIR . "/themes/views/";
 | 
					        $this->cgView->viewPath = KERNEL_MODULES_DIR . "/themes/views/";
 | 
				
			||||||
 | 
					        $this->themeService = new ThemeService();
 | 
				
			||||||
 | 
					        $this->moduleService = new ModuleService();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public function actionIndex(): void
 | 
					    public function actionIndex(): void
 | 
				
			||||||
@@ -62,10 +75,19 @@ class ThemeController extends AdminController
 | 
				
			|||||||
        $this->cgView->render("index.php", ['json' => json_encode($infoToTable, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE)]);
 | 
					        $this->cgView->render("index.php", ['json' => json_encode($infoToTable, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE)]);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * @throws HeadersSentException
 | 
				
			||||||
 | 
					     * @throws WrongSessionOptionException
 | 
				
			||||||
 | 
					     * @throws SessionStartedException
 | 
				
			||||||
 | 
					     * @throws GuzzleException
 | 
				
			||||||
 | 
					     * @throws SessionNotStartedException
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
    #[NoReturn] public function actionActivate(): void
 | 
					    #[NoReturn] public function actionActivate(): void
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        $request = new Request();
 | 
					        $request = new Request();
 | 
				
			||||||
        $this->themeService->setActiveTheme($request->get("p"));
 | 
					        if(!$this->themeService->setActiveTheme($request->get("p"))){
 | 
				
			||||||
 | 
					            $this->redirect("/admin/settings/themes/", 302);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        $this->cgView->render("view.php", ['data' => $this->themeService->getThemeInfo($request->get("p"))]);
 | 
					        $this->cgView->render("view.php", ['data' => $this->themeService->getThemeInfo($request->get("p"))]);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -21,6 +21,7 @@ class ModuleService
 | 
				
			|||||||
    protected null|bool $serverAvailable = null;
 | 
					    protected null|bool $serverAvailable = null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public ModuleShopService $moduleShopService;
 | 
					    public ModuleShopService $moduleShopService;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public function __construct()
 | 
					    public function __construct()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        $this->moduleShopService = new ModuleShopService();
 | 
					        $this->moduleShopService = new ModuleShopService();
 | 
				
			||||||
@@ -608,4 +609,34 @@ class ModuleService
 | 
				
			|||||||
        file_put_contents($filePath, $data);
 | 
					        file_put_contents($filePath, $data);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * @throws GuzzleException
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public function recursiveActivateDependencies(array $dependencies): bool
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $notActiveDependencies = [];
 | 
				
			||||||
 | 
					        foreach ($dependencies as $depend) {
 | 
				
			||||||
 | 
					            if (!$this->isInstall($depend)) {
 | 
				
			||||||
 | 
					                $this->moduleShopService->installModule($depend);
 | 
				
			||||||
 | 
					                if (!$this->setActiveModule($depend)) {
 | 
				
			||||||
 | 
					                    $notActiveDependencies[] = $depend;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            } else {
 | 
				
			||||||
 | 
					                if (!$this->isActive($depend)) {
 | 
				
			||||||
 | 
					                    if (!$this->setActiveModule($depend)) {
 | 
				
			||||||
 | 
					                        $notActiveDependencies[] = $depend;
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if ($notActiveDependencies) {
 | 
				
			||||||
 | 
					            if (!$this->recursiveActivateDependencies($notActiveDependencies)) {
 | 
				
			||||||
 | 
					                return false;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return true;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -88,4 +88,21 @@ class ModuleShopService
 | 
				
			|||||||
        return false;
 | 
					        return false;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * @param string $slug
 | 
				
			||||||
 | 
					     * @return bool
 | 
				
			||||||
 | 
					     * @throws GuzzleException
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public function existsInModuleShop(string $slug): bool
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $modulesInfo = $this->getGroupedBySlugModules();
 | 
				
			||||||
 | 
					        foreach ($modulesInfo as $module) {
 | 
				
			||||||
 | 
					            if ($module['slug'] === $slug) {
 | 
				
			||||||
 | 
					                return true;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return false;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -3,6 +3,7 @@
 | 
				
			|||||||
namespace kernel\services;
 | 
					namespace kernel\services;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use DirectoryIterator;
 | 
					use DirectoryIterator;
 | 
				
			||||||
 | 
					use Josantonius\Session\Facades\Session;
 | 
				
			||||||
use kernel\Flash;
 | 
					use kernel\Flash;
 | 
				
			||||||
use kernel\helpers\Debug;
 | 
					use kernel\helpers\Debug;
 | 
				
			||||||
use kernel\helpers\Files;
 | 
					use kernel\helpers\Files;
 | 
				
			||||||
@@ -22,6 +23,7 @@ class ThemeService
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    protected ModuleShopService $moduleShopService;
 | 
					    protected ModuleShopService $moduleShopService;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public function __construct()
 | 
					    public function __construct()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        $this->option = new Option();
 | 
					        $this->option = new Option();
 | 
				
			||||||
@@ -58,7 +60,6 @@ class ThemeService
 | 
				
			|||||||
        return $this->active_theme;
 | 
					        return $this->active_theme;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * @param string $theme
 | 
					     * @param string $theme
 | 
				
			||||||
     * @return bool
 | 
					     * @return bool
 | 
				
			||||||
@@ -69,27 +70,24 @@ class ThemeService
 | 
				
			|||||||
        $activeTheme = $this->option::where("key", "active_theme")->first();
 | 
					        $activeTheme = $this->option::where("key", "active_theme")->first();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        $themeInfo = $this->getThemeInfo(getConst($theme));
 | 
					        $themeInfo = $this->getThemeInfo(getConst($theme));
 | 
				
			||||||
        if (isset($themeInfo['dependence'])) {
 | 
					        $dependenceArray = RESTClient::request($_ENV['MODULE_SHOP_URL'] . '/api/module_shop/get_all_dependencies/' . $themeInfo['slug']);
 | 
				
			||||||
            $dependence_array = explode(',', $themeInfo['dependence']);
 | 
					        $dependenceArray = json_decode($dependenceArray->getBody()->getContents(), true);
 | 
				
			||||||
            foreach ($dependence_array as $depend) {
 | 
					
 | 
				
			||||||
 | 
					        foreach ($dependenceArray as $depend) {
 | 
				
			||||||
            if (!$this->moduleService->isInstall($depend)) {
 | 
					            if (!$this->moduleService->isInstall($depend)) {
 | 
				
			||||||
                    if ($this->moduleService->isShopModule($depend)) {
 | 
					                if (!$this->moduleShopService->existsInModuleShop($depend)) {
 | 
				
			||||||
                        $this->moduleShopService->installModule($depend);
 | 
					                    Flash::setMessage('error', "Модуль $depend не найден в IT Guild Framework Shop.");
 | 
				
			||||||
                    } else {
 | 
					 | 
				
			||||||
                        Flash::setMessage("error", "Модуль не найден в IT Guild Framework Shop.");
 | 
					 | 
				
			||||||
                    return false;
 | 
					                    return false;
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                } else {
 | 
					 | 
				
			||||||
                    if (!$this->moduleService->isActive($depend)) {
 | 
					 | 
				
			||||||
                        $this->moduleService->setActiveModule($depend);
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (!$this->moduleService->recursiveActivateDependencies($dependenceArray)){
 | 
				
			||||||
 | 
					            return false;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        $activeTheme->value = getConst($theme);
 | 
					        $activeTheme->value = getConst($theme);
 | 
				
			||||||
        $activeTheme->save();
 | 
					        $activeTheme->save();
 | 
				
			||||||
 | 
					 | 
				
			||||||
        return true;
 | 
					        return true;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user