Introduce wizard page UserGroupBackendPage

refs #9609
This commit is contained in:
Johannes Meyer 2015-07-29 14:44:09 +02:00
parent 57bdd2686e
commit 4dab67ef5b
1 changed files with 127 additions and 0 deletions

View File

@ -0,0 +1,127 @@
<?php
/* Icinga Web 2 | (c) 2013-2015 Icinga Development Team | GPLv2+ */
namespace Icinga\Module\Setup\Forms;
use Icinga\Application\Config;
use Icinga\Authentication\User\UserBackend;
use Icinga\Data\ResourceFactory;
use Icinga\Forms\Config\UserGroup\LdapUserGroupBackendForm;
use Icinga\Web\Form;
/**
* Wizard page to define user group backend specific details
*/
class UserGroupBackendPage extends Form
{
/**
* The resource configuration to use
*
* @var array
*/
protected $resourceConfig;
/**
* The user backend configuration to use
*
* @var array
*/
protected $backendConfig;
/**
* Initialize this page
*/
public function init()
{
$this->setName('setup_usergroup_backend');
$this->setTitle($this->translate('User Group Backend', 'setup.page.title'));
}
/**
* Set the resource configuration to use
*
* @param array $config
*
* @return $this
*/
public function setResourceConfig(array $config)
{
$this->resourceConfig = $config;
return $this;
}
/**
* Set the user backend configuration to use
*
* @param array $config
*
* @return $this
*/
public function setBackendConfig(array $config)
{
$this->backendConfig = $config;
return $this;
}
/**
* Return the resource configuration as Config object
*
* @return Config
*/
protected function createResourceConfiguration()
{
$config = new Config();
$config->setSection($this->resourceConfig['name'], $this->resourceConfig);
return $config;
}
/**
* Return the user backend configuration as Config object
*
* @return Config
*/
protected function createBackendConfiguration()
{
$config = new Config();
$backendConfig = $this->backendConfig;
$backendConfig['resource'] = $this->resourceConfig['name'];
$config->setSection($this->backendConfig['name'], $backendConfig);
return $config;
}
/**
* Create and add elements to this form
*
* @param array $formData
*/
public function createElements(array $formData)
{
// LdapUserGroupBackendForm requires these factories to provide valid configurations
ResourceFactory::setConfig($this->createResourceConfiguration());
UserBackend::setConfig($this->createBackendConfiguration());
$formData['type'] = 'ldap';
$formData['user_backend'] = $this->backendConfig['name']; // We're forcing the linkage anyway..
$backendForm = new LdapUserGroupBackendForm();
$backendForm->create($formData);
$userBackendOptions = $backendForm->getElement('user_backend')->getMultiOptions();
unset($userBackendOptions['none']);
$backendForm->getElement('user_backend')->setMultiOptions($userBackendOptions);
$this->addSubForm($backendForm, 'backend_form');
}
/**
* Retrieve all form element values
*
* @param bool $suppressArrayNotation Ignored
*
* @return array
*/
public function getValues($suppressArrayNotation = false)
{
$values = parent::getValues();
$values = array_merge($values, $values['backend_form']);
unset($values['backend_form']);
return $values;
}
}