From cdb92e18de3288551308406b0b13aa932ba0f5c0 Mon Sep 17 00:00:00 2001 From: Thomas Gelf Date: Fri, 20 Sep 2019 11:22:58 +0200 Subject: [PATCH] PhperrorController: redirect to dashboard once... ...all dependencies are satisfied --- .../controllers/PhperrorController.php | 27 +++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/application/controllers/PhperrorController.php b/application/controllers/PhperrorController.php index fbd29d8f..f434b6c0 100644 --- a/application/controllers/PhperrorController.php +++ b/application/controllers/PhperrorController.php @@ -3,6 +3,7 @@ namespace Icinga\Module\Director\Controllers; use Icinga\Application\Icinga; +use Icinga\Application\Modules\Manager; use Icinga\Web\Controller; class PhperrorController extends Controller @@ -23,9 +24,31 @@ class PhperrorController extends Controller public function dependenciesAction() { + $dependencies = $this->view->dependencies = $this->Module()->getDependencies(); + $modules = $this->view->modules = Icinga::app()->getModuleManager(); + // Hint: we're duplicating some code here + $satisfied = true; + foreach ($dependencies as $module => $required) { + /** @var Manager $this ->modules */ + if ($modules->hasEnabled($module)) { + $installed = $modules->getModule($module, false)->getVersion(); + $installed = \ltrim($installed, 'v'); // v0.6.0 VS 0.6.0 + if (\preg_match('/^([<>=]+)\s*v?(\d+\.\d+\.\d+)$/', $required, $match)) { + $operator = $match[1]; + $vRequired = $match[2]; + if (\version_compare($installed, $vRequired, $operator)) { + continue; + } + } + } + $satisfied = false; + } + + if ($satisfied) { + $this->redirectNow('director'); + } + $this->setAutorefreshInterval(15); - $this->view->dependencies = $this->Module()->getDependencies(); - $this->view->modules = Icinga::app()->getModuleManager(); $this->getTabs()->add('error', array( 'label' => $this->translate('Error'), 'url' => $this->getRequest()->getUrl()