From f1056b31b485629cfafeac8c60068932699c038d Mon Sep 17 00:00:00 2001 From: blackcoder87 Date: Sun, 23 Jun 2024 15:57:07 +0200 Subject: [PATCH] Picked some more parts of #962 --- .../admin/controllers/admin/Layouts.php | 111 +++---- .../admin/controllers/admin/Modules.php | 301 ++++++++++-------- .../admin/controllers/admin/Settings.php | 78 ++--- application/modules/admin/mappers/Layouts.php | 40 +++ application/modules/admin/mappers/Module.php | 117 +++---- application/modules/admin/models/Layout.php | 144 ++++++--- .../admin/views/admin/settings/update.php | 30 +- 7 files changed, 442 insertions(+), 379 deletions(-) create mode 100644 application/modules/admin/mappers/Layouts.php diff --git a/application/modules/admin/controllers/admin/Layouts.php b/application/modules/admin/controllers/admin/Layouts.php index c3866cd02..016c65086 100644 --- a/application/modules/admin/controllers/admin/Layouts.php +++ b/application/modules/admin/controllers/admin/Layouts.php @@ -8,6 +8,7 @@ namespace Modules\Admin\Controllers\Admin; use Ilch\Validation; +use Modules\Admin\Mappers\Layouts as LayoutsMapper; use Modules\Admin\Mappers\Module as ModuleMapper; use Modules\Admin\Mappers\LayoutAdvSettings as LayoutAdvSettingsMapper; use Modules\Admin\Models\Layout as LayoutModel; @@ -61,48 +62,26 @@ public function init() public function indexAction() { + $layoutsMapper = new LayoutsMapper(); + $this->getLayout()->getAdminHmenu() ->add($this->getTranslator()->trans('menuLayouts'), ['action' => 'index']); $layouts = []; - $versionsOfLayouts = []; - $modulesNotInstalled = []; - foreach (glob(APPLICATION_PATH . '/layouts/*') as $layoutPath) { - if (is_dir($layoutPath)) { - $configClass = '\\Layouts\\' . ucfirst(basename($layoutPath)) . '\\Config\\Config'; - $config = new $configClass($this->getTranslator()); - $model = new LayoutModel(); - $model->setKey(basename($layoutPath)); - $model->setName($config->config['name']); - $model->setVersion($config->config['version']); - $model->setAuthor($config->config['author']); - if (!empty($config->config['link'])) { - $model->setLink($config->config['link']); - } - $model->setDesc($config->config['desc']); - if (!empty($config->config['modulekey'])) { - $moduleMapper = new ModuleMapper(); - if ($moduleMapper->getModuleByKey($config->config['modulekey']) === null) { - $modulesNotInstalled[$config->config['modulekey']] = $config->config['modulekey']; - } - $model->setModulekey($config->config['modulekey']); - } - if (!empty($config->config['settings'])) { - $model->setSettings($config->config['settings']); - } - if (!empty($config->config['ilchCore'])) { - $model->setIlchCore($config->config['ilchCore']); - } - $layouts[] = $model; - $versionsOfLayouts[basename($layoutPath)] = $config->config['version']; - } + foreach ($layoutsMapper->getLocalModules() as $key) { + $configClass = '\\Layouts\\' . ucfirst($key) . '\\Config\\Config'; + $config = new $configClass($this->getTranslator()); + $model = new LayoutModel(); + + $model->setKey($key) + ->setByArray($config->config); + + $layouts[] = $model; } $this->getView()->set('updateserver', $this->getConfig()->get('updateserver') . 'layouts2.php') ->set('defaultLayout', $this->getConfig()->get('default_layout')) ->set('layouts', $layouts) - ->set('modulesNotInstalled', $modulesNotInstalled) - ->set('coreVersion', $this->getConfig()->get('version')) - ->set('versionsOfLayouts', $versionsOfLayouts); + ->set('coreVersion', $this->getConfig()->get('version')); } public function defaultAction() @@ -116,6 +95,8 @@ public function defaultAction() public function searchAction() { + $layoutsMapper = new LayoutsMapper(); + $this->getLayout()->getAdminHmenu() ->add($this->getTranslator()->trans('menuLayouts'), ['action' => 'index']) ->add($this->getTranslator()->trans('menuSearch'), ['action' => 'search']); @@ -145,21 +126,21 @@ public function searchAction() $this->addMessage('downSuccess'); } } finally { - $layoutsDir = []; - $versionsOfLayouts = []; - foreach (glob(ROOT_PATH . '/application/layouts/*') as $layoutPath) { - if (is_dir($layoutPath)) { - $configClass = '\\Layouts\\' . ucfirst(basename($layoutPath)) . '\\Config\\Config'; - $config = new $configClass($this->getTranslator()); - $versionsOfLayouts[basename($layoutPath)] = $config->config['version']; - $layoutsDir[] = basename($layoutPath); - } + $layouts = []; + foreach ($layoutsMapper->getLocalModules() as $key) { + $configClass = '\\Layouts\\' . ucfirst($key) . '\\Config\\Config'; + $config = new $configClass($this->getTranslator()); + $model = new LayoutModel(); + + $model->setKey($key) + ->setByArray($config->config); + + $layouts[$model->getKey()] = $model; } $this->getView()->set('updateserver', $this->getConfig()->get('updateserver')) ->set('coreVersion', $this->getConfig()->get('version')) - ->set('versionsOfLayouts', $versionsOfLayouts) - ->set('layouts', $layoutsDir); + ->set('layouts', $layouts); } } @@ -197,16 +178,13 @@ public function updateAction() public function showAction() { + $layoutsMapper = new LayoutsMapper(); + $this->getLayout()->getAdminHmenu() ->add($this->getTranslator()->trans('menuLayouts'), ['action' => 'index']) ->add($this->getTranslator()->trans('menuSearch'), ['action' => 'search']) ->add($this->getTranslator()->trans('menuLayout') . ' ' . $this->getTranslator()->trans('info'), ['action' => 'show', 'id' => $this->getRequest()->getParam('id')]); - $layoutsDir = []; - foreach (glob(ROOT_PATH . '/application/layouts/*') as $layoutPath) { - if (is_dir($layoutPath)) { - $layoutsDir[] = basename($layoutPath); - } - } + $layoutsDir = $layoutsMapper->getLocalModules(true); $this->getView()->set('updateserver', $this->getConfig()->get('updateserver')) ->set('layouts', $layoutsDir); @@ -262,6 +240,8 @@ public function settingsAction() public function advSettingsAction() { + $layoutsMapper = new LayoutsMapper(); + $layoutAdvSettingsMapper = new LayoutAdvSettingsMapper(); $this->getLayout()->getAdminHmenu() ->add($this->getTranslator()->trans('menuLayouts'), ['action' => 'index']) @@ -274,23 +254,20 @@ public function advSettingsAction() } $layouts = []; - foreach (glob(APPLICATION_PATH . '/layouts/*') as $layoutPath) { - if (is_dir($layoutPath)) { - $key = basename($layoutPath); - $configClass = '\\Layouts\\' . ucfirst($key) . '\\Config\\Config'; - $config = new $configClass($this->getTranslator()); - if (empty($config->config['modulekey']) && empty($config->config['settings'])) { - continue; - } - $model = new LayoutModel(); - $model->setKey($key); - $model->setName($config->config['name']); - $model->setAuthor($config->config['author']); - if (!empty($config->config['modulekey'])) { - $model->setModulekey($config->config['modulekey']); - } - $layouts[$key] = $model; + foreach ($layoutsMapper->getLocalModules() as $key) { + $configClass = '\\Layouts\\' . ucfirst($key) . '\\Config\\Config'; + $config = new $configClass($this->getTranslator()); + + if (empty($config->config['modulekey']) && empty($config->config['settings'])) { + continue; } + + $model = new LayoutModel(); + + $model->setKey($key) + ->setByArray($config->config); + + $layouts[$key] = $model; } $layoutKeys = $layoutAdvSettingsMapper->getListOfLayoutKeys(); diff --git a/application/modules/admin/controllers/admin/Modules.php b/application/modules/admin/controllers/admin/Modules.php index 5116f572c..ca99d92de 100644 --- a/application/modules/admin/controllers/admin/Modules.php +++ b/application/modules/admin/controllers/admin/Modules.php @@ -1,4 +1,5 @@ getRequest()->getActionName() === 'notinstalled') { - $items[1]['active'] = true; + $items[1]['active'] = true; } elseif ($this->getRequest()->getActionName() === 'updates') { $items[2]['active'] = true; } elseif ($this->getRequest()->getActionName() === 'search' || $this->getRequest()->getActionName() === 'show') { $items[3]['active'] = true; } else { - $items[0]['active'] = true; + $items[0]['active'] = true; } - $this->getLayout()->addMenu - ( + $this->getLayout()->addMenu( 'menuModules', $items ); @@ -77,21 +79,27 @@ public function indexAction() $dependencies = []; $configurations = []; - - foreach (glob(ROOT_PATH.'/application/modules/*') as $modulesPath) { + foreach (glob(ROOT_PATH . '/application/modules/*') as $modulesPath) { $key = basename($modulesPath); - $configClass = '\\Modules\\'.ucfirst($key).'\\Config\\Config'; + $configClass = '\\Modules\\' . ucfirst($key) . '\\Config\\Config'; if (class_exists($configClass)) { $config = new $configClass($this->getTranslator()); - $dependencies[$key] = (!empty($config->config['depends']) ? $config->config['depends'] : []); - $configurations[$key] = $config->config; + $moduleModel = new Module(); + $moduleModel->setByArray($config->config); + + $configurations[$key] = $moduleModel; + + $dependencies[$key]['version'] = $moduleModel->getVersion(); + foreach ($moduleModel->getDepends() as $dependsKey => $value) { + $dependencies[$dependsKey][$key] = $value; + } } } - $this->getView()->set('updateserver', $this->getConfig()->get('updateserver').'modules.php') + $this->getView()->set('updateserver', $this->getConfig()->get('updateserver') . 'modules.php') + ->set('moduleMapper', $moduleMapper) ->set('modules', $moduleMapper->getModules()) - ->set('versionsOfModules', $moduleMapper->getVersionsOfModules()) ->set('dependencies', $dependencies) ->set('configurations', $configurations) ->set('coreVersion', $this->getConfig()->get('version')) @@ -118,21 +126,9 @@ public function notinstalledAction() return; } - $dependencies = []; - - foreach (glob(ROOT_PATH.'/application/modules/*') as $modulesPath) { - $key = basename($modulesPath); - $configClass = '\\Modules\\'.ucfirst($key).'\\Config\\Config'; - if (class_exists($configClass)) { - $config = new $configClass($this->getTranslator()); - $dependencies[$key] = (!empty($config->config['depends']) ? $config->config['depends'] : []); - } - } - - $this->getView()->set('updateserver', $this->getConfig()->get('updateserver').'modules.php') + $this->getView()->set('updateserver', $this->getConfig()->get('updateserver') . 'modules.php') ->set('versionsOfModules', $moduleMapper->getVersionsOfModules()) ->set('modulesNotInstalled', $modulesNotInstalled) - ->set('dependencies', $dependencies) ->set('coreVersion', $this->getConfig()->get('version')) ->set('gotokey', $gotokey); } @@ -155,14 +151,14 @@ public function searchAction() try { if ($this->getRequest()->isSecure()) { - $moduleFilename = $this->getRequest()->getParam('key').'-v'.$this->getRequest()->getParam('version'); + $moduleFilename = $this->getRequest()->getParam('key') . '-v' . $this->getRequest()->getParam('version'); $transfer = new \Ilch\Transfer(); - $transfer->setZipSavePath(ROOT_PATH.'/updates/'); - $transfer->setDownloadUrl($this->getConfig()->get('updateserver').'modules/'.$moduleFilename.'.zip'); - $transfer->setDownloadSignatureUrl($this->getConfig()->get('updateserver').'modules/'.$moduleFilename.'.zip-signature.sig'); + $transfer->setZipSavePath(ROOT_PATH . '/updates/'); + $transfer->setDownloadUrl($this->getConfig()->get('updateserver') . 'modules/' . $moduleFilename . '.zip'); + $transfer->setDownloadSignatureUrl($this->getConfig()->get('updateserver') . 'modules/' . $moduleFilename . '.zip-signature.sig'); - if (!$transfer->validateCert(ROOT_PATH.'/certificate/Certificate.crt')) { + if (!$transfer->validateCert(ROOT_PATH . '/certificate/Certificate.crt')) { // Certificate is missing or expired. $this->addMessage('certMissingOrExpired', 'danger'); return; @@ -178,7 +174,7 @@ public function searchAction() return; } - foreach ($groups as $key => $group) { + foreach ($groups as $group) { if ($group->getId() !== 1) { $groupMapper->saveAccessData($group->getId(), $this->getRequest()->getParam('key'), 1, 'module'); } @@ -195,21 +191,28 @@ public function searchAction() } } $dependencies = []; - $modulesDir = []; - foreach (glob(ROOT_PATH.'/application/modules/*') as $modulesPath) { - $key = basename($modulesPath); - $modulesDir[] = $key; - - $configClass = '\\Modules\\'.ucfirst($key).'\\Config\\Config'; - if (class_exists($configClass)) { - $config = new $configClass($this->getTranslator()); - $dependencies[$key] = (!empty($config->config['depends']) ? $config->config['depends'] : []); + $configurations = []; + $modules = []; + foreach ($moduleMapper->getLocalModules() as $key) { + $configClass = '\\Modules\\' . ucfirst($key) . '\\Config\\Config'; + $config = new $configClass($this->getTranslator()); + $moduleModel = new Module(); + $moduleModel->setByArray($config->config); + + $configurations[$key] = $moduleModel; + + $modules[$moduleModel->getKey()] = $moduleMapper->getModuleByKey($moduleModel->getKey()); + + $dependencies[$key]['version'] = $moduleModel->getVersion(); + foreach ($moduleModel->getDepends() as $dependsKey => $value) { + $dependencies[$dependsKey][$key] = $value; } } - $this->getView()->set('updateserver', $this->getConfig()->get('updateserver').'modules.php') - ->set('versionsOfModules', $moduleMapper->getVersionsOfModules()) - ->set('modules', $modulesDir) + $this->getView()->set('updateserver', $this->getConfig()->get('updateserver') . 'modules.php') + ->set('moduleMapper', $moduleMapper) + ->set('modules', $modules) + ->set('configurations', $configurations) ->set('dependencies', $dependencies) ->set('coreVersion', $this->getConfig()->get('version')) ->set('gotokey', $gotokey); @@ -231,41 +234,43 @@ public function updatesAction() $dependencies = []; $configurations = []; + foreach ($moduleMapper->getLocalModules() as $key) { + $configClass = '\\Modules\\' . ucfirst($key) . '\\Config\\Config'; + $config = new $configClass($this->getTranslator()); + $moduleModel = new Module(); + $moduleModel->setByArray($config->config); - foreach (glob(ROOT_PATH.'/application/modules/*') as $modulesPath) { - $key = basename($modulesPath); - $modulesDir[] = $key; + $configurations[$key] = $moduleModel; - $configClass = '\\Modules\\'.ucfirst($key).'\\Config\\Config'; - if (class_exists($configClass)) { - $config = new $configClass($this->getTranslator()); - $dependencies[$key] = (!empty($config->config['depends']) ? $config->config['depends'] : []); - $configurations[$key] = $config->config; + $dependencies[$key]['version'] = $moduleModel->getVersion(); + foreach ($moduleModel->getDepends() as $dependsKey => $value) { + $dependencies[$dependsKey][$key] = $value; } } - $this->getView()->set('updateserver', $this->getConfig()->get('updateserver').'modules.php') + $this->getView()->set('updateserver', $this->getConfig()->get('updateserver') . 'modules.php') + ->set('moduleMapper', $moduleMapper) ->set('modules', $moduleMapper->getModules()) - ->set('versionsOfModules', $moduleMapper->getVersionsOfModules()) - ->set('dependencies', $dependencies) ->set('configurations', $configurations) + ->set('dependencies', $dependencies) ->set('coreVersion', $this->getConfig()->get('version')) ->set('gotokey', $gotokey); } public function updateAction() { + $key = $this->getRequest()->getParam('key'); + $fail = true; if ($this->getRequest()->isSecure()) { try { - $key = $this->getRequest()->getParam('key'); - $moduleFilename = $key.'-v'.$this->getRequest()->getParam('version'); + $moduleFilename = $key . '-v' . $this->getRequest()->getParam('version'); $transfer = new \Ilch\Transfer(); - $transfer->setZipSavePath(ROOT_PATH.'/updates/'); - $transfer->setDownloadUrl($this->getConfig()->get('updateserver').'modules/'.$moduleFilename.'.zip'); - $transfer->setDownloadSignatureUrl($this->getConfig()->get('updateserver').'modules/'.$moduleFilename.'.zip-signature.sig'); + $transfer->setZipSavePath(ROOT_PATH . '/updates/'); + $transfer->setDownloadUrl($this->getConfig()->get('updateserver') . 'modules/' . $moduleFilename . '.zip'); + $transfer->setDownloadSignatureUrl($this->getConfig()->get('updateserver') . 'modules/' . $moduleFilename . '.zip-signature.sig'); - if (!$transfer->validateCert(ROOT_PATH.'/certificate/Certificate.crt')) { + if (!$transfer->validateCert(ROOT_PATH . '/certificate/Certificate.crt')) { // Certificate is missing or expired. $this->addMessage('certMissingOrExpired', 'danger'); return; @@ -279,45 +284,61 @@ public function updateAction() $moduleMapper = new ModuleMapper(); $moduleModel = $moduleMapper->getModuleByKey($key); + + // TODO: Check if update failed to display moduleUpdateFailed etc. if (!$transfer->update($moduleModel->getVersion())) { $this->addMessage('moduleUpdateFailed', 'danger'); return; } - $configClass = '\\Modules\\'.ucfirst($key).'\\Config\\Config'; + $configClass = '\\Modules\\' . ucfirst($key) . '\\Config\\Config'; $config = new $configClass($this->getTranslator()); + $moduleMapper->updateVersion($key, $config->config['version']); $this->addMessage('updateSuccess'); - } finally { - if ($this->getRequest()->getPost('gotokey')) { - $this->redirect(['action' => $this->getRequest()->getParam('from'), 'anchor' => '#Module_' . $key]); - } else { - $this->redirect(['action' => $this->getRequest()->getParam('from'), 'anchor' => 'false']); - } + $fail = false; + } catch (\Exception $e) { } } + if ($this->getRequest()->getPost('gotokey') && !$fail) { + $this->redirect(['action' => $this->getRequest()->getParam('from'), 'anchor' => '#Module_' . $key]); + } else { + $this->redirect(['action' => $this->getRequest()->getParam('from'), 'anchor' => 'false']); + } } public function localUpdateAction() { + $fail = false; + $key = ''; try { $moduleMapper = new ModuleMapper(); $key = $this->getRequest()->getParam('key'); $moduleModel = $moduleMapper->getModuleByKey($key); - $configClass = '\\Modules\\'.ucfirst($key).'\\Config\\Config'; - $config = new $configClass($this->getTranslator()); - // TODO: Check if update failed to display moduleUpdateFailed etc. - $config->getUpdate($moduleModel->getVersion()); - $moduleMapper->updateVersion($key, $config->config['version']); - $this->addMessage('updateSuccess'); + if ($moduleModel && $moduleModel->canExecute($this->getConfig()->get('version'))) { + $configClass = '\\Modules\\' . ucfirst($key) . '\\Config\\Config'; + $config = new $configClass($this->getTranslator()); + // TODO: Check if update failed to display moduleUpdateFailed etc. + $msg = $config->getUpdate($moduleModel->getVersion()); + $moduleMapper->updateVersion($key, $config->config['version']); + if (!empty($msg)) { + $this->addMessage($msg); + } + $this->addMessage('updateSuccess'); + } else { + $fail = true; + } } catch (\Exception $e) { - $this->addMessage('moduleUpdateFailed', 'danger'); + $fail = true; } finally { - if ($this->getRequest()->getPost('gotokey')) { - $this->redirect(['action' => $this->getRequest()->getParam('from'), 'anchor' => '#Module_' . $key]); + if ($fail) { + $this->addMessage('moduleUpdateFailed', 'danger'); + } + if ($this->getRequest()->getPost('gotokey') && !$fail) { + $this->redirect(['action' => $this->getRequest()->getParam('from') ?? 'index', 'anchor' => '#Module_' . $key]); } else { - $this->redirect(['action' => $this->getRequest()->getParam('from'), 'anchor' => 'false']); + $this->redirect(['action' => $this->getRequest()->getParam('from') ?? 'index', 'anchor' => 'false']); } } } @@ -329,12 +350,9 @@ public function showAction() $this->getLayout()->getAdminHmenu() ->add($this->getTranslator()->trans('menuModules'), ['action' => 'index']) ->add($this->getTranslator()->trans('menuSearch'), ['action' => 'search']) - ->add($this->getTranslator()->trans('menuModules').' '.$this->getTranslator()->trans('info'), ['action' => 'show', 'id' => $this->getRequest()->getParam('id')]); + ->add($this->getTranslator()->trans('menuModules') . ' ' . $this->getTranslator()->trans('info'), ['action' => 'show', 'id' => $this->getRequest()->getParam('id')]); - $modulesDir = []; - foreach (glob(ROOT_PATH.'/application/modules/*') as $modulesPath) { - $modulesDir[] = basename($modulesPath); - } + $modulesDir = $moduleMapper->getLocalModules(); $this->getView()->set('updateserver', $this->getConfig()->get('updateserver')) ->set('versionsOfModules', $moduleMapper->getVersionsOfModules()) @@ -351,83 +369,88 @@ public function installAction() $groups = $groupMapper->getGroupList(); $key = $this->getRequest()->getParam('key'); + $fail = true; if ($this->getRequest()->isSecure()) { - $configClass = '\\Modules\\'.ucfirst($key).'\\Config\\Config'; - $config = new $configClass($this->getTranslator()); - $config->install(); - - if (!empty($config->config)) { - $moduleModel = new ModuleModel(); - $moduleModel->setKey($config->config['key']); + try { + $configClass = '\\Modules\\' . ucfirst($key) . '\\Config\\Config'; + $config = new $configClass($this->getTranslator()); - if (isset($config->config['author'])) { - $moduleModel->setAuthor($config->config['author']); - } - if (isset($config->config['languages'])) { - foreach ($config->config['languages'] as $key => $value) { - $moduleModel->addContent($key, $value); - } - } - if (isset($config->config['system_module'])) { - $moduleModel->setSystemModule(true); - } - if (isset($config->config['isLayout'])) { - $moduleModel->setLayoutModule(true); - } - if (isset($config->config['hide_menu'])) { - $moduleModel->setHideMenu(true); - } - if (isset($config->config['link'])) { - $moduleModel->setLink($config->config['link']); - } - if (isset($config->config['version'])) { - $moduleModel->setVersion($config->config['version']); + $moduleModel = null; + if (!empty($config->config)) { + $moduleModel = new ModuleModel(); + $moduleModel->setByArray($config->config); } - $moduleModel->setIconSmall($config->config['icon_small']); - $moduleMapper->save($moduleModel); + if ($moduleModel === null || $moduleModel && $moduleModel->canExecute($this->getConfig()->get('version'))) { + $config->install(); + } - if (isset($config->config['boxes'])) { - $boxModel = new BoxModel(); - $boxModel->setModule($config->config['key']); - foreach ($config->config['boxes'] as $key => $value) { - $boxModel->addContent($key, $value); + if ($moduleModel) { + if ($moduleMapper->save($moduleModel) && isset($config->config['boxes'])) { + $boxModel = new BoxModel(); + $boxModel->setModule($config->config['key']); + foreach ($config->config['boxes'] as $key => $value) { + $boxModel->addContent($key, $value); + } + $boxMapper->install($boxModel); } - $boxMapper->install($boxModel); - } - foreach ($groups as $key => $group) { - if ($group->getId() !== 1) { - $groupMapper->saveAccessData($group->getId(), $key, 1, 'module'); + foreach ($groups as $key => $group) { + if ($group->getId() !== 1) { + $groupMapper->saveAccessData($group->getId(), $key, 1, 'module'); + } } } - } + $fail = false; - $this->addMessage('installSuccess'); + $this->addMessage('installSuccess'); + } catch (\Exception $e) { + } + } + if ($fail) { + $this->addMessage('moduleInstallFailed', 'danger'); } - if ($this->getRequest()->getPost('gotokey')) { + if ($this->getRequest()->getPost('gotokey') && !$fail) { $this->redirect(['action' => $this->getRequest()->getParam('from'), 'anchor' => '#Module_' . $this->getRequest()->getParam('key')]); } elseif ($this->getRequest()->getParam('from') === 'notinstalled') { - $this->redirect(['action' => $this->getRequest()->getParam('from')]); - } else { - $this->redirect(['action' => $this->getRequest()->getParam('from'), 'anchor' => 'false']); - } + $this->redirect(['action' => $this->getRequest()->getParam('from')]); + } else { + $this->redirect(['action' => $this->getRequest()->getParam('from'), 'anchor' => 'false']); + } } public function uninstallAction() { $moduleMapper = new ModuleMapper(); - $key = $this->getRequest()->getParam('key'); + $delkey = $this->getRequest()->getParam('key'); + + $dependencies = []; + foreach ($moduleMapper->getLocalModules() as $key) { + $configClass = '\\Modules\\' . ucfirst($key) . '\\Config\\Config'; + $config = new $configClass($this->getTranslator()); + $moduleModel = new Module(); + $moduleModel->setByArray($config->config); + + $dependencies[$key]['version'] = $moduleModel->getVersion(); + foreach ($moduleModel->getDepends() as $dependsKey => $value) { + $dependencies[$dependsKey][$key] = $value; + } + } if ($this->getRequest()->isSecure()) { - $configClass = '\\Modules\\'.ucfirst($key).'\\Config\\Config'; + $configClass = '\\Modules\\' . ucfirst($delkey) . '\\Config\\Config'; $config = new $configClass($this->getTranslator()); - $config->uninstall(); - $moduleMapper->delete($key); - $this->addMessage('deleteSuccess'); + if (empty($moduleMapper->checkOthersDependencies($delkey, $dependencies))) { + $config->uninstall(); + $moduleMapper->delete($delkey); + + $this->addMessage('deleteSuccess'); + } else { + $this->addMessage('deleteFailed'); + } } $this->redirect(['action' => 'index']); @@ -435,16 +458,20 @@ public function uninstallAction() public function deleteAction() { - if ($this->getRequest()->isSecure()) { + $moduleMapper = new ModuleMapper(); + + if ($this->getRequest()->isSecure() && !$moduleMapper->getModuleByKey($this->getRequest()->getParam('key'))) { $notificationPermissionMapper = new NotificationPermissionMapper(); $notificationsMapper = new NotificationsMapper(); - removeDir(APPLICATION_PATH.'/modules/'.$this->getRequest()->getParam('key')); + removeDir(APPLICATION_PATH . '/modules/' . $this->getRequest()->getParam('key')); $notificationPermissionMapper->deletePermissionOfModule($this->getRequest()->getParam('key')); $notificationsMapper->deleteNotificationsByModule($this->getRequest()->getParam('key')); $this->addMessage('deleteSuccess'); + } else { + $this->addMessage('deleteFailed'); } $this->redirect(['action' => 'notinstalled']); @@ -452,7 +479,7 @@ public function deleteAction() public function refreshURLAction() { - if (!empty(url_get_contents($this->getConfig()->get('updateserver').'modules.php', true, true))) { + if (!empty(url_get_contents($this->getConfig()->get('updateserver') . 'modules.php', true, true))) { $this->redirect() ->withMessage('updateSuccess') ->to(['action' => $this->getRequest()->getParam('from')]); diff --git a/application/modules/admin/controllers/admin/Settings.php b/application/modules/admin/controllers/admin/Settings.php index 04facae42..d5273bec8 100644 --- a/application/modules/admin/controllers/admin/Settings.php +++ b/application/modules/admin/controllers/admin/Settings.php @@ -1,4 +1,5 @@ $this->getLayout()->getUrl(['controller' => 'settings', 'action' => 'mail']) ] ]; - if ($this->getRequest()->getActionName() === 'maintenance') { - $items[1]['active'] = true; + $items[1]['active'] = true; } elseif ($this->getRequest()->getActionName() === 'customcss') { $items[2]['active'] = true; } elseif ($this->getRequest()->getActionName() === 'htaccess') { @@ -87,14 +87,10 @@ public function init() } elseif ($this->getRequest()->getActionName() === 'mail') { $items[8]['active'] = true; } else { - $items[0]['active'] = true; + $items[0]['active'] = true; } - $this->getLayout()->addMenu - ( - 'menuSettings', - $items - ); + $this->getLayout()->addMenu('menuSettings', $items); } public function indexAction() @@ -103,10 +99,8 @@ public function indexAction() $pageMapper = new \Modules\Admin\Mappers\Page(); $updateserversMapper = new UpdateserversMapper(); $groupMapper = new GroupMapper(); - $this->getLayout()->getAdminHmenu() ->add($this->getTranslator()->trans('menuSettings'), ['action' => 'index']); - if ($this->getRequest()->isPost()) { $validationRules = [ 'multilingualAcp' => 'required|numeric|integer|min:0|max:1', @@ -117,14 +111,12 @@ public function indexAction() 'updateserver' => 'required|url', 'captcha' => 'required|numeric|integer|min:0|max:3' ]; - - if ((int)$this->getRequest()->getPost('captcha') >= 1){ + if ((int)$this->getRequest()->getPost('captcha') >= 1) { $validationRules['captcha_apikey'] = 'required'; $validationRules['captcha_seckey'] = 'required'; } $validation = Validation::create($this->getRequest()->getPost(), $validationRules); - if ($validation->isValid()) { $this->getConfig()->set('multilingual_acp', $this->getRequest()->getPost('multilingualAcp')); $this->getConfig()->set('content_language', $this->getRequest()->getPost('contentLanguage')); @@ -144,7 +136,6 @@ public function indexAction() } $this->getConfig()->set('disable_purifier', !$this->getRequest()->getPost('htmlPurifier')); $this->getConfig()->set('updateserver', $this->getRequest()->getPost('updateserver')); - $this->addMessage('saveSuccess'); } else { $this->addMessage($validation->getErrorBag()->getErrorMessages(), 'danger', true); @@ -182,13 +173,11 @@ public function maintenanceAction() $this->getLayout()->getAdminHmenu() ->add($this->getTranslator()->trans('menuSettings'), ['action' => 'index']) ->add($this->getTranslator()->trans('menuMaintenance'), ['action' => 'maintenance']); - if ($this->getRequest()->isPost()) { $this->getConfig()->set('maintenance_mode', $this->getRequest()->getPost('maintenanceMode')); $this->getConfig()->set('maintenance_date', new \Ilch\Date(trim($this->getRequest()->getPost('maintenanceDateTime')))); $this->getConfig()->set('maintenance_status', $this->getRequest()->getPost('maintenanceStatus')); $this->getConfig()->set('maintenance_text', $this->getRequest()->getPost('maintenanceText')); - $this->addMessage('saveSuccess'); } @@ -203,10 +192,8 @@ public function customcssAction() $this->getLayout()->getAdminHmenu() ->add($this->getTranslator()->trans('menuSettings'), ['action' => 'index']) ->add($this->getTranslator()->trans('menuCustomCSS'), ['action' => 'customcss']); - if ($this->getRequest()->isPost()) { $this->getConfig()->set('custom_css', strip_tags($this->getRequest()->getPost('customCSS'))); - $this->addMessage('saveSuccess'); } @@ -218,18 +205,15 @@ public function htaccessAction() $this->getLayout()->getAdminHmenu() ->add($this->getTranslator()->trans('menuSettings'), ['action' => 'index']) ->add($this->getTranslator()->trans('menuHtaccess'), ['action' => 'htaccess']); - if ($this->getRequest()->isPost()) { $validation = Validation::create($this->getRequest()->getPost(), [ 'modRewrite' => 'required|numeric|integer|min:0|max:1', ]); - if ($validation->isValid()) { $htaccess = $this->getRequest()->getPost('htaccess'); // true if mod rewrite got toggled from on to off $removeModRewrite = ($this->getConfig()->get('mod_rewrite') && !(int)$this->getRequest()->getPost('modRewrite')); $remove = false; - if (!$this->getConfig()->get('mod_rewrite') && (int)$this->getRequest()->getPost('modRewrite')) { // Mod rewrite got toggled from off to on. $temp = <<<'HTACCESS' @@ -251,8 +235,8 @@ public function htaccessAction() $htaccess = explode(PHP_EOL, $htaccess); // Writing the htaccess file and removing the mod rewrite default lines if necessary - $filePointer = fopen(ROOT_PATH.'/.htaccess', 'wb'); - foreach($htaccess as $line) { + $filePointer = fopen(ROOT_PATH . '/.htaccess', 'wb'); + foreach ($htaccess as $line) { if ($removeModRewrite && (strpos($line, '# Begin Mod Rewrite default lines') !== false)) { $this->addMessage('modrewriteLinesRemoved', 'info'); $remove = true; @@ -263,13 +247,11 @@ public function htaccessAction() } fwrite($filePointer, $line); - if ($removeModRewrite && (strpos($line, '# End Mod Rewrite default lines') !== false)) { $remove = false; } } fclose($filePointer); - $this->getConfig()->set('mod_rewrite', (int)$this->getRequest()->getPost('modRewrite')); $this->addMessage('saveSuccess'); } else { @@ -278,7 +260,7 @@ public function htaccessAction() } $this->getView()->set('modRewrite', $this->getConfig()->get('mod_rewrite')); - $this->getView()->set('htaccess', file_get_contents(ROOT_PATH.'/.htaccess')); + $this->getView()->set('htaccess', file_get_contents(ROOT_PATH . '/.htaccess')); } public function updateAction() @@ -286,54 +268,48 @@ public function updateAction() $this->getLayout()->getAdminHmenu() ->add($this->getTranslator()->trans('menuSettings'), ['action' => 'index']) ->add($this->getTranslator()->trans('menuUpdate'), ['action' => 'update']); - $this->addMessage('backupBeforeUpdate', 'danger'); - $doUpdate = $this->getRequest()->getParam('doupdate'); $doSave = $this->getRequest()->getParam('dosave'); $version = $this->getConfig()->get('version'); $this->getView()->set('version', $version); - $update = new IlchTransfer(); - $update->setTransferUrl($this->getConfig()->get('updateserver').'updates2.php'); + $update->setTransferUrl($this->getConfig()->get('updateserver') . 'updates2.php'); $update->setVersionNow($version); - $update->setCurlOpt(CURLOPT_SSL_VERIFYPEER, TRUE); - $update->setCurlOpt(CURLOPT_SSL_VERIFYHOST, 2); - $update->setCurlOpt(CURLOPT_CAINFO, ROOT_PATH.'/certificate/cacert.pem'); + $update->setCurlOpt(CURLOPT_SSL_VERIFYPEER, true); + $update->setCurlOpt(CURLOPT_SSL_VERIFYHOST, 2); + $update->setCurlOpt(CURLOPT_CAINFO, ROOT_PATH . '/certificate/cacert.pem'); $update->setCurlOpt(CURLOPT_RETURNTRANSFER, 1); $update->setCurlOpt(CURLOPT_FAILONERROR, true); $update->setCurlOpt(CURLOPT_CONNECTTIMEOUT, 10); - $update->setZipSavePath(ROOT_PATH.'/updates/'); - + $update->setZipSavePath(ROOT_PATH . '/updates/'); $result = $update->getVersions(); if ($result == '') { $this->addMessage(curl_error($update->getTransferUrl()), 'danger'); } $this->getView()->set('versions', $result); - if ($update->newVersionFound() == true) { - $update->setDownloadUrl($this->getConfig()->get('updateserver').'updates/Master-'.$update->getNewVersion().'.zip'); - $update->setDownloadSignatureUrl($this->getConfig()->get('updateserver').'updates/Master-'.$update->getNewVersion().'.zip-signature.sig'); + $update->setDownloadUrl($this->getConfig()->get('updateserver') . 'updates/Master-' . $update->getNewVersion() . '.zip'); + $update->setDownloadSignatureUrl($this->getConfig()->get('updateserver') . 'updates/Master-' . $update->getNewVersion() . '.zip-signature.sig'); $newVersion = $update->getNewVersion(); $this->getView()->set('foundNewVersions', true); $this->getView()->set('newVersion', $newVersion); - if (!empty($update->getMissingRequirements())) { // Add details of missingRequirements to the error message. $missingRequirementsMessages = []; if (!empty($update->getMissingRequirements()['phpVersion'])) { - $missingRequirementsMessages[] = $this->getTranslator()->trans('phpVersionError').' (<'.$update->getMissingRequirements()['phpVersion'].')'; + $missingRequirementsMessages[] = $this->getTranslator()->trans('phpVersionError') . ' (<' . $update->getMissingRequirements()['phpVersion'] . ')'; } if (!empty($update->getMissingRequirements()['mysqlVersion'])) { - $missingRequirementsMessages[] = $this->getTranslator()->trans('dbVersionError').' (<'.$update->getMissingRequirements()['mysqlVersion'].')'; + $missingRequirementsMessages[] = $this->getTranslator()->trans('dbVersionError') . ' (<' . $update->getMissingRequirements()['mysqlVersion'] . ')'; } if (!empty($update->getMissingRequirements()['mariadbVersion'])) { - $missingRequirementsMessages[] = $this->getTranslator()->trans('dbVersionError').' (<'.$update->getMissingRequirements()['mariadbVersion'].')'; + $missingRequirementsMessages[] = $this->getTranslator()->trans('dbVersionError') . ' (<' . $update->getMissingRequirements()['mariadbVersion'] . ')'; } if (!empty($update->getMissingRequirements()['phpExtensions'])) { $messageString = $this->getTranslator()->trans('phpExtensionError'); - $messageString .= ' ('.implode(', ', $update->getMissingRequirements()['phpExtensions']).')'; + $messageString .= ' (' . implode(', ', $update->getMissingRequirements()['phpExtensions']) . ')'; $missingRequirementsMessages[] = $messageString; } $this->getView()->set('missingRequirements', true); @@ -342,18 +318,18 @@ public function updateAction() } if ($doSave == true) { - if (!$update->validateCert(ROOT_PATH.'/certificate/Certificate.crt')) { + if (!$update->validateCert(ROOT_PATH . '/certificate/Certificate.crt')) { // Certificate is missing or expired. $this->getView()->set('certMissingOrExpired', true); return false; } if (!$update->save()) { $this->getView()->set('verificationFailed', true); - return; + return false; } } if ($doUpdate == true) { - if ($update->update($version)) { + if ($update->update($version, true)) { $this->getConfig()->set('version', $newVersion); $this->getView()->set('updateSuccessfull', true); } @@ -368,7 +344,7 @@ public function clearCacheAction() { // Delete downloaded updates $files = glob('updates/*'); - foreach($files as $file) { + foreach ($files as $file) { if (is_file($file)) { unlink($file); } @@ -383,9 +359,7 @@ public function notificationsAction() $this->getLayout()->getAdminHmenu() ->add($this->getTranslator()->trans('menuSettings'), ['action' => 'index']) ->add($this->getTranslator()->trans('menuNotifications'), ['action' => 'notifications']); - $notificationPermissionMapper = new NotificationPermissionMapper(); - if ($this->getRequest()->getPost('action') === 'delete' && $this->getRequest()->getPost('check_notificationPermissions')) { foreach ($this->getRequest()->getPost('check_notificationPermissions') as $notificationPermissionKey) { $notificationPermissionMapper->deletePermissionOfModule($notificationPermissionKey); @@ -399,7 +373,6 @@ public function notificationsAction() 'key' => 'required', 'limit' => 'required|numeric|integer|min:0|max:5' ]); - if ($validation->isValid()) { $notificationPermissionMapper->updateLimitOfModule($data['key'], $data['limit']); } else { @@ -423,9 +396,7 @@ public function deletePermissionAction() { if ($this->getRequest()->isSecure()) { $notificationPermissionMapper = new NotificationPermissionMapper(); - $notificationPermissionMapper->deletePermissionOfModule($this->getRequest()->getParam('key')); - $this->addMessage('deleteSuccess'); } @@ -437,11 +408,9 @@ public function changePermissionAction() if ($this->getRequest()->isSecure()) { $notificationPermissionMapper = new NotificationPermissionMapper(); $notificationsMapper = new NotificationsMapper(); - if ($this->getRequest()->getParam('revoke') === 'true') { $notificationPermissionMapper->updatePermissionGrantedOfModule($this->getRequest()->getParam('key'), 0); $notificationsMapper->deleteNotificationsByModule($this->getRequest()->getParam('key')); - $this->addMessage('revokePermissionSuccess'); } else { $notificationPermissionMapper->updatePermissionGrantedOfModule($this->getRequest()->getParam('key'), 1); @@ -457,7 +426,6 @@ public function mailAction() $this->getLayout()->getAdminHmenu() ->add($this->getTranslator()->trans('menuSettings'), ['action' => 'index']) ->add($this->getTranslator()->trans('menuMail'), ['action' => 'mail']); - if ($this->getRequest()->isPost()) { $this->getConfig()->set('smtp_mode', $this->getRequest()->getPost('smtp_mode')); $this->getConfig()->set('smtp_server', $this->getRequest()->getPost('smtp_server')); diff --git a/application/modules/admin/mappers/Layouts.php b/application/modules/admin/mappers/Layouts.php new file mode 100644 index 000000000..bc499adae --- /dev/null +++ b/application/modules/admin/mappers/Layouts.php @@ -0,0 +1,40 @@ +cache = $layouts; + + return $layouts; + } +} diff --git a/application/modules/admin/mappers/Module.php b/application/modules/admin/mappers/Module.php index 7112690d2..de4c2ee63 100644 --- a/application/modules/admin/mappers/Module.php +++ b/application/modules/admin/mappers/Module.php @@ -1,6 +1,7 @@ db()->select() ->fields(['m.key', 'm.system', 'm.layout', 'm.hide_menu', 'm.version', 'm.link', 'm.icon_small', 'm.author']) @@ -29,14 +32,7 @@ public function getModules() $modules = []; foreach ($modulesRows as $moduleRow) { $moduleModel = new ModuleModel(); - $moduleModel->setKey($moduleRow['key']); - $moduleModel->setSystemModule($moduleRow['system']); - $moduleModel->setLayoutModule($moduleRow['layout']); - $moduleModel->setHideMenu($moduleRow['hide_menu']); - $moduleModel->setVersion($moduleRow['version']); - $moduleModel->setLink($moduleRow['link']); - $moduleModel->setIconSmall($moduleRow['icon_small']); - $moduleModel->setAuthor($moduleRow['author']); + $moduleModel->setByArray($moduleRow); $moduleModel->addContent($moduleRow['locale'], ['name' => $moduleRow['name'], 'description' => $moduleRow['description']]); $modules[] = $moduleModel; @@ -46,28 +42,42 @@ public function getModules() } /** - * Gets all not installed modules. + * Gets all modules. * - * @return ModuleModel[]|Array[] + * @return array */ - public function getModulesNotInstalled() + public function getLocalModules(): array { - foreach (glob(APPLICATION_PATH.'/modules/*') as $modulePath) { - if (is_dir($modulePath)) { - $moduleModel = new ModuleModel(); - $moduleModel->setKey(basename($modulePath)); - $modulesDir[] = $moduleModel->getKey(); + $modules = []; + foreach (glob(ROOT_PATH . '/application/modules/*') as $modulesPath) { + if (is_dir($modulesPath)) { + $key = basename($modulesPath); + + $configClass = '\\Modules\\' . ucfirst($key) . '\\Config\\Config'; + if (class_exists($configClass)) { + $modules[] = $key; + } } } + return $modules; + } + + /** + * Gets all not installed modules. + * + * @return ModuleModel[] + */ + public function getModulesNotInstalled(): array + { + $modulesDir = $this->getLocalModules(); + $removeModule = ['admin', 'install', 'sample', 'error']; $modulesDir = array_diff($modulesDir, $removeModule); + $modulesDB = []; foreach ($this->getModules() as $module) { - $moduleModel = new ModuleModel(); - $moduleModel->setKey($module->getKey()); - - $modulesDB[] = $moduleModel->getKey(); + $modulesDB[] = $module->getKey(); } $modulesNotInstalled = array_diff($modulesDir, $modulesDB); @@ -76,36 +86,13 @@ public function getModulesNotInstalled() return []; } + $modules = []; foreach ($modulesNotInstalled as $module) { $moduleModel = new ModuleModel(); - $configClass = '\\Modules\\'.ucfirst($module).'\\Config\\Config'; + $configClass = '\\Modules\\' . ucfirst($module) . '\\Config\\Config'; $config = new $configClass(); - $moduleModel->setKey($config->config['key']); - $moduleModel->setIconSmall($config->config['icon_small']); - $moduleModel->setVersion($config->config['version']); - - if (isset($config->config['link'])) { - $moduleModel->setLink($config->config['link']); - } - if (isset($config->config['author'])) { - $moduleModel->setAuthor($config->config['author']); - } - if (isset($config->config['languages'])) { - foreach ($config->config['languages'] as $key => $value) { - $moduleModel->addContent($key, $value); - } - } - $moduleModel->setIlchCore($config->config['ilchCore']); - $moduleModel->setPHPVersion($config->config['phpVersion']); - if (isset($config->config['phpExtensions'])) { - $moduleModel->setPHPExtension($config->config['phpExtensions']); - } - if (isset($config->config['depends'])) { - $moduleModel->setDepends($config->config['depends']); - } else { - $moduleModel->setDepends([]); - } + $moduleModel->setByArray($config->config); $modules[] = $moduleModel; } @@ -120,7 +107,7 @@ public function getModulesNotInstalled() * @param string $locale * @return ModuleModel|void */ - public function getModulesByKey($key, $locale) + public function getModulesByKey(string $key, string $locale) { $modulesRows = $this->db()->select('*') ->from('modules_content') @@ -144,7 +131,12 @@ public function getModulesByKey($key, $locale) * @param string $key * @return ModuleModel|null */ - public function getModuleByKey($key) { + public function getModuleByKey(string $key, bool $force = false): ?ModuleModel + { + if ($this->cache[$key] && !$force) { + return $this->cache[$key]; + } + $moduleRow = $this->db()->select('*') ->from('modules') ->where(['key' => $key]) @@ -156,14 +148,9 @@ public function getModuleByKey($key) { } $moduleModel = new ModuleModel(); - $moduleModel->setKey($moduleRow['key']); - $moduleModel->setSystemModule($moduleRow['system']); - $moduleModel->setLayoutModule($moduleRow['layout']); - $moduleModel->setHideMenu($moduleRow['hide_menu']); - $moduleModel->setVersion($moduleRow['version']); - $moduleModel->setLink($moduleRow['link']); - $moduleModel->setIconSmall($moduleRow['icon_small']); - $moduleModel->setAuthor($moduleRow['author']); + $moduleModel->setByArray($moduleRow); + + $this->cache[$key] = $moduleModel; return $moduleModel; } @@ -173,7 +160,7 @@ public function getModuleByKey($key) { * * @return array|string[] */ - public function getKeysInstalledModules() + public function getKeysInstalledModules(): array { $modulesRows = $this->db()->select('key') ->from('modules') @@ -187,7 +174,8 @@ public function getKeysInstalledModules() return $modulesRows; } - public function getVersionsOfModules() { + public function getVersionsOfModules(): array + { $modulesRows = $this->db()->select(['key','version']) ->from('modules') ->execute() @@ -197,7 +185,7 @@ public function getVersionsOfModules() { foreach ($modulesNotInstalled as $moduleNotInstalled) { $key = $moduleNotInstalled->getKey(); - $modulesRows[$key] = array('key' => $key, 'version' => $moduleNotInstalled->getVersion()); + $modulesRows[$key] = ['key' => $key, 'version' => $moduleNotInstalled->getVersion()]; } if (empty($modulesRows)) { @@ -214,7 +202,8 @@ public function getVersionsOfModules() { * @param string $version * */ - public function updateVersion($key, $version) { + public function updateVersion(string $key, string $version) + { $this->db()->update('modules') ->values(['version' => $version]) ->where(['key' => $key]) @@ -227,7 +216,7 @@ public function updateVersion($key, $version) { * @param ModuleModel $module * @return int */ - public function save(ModuleModel $module) + public function save(ModuleModel $module): int { $moduleId = $this->db()->insert('modules') ->values([ @@ -261,7 +250,7 @@ public function save(ModuleModel $module) * * @param string $key */ - public function delete($key) + public function delete(string $key) { $menuMapper = new MenuMapper(); $menuMapper->deleteItemsByModuleKey($key); diff --git a/application/modules/admin/models/Layout.php b/application/modules/admin/models/Layout.php index e9855d0be..17709da86 100644 --- a/application/modules/admin/models/Layout.php +++ b/application/modules/admin/models/Layout.php @@ -1,4 +1,5 @@ setKey($entries['key']); + } + if (isset($entries['name'])) { + $this->setName($entries['name']); + } + if (isset($entries['version'])) { + $this->setVersion($entries['version']); + } + if (isset($entries['author'])) { + $this->setAuthor($entries['author']); + } + if (!empty($entries['link'])) { + $this->setLink($entries['link']); + } + if (isset($entries['desc'])) { + $this->setDesc($entries['desc']); + } + if (isset($entries['modulekey'])) { + $this->setModulekey($entries['modulekey']) + ->hasModul(); + } + if (isset($entries['settings'])) { + $this->setSettings($entries['settings']); + } + if (isset($entries['ilchCore'])) { + $this->setIlchCore($entries['ilchCore']); + } + + return $this; + } /** * The required ilch version if needed. * * @var string */ - protected $ilchCore; + protected $ilchCore = ''; /** * Gets the key. * * @return string */ - public function getKey() + public function getKey(): string { return $this->key; } @@ -93,10 +141,12 @@ public function getKey() * Sets the key. * * @param string $key + * @return Layout */ - public function setKey($key) + public function setKey(string $key): Layout { - $this->key = (string)$key; + $this->key = $key; + return $this; } /** @@ -104,7 +154,7 @@ public function setKey($key) * * @return string */ - public function getName() + public function getName(): string { return $this->name; } @@ -113,10 +163,12 @@ public function getName() * Sets the name. * * @param string $name + * @return Layout */ - public function setName($name) + public function setName(string $name): Layout { - $this->name = (string)$name; + $this->name = $name; + return $this; } /** @@ -124,7 +176,7 @@ public function setName($name) * * @return string */ - public function getVersion() + public function getVersion(): string { return $this->version; } @@ -133,10 +185,12 @@ public function getVersion() * Sets the version. * * @param string $version + * @return Layout */ - public function setVersion($version) + public function setVersion(string $version): Layout { - $this->version = (string)$version; + $this->version = $version; + return $this; } /** @@ -144,7 +198,7 @@ public function setVersion($version) * * @return string */ - public function getAuthor() + public function getAuthor(): string { return $this->author; } @@ -153,10 +207,12 @@ public function getAuthor() * Sets the author. * * @param string $author + * @return Layout */ - public function setAuthor($author) + public function setAuthor(string $author): Layout { - $this->author = (string)$author; + $this->author = $author; + return $this; } /** @@ -164,7 +220,7 @@ public function setAuthor($author) * * @return string */ - public function getLink() + public function getLink(): string { return $this->link; } @@ -173,10 +229,12 @@ public function getLink() * Sets the link. * * @param string $link + * @return Layout */ - public function setLink($link) + public function setLink(string $link): Layout { - $this->link = (string)$link; + $this->link = $link; + return $this; } /** @@ -184,7 +242,7 @@ public function setLink($link) * * @return bool */ - public function getOfficial() + public function getOfficial(): bool { return $this->official; } @@ -193,18 +251,20 @@ public function getOfficial() * Sets the official flag. * * @param bool $official + * @return Layout */ - public function setOfficial($official) + public function setOfficial(bool $official): Layout { - $this->official = (bool)$official; + $this->official = $official; + return $this; } - + /** * Gets the desc. * * @return string */ - public function getDesc() + public function getDesc(): string { return $this->desc; } @@ -213,10 +273,12 @@ public function getDesc() * Sets the author. * * @param string $desc + * @return Layout */ - public function setDesc($desc) + public function setDesc(string $desc): Layout { - $this->desc = (string)$desc; + $this->desc = $desc; + return $this; } /** @@ -224,7 +286,7 @@ public function setDesc($desc) * * @return string */ - public function getModulekey() + public function getModulekey(): string { return $this->modulekey; } @@ -233,10 +295,12 @@ public function getModulekey() * Sets the modulekey. * * @param string $modulekey + * @return Layout */ - public function setModulekey($modulekey) + public function setModulekey(string $modulekey): Layout { - $this->modulekey = (string)$modulekey; + $this->modulekey = $modulekey; + return $this; } /** @@ -244,7 +308,7 @@ public function setModulekey($modulekey) * * @return array */ - public function getSettings() + public function getSettings(): array { return $this->settings; } @@ -255,7 +319,7 @@ public function getSettings() * @param array $settings * @return Layout */ - public function setSettings($settings) + public function setSettings(array $settings): Layout { $this->settings = $settings; return $this; @@ -266,7 +330,7 @@ public function setSettings($settings) * * @return string */ - public function getIlchCore() + public function getIlchCore(): string { return $this->ilchCore; } @@ -277,11 +341,9 @@ public function getIlchCore() * @param string $ilchCore * @return Layout */ - public function setIlchCore($ilchCore) + public function setIlchCore(string $ilchCore): Layout { $this->ilchCore = $ilchCore; return $this; } - - } diff --git a/application/modules/admin/views/admin/settings/update.php b/application/modules/admin/views/admin/settings/update.php index 5ac1d916f..97d58d274 100644 --- a/application/modules/admin/views/admin/settings/update.php +++ b/application/modules/admin/views/admin/settings/update.php @@ -11,22 +11,22 @@ ?>

getTrans('updateProcess') ?>

- +

getTrans('versionNow') ?>get('version') ?>

getTrans('searchUpdate') ?>

- get('foundNewVersions')): ?> + get('foundNewVersions')) : ?>

getTrans('foundNewVersions') ?>

- - - + + +

getTrans('isSave') ?> getTrans('clearCache') ?>

- +

getTrans('updateSaveSuccess') ?>

getTrans('updateReady') ?> @@ -34,11 +34,11 @@ href="getUrl(['action' => 'update', 'doupdate' => 'true']) ?>">getTrans('installNow') ?>

- - + +

getTrans('certMissingOrExpired') ?> - +

getTrans('verificationFailed') ?>

getTrans('doSave') ?> @@ -48,21 +48,21 @@

- +
- get('content') as $list): ?> + get('content') as $list) : ?>

getTrans('updateComplied') ?>

- +

getTrans('updateFailed') ?>

- +

getTrans('missingRequirements') ?>

- +

@@ -76,7 +76,7 @@
- +

getTrans('noUpdateFound') ?>