From 4dab67ef5b7cec9ff9cd8638ea75be07b0683d30 Mon Sep 17 00:00:00 2001 From: Johannes Meyer Date: Wed, 29 Jul 2015 14:44:09 +0200 Subject: [PATCH] Introduce wizard page UserGroupBackendPage refs #9609 --- .../forms/UserGroupBackendPage.php | 127 ++++++++++++++++++ 1 file changed, 127 insertions(+) create mode 100644 modules/setup/application/forms/UserGroupBackendPage.php diff --git a/modules/setup/application/forms/UserGroupBackendPage.php b/modules/setup/application/forms/UserGroupBackendPage.php new file mode 100644 index 000000000..1d8858689 --- /dev/null +++ b/modules/setup/application/forms/UserGroupBackendPage.php @@ -0,0 +1,127 @@ +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; + } +}