diff --git a/application/forms/Config/Authentication/DbBackendForm.php b/application/forms/Config/Authentication/DbBackendForm.php
index 2c57b82e2..5512e87ea 100644
--- a/application/forms/Config/Authentication/DbBackendForm.php
+++ b/application/forms/Config/Authentication/DbBackendForm.php
@@ -5,10 +5,10 @@
namespace Icinga\Form\Config\Authentication;
use \Exception;
-use \Zend_Config;
use Icinga\Data\ResourceFactory;
use Icinga\Authentication\DbConnection;
use Icinga\Authentication\Backend\DbUserBackend;
+use Icinga\Exception\ConfigurationError;
/**
* Form class for adding/modifying database authentication backends
@@ -16,68 +16,67 @@ use Icinga\Authentication\Backend\DbUserBackend;
class DbBackendForm extends BaseBackendForm
{
/**
- * Return content of the resources.ini or previously set resources
- *
- * @return array
+ * @var array
*/
- public function getResources()
+ protected $resources;
+
+ public function __construct()
{
- if ($this->resources === null) {
- $res = ResourceFactory::getResourceConfigs('db')->toArray();
-
- foreach (array_keys($res) as $key) {
- $res[$key] = $key;
- }
-
- return $res;
- } else {
- return $this->resources;
+ $dbResources = array_keys(
+ ResourceFactory::getResourceConfigs('db')->toArray()
+ );
+ if (empty($dbResources)) {
+ throw new ConfigurationError(
+ t('There are no database resources')
+ );
}
+ $this->resources = array_combine($dbResources, $dbResources);
+
+ parent::__construct();
}
- /**
- * Create this form and add all required elements
- *
- * @see Form::create()
- */
- public function create()
+ public function createElements(array $formData)
{
- $this->setName('form_modify_backend');
- $name = $this->filterName($this->getBackendName());
- $this->addElement(
- 'text',
- 'backend_' . $name . '_name',
- array(
- 'required' => true,
- 'allowEmpty' => false,
- 'label' => t('Backend Name'),
- 'helptext' => t('The name of this authentication provider'),
- 'value' => $this->getBackendName()
- )
- );
-
- $this->addElement(
- 'select',
- 'backend_' . $name . '_resource',
- array(
- 'required' => true,
- 'allowEmpty' => false,
- 'label' => t('Database Connection'),
- 'helptext' => t('The database connection to use for authenticating with this provider'),
- 'value' => $this->getBackend()->get('resource'),
- 'multiOptions' => $this->getResources()
- )
- );
-
- $this->addElement(
- 'button',
- 'btn_submit',
- array(
- 'type' => 'submit',
- 'value' => '1',
- 'escape' => false,
- 'class' => 'btn btn-cta btn-wide',
- 'label' => ' Save Backend'
+ return array(
+ $this->createElement(
+ 'text',
+ 'name',
+ array(
+ 'required' => true,
+ 'allowEmpty' => false,
+ 'label' => t('Backend Name'),
+ 'helptext' => t('The name of this authentication provider'),
+ )
+ ),
+ $this->createElement(
+ 'select',
+ 'resource',
+ array(
+ 'required' => true,
+ 'allowEmpty' => false,
+ 'label' => t('Database Connection'),
+ 'helptext' => t('The database connection to use for authenticating with this provider'),
+ 'multiOptions' => $this->resources
+ )
+ ),
+ $this->createElement(
+ 'button',
+ 'btn_submit',
+ array(
+ 'type' => 'submit',
+ 'value' => '1',
+ 'escape' => false,
+ 'class' => 'btn btn-cta btn-wide',
+ 'label' => ' Save Backend'
+ )
+ ),
+ $this->createElement(
+ 'hidden',
+ 'backend',
+ array(
+ 'required' => true,
+ 'value' => 'db'
+ )
)
);
}
@@ -91,14 +90,12 @@ class DbBackendForm extends BaseBackendForm
*/
public function getConfig()
{
- $prefix = 'backend_' . $this->filterName($this->getBackendName()) . '_';
- $section = $this->getValue($prefix . 'name');
- $cfg = array(
- 'backend' => 'db',
- 'resource' => $this->getValue($prefix . 'resource'),
+ return array(
+ $this->getValue('name') => array(
+ 'backend' => 'db',
+ 'resource' => $this->getValue('resource')
+ )
);
-
- return array($section => $cfg);
}
/**
@@ -112,7 +109,7 @@ class DbBackendForm extends BaseBackendForm
{
try {
$testConnection = ResourceFactory::createResource(ResourceFactory::getResourceConfig(
- $this->getValue('backend_' . $this->filterName($this->getBackendName()) . '_resource')
+ $this->getValue('resource')
));
$dbUserBackend = new DbUserBackend($testConnection);
if ($dbUserBackend->count() < 1) {