moduleService = new ModuleService(); $this->files = new Files(); } public function getKernelInfo(): false|array|string { $info = []; $info['path'] = KERNEL_DIR; if (file_exists(KERNEL_DIR . "/manifest.json")) { $manifest = json_decode(file_get_contents(KERNEL_DIR . "/manifest.json"), true); $manifest = getConst($manifest); $info = array_merge($info, $manifest); } return $info; } public function isLastVersion(): bool { if ($this->moduleService->isServerAvailable()) { $modules_info = RESTClient::request($_ENV['MODULE_SHOP_URL'] . '/api/module_shop/gb_slug'); $modules_info = json_decode($modules_info->getBody()->getContents(), true); $kernel_info = $this->getKernelInfo(); foreach ($modules_info as $mod) { if ($mod['slug'] === $kernel_info['slug'] && $mod['version'] === $kernel_info['version']) { return true; } } } return false; } public function updateKernel(string $path): bool { $request = new Request(); $files = $request->post('files'); Debug::dd($files); $zip = new ZipArchive; if (file_exists($path)) { $tmpKernelDir = md5(time()); $res = $zip->open($path); if ($res === TRUE) { $tmpKernelDirFull = RESOURCES_DIR . '/tmp/kernel/' . $tmpKernelDir . "/"; $zip->extractTo($tmpKernelDirFull); $zip->close(); $this->files->recursiveRemoveKernelDir(); $this->files->copy_folder($tmpKernelDirFull . 'kernel' , ROOT_DIR . "/kernel"); foreach ($files as $file) { if ($file === 'bootstrap') { $this->files->recursiveRemoveDir(ROOT_DIR . '/bootstrap'); $this->files->copy_folder($tmpKernelDirFull . 'bootstrap' , ROOT_DIR . '/bootstrap'); } copy($tmpKernelDirFull . $file , ROOT_DIR . '/' . $file); } $this->files->recursiveRemoveDir($tmpKernelDirFull); return true; } } return false; } }