moduleNames = $moduleNames; $this->modulePaths = array(); if (($appModulePath = realpath(Icinga::app()->getApplicationDir() . '/../modules')) !== false) { $this->modulePaths[] = $appModulePath; } } public function apply() { $moduleManager = Icinga::app()->getModuleManager(); $moduleManager->detectInstalledModules($this->modulePaths); $success = true; foreach ($this->moduleNames as $moduleName) { try { $moduleManager->enableModule($moduleName); } catch (ConfigurationError $e) { $this->warnings[$moduleName] = $e; } catch (Exception $e) { $this->errors[$moduleName] = $e; $success = false; } } return $success; } public function getSummary() { // Enabling a module is like a implicit action, which does not need to be shown to the user... } public function getReport() { $okMessage = mt('setup', 'Module "%s" has been successfully enabled.'); $failMessage = mt('setup', 'Module "%s" could not be enabled. An error occured:'); $report = array(); foreach ($this->moduleNames as $moduleName) { if (isset($this->errors[$moduleName])) { $report[] = sprintf($failMessage, $moduleName); $report[] = sprintf(mt('setup', 'ERROR: %s'), IcingaException::describe($this->errors[$moduleName])); } elseif (isset($this->warnings[$moduleName])) { $report[] = sprintf($failMessage, $moduleName); $report[] = sprintf(mt('setup', 'WARNING: %s'), $this->warnings[$moduleName]->getMessage()); } else { $report[] = sprintf($okMessage, $moduleName); } } return $report; } }