icingaweb2/modules/setup/application/forms/ModulePage.php
Johannes Meyer e01852f34b Update required attribute of all forms
Some were missing it, some were adding it unnecessarily.
Since it's now displayed what's required this needed to
be streamlined.
2020-04-09 14:39:52 +02:00

91 lines
2.4 KiB
PHP

<?php
/* Icinga Web 2 | (c) 2014 Icinga Development Team | GPLv2+ */
namespace Icinga\Module\Setup\Forms;
use Icinga\Application\Icinga;
use Icinga\Web\Form;
class ModulePage extends Form
{
protected $modules;
protected $modulePaths;
/**
* Initialize this page
*/
public function init()
{
$this->setName('setup_modules');
$this->setViewScript('form/setup-modules.phtml');
$this->modulePaths = array();
if (($appModulePath = realpath(Icinga::app()->getApplicationDir() . '/../modules')) !== false) {
$this->modulePaths[] = $appModulePath;
}
}
public function createElements(array $formData)
{
foreach ($this->getModules() as $module) {
$this->addElement(
'checkbox',
$module->getName(),
array(
'description' => $module->getDescription(),
'label' => ucfirst($module->getName()),
'value' => $module->getName() === 'monitoring' ? 1 : 0,
'decorators' => array('ViewHelper')
)
);
}
}
protected function getModules()
{
if ($this->modules !== null) {
return $this->modules;
} else {
$this->modules = array();
}
$moduleManager = Icinga::app()->getModuleManager();
$moduleManager->detectInstalledModules($this->modulePaths);
foreach ($moduleManager->listInstalledModules() as $moduleName) {
if ($moduleName !== 'setup') {
$this->modules[$moduleName] = $moduleManager->loadModule($moduleName)->getModule($moduleName);
}
}
return $this->modules;
}
public function getCheckedModules()
{
$modules = $this->getModules();
$checked = array();
foreach ($this->getElements() as $name => $element) {
if (array_key_exists($name, $modules) && $element->isChecked()) {
$checked[$name] = $modules[$name];
}
}
return $checked;
}
public function getModuleWizards()
{
$checked = $this->getCheckedModules();
$wizards = array();
foreach ($checked as $name => $module) {
if ($module->providesSetupWizard()) {
$wizards[$name] = $module->getSetupWizard();
}
}
return $wizards;
}
}