From c48157e3b85f3daa4a68ef83d7534df6a59d5c78 Mon Sep 17 00:00:00 2001 From: Arthur Schiwon Date: Thu, 24 Oct 2013 20:26:05 +0200 Subject: [PATCH] LDAP: don't validate unconfigured (new) LDAP server configs, fixes #5518 --- apps/user_ldap/lib/connection.php | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/apps/user_ldap/lib/connection.php b/apps/user_ldap/lib/connection.php index 8d34fb2f41..14dfaa1174 100644 --- a/apps/user_ldap/lib/connection.php +++ b/apps/user_ldap/lib/connection.php @@ -39,6 +39,8 @@ class Connection extends LDAPUtility { //settings handler protected $configuration; + protected $doNotValidate = false; + /** * @brief Constructor * @param $configPrefix a string with the prefix for the configkey column (appconfig table) @@ -57,6 +59,8 @@ class Connection extends LDAPUtility { } $this->hasPagedResultSupport = $this->ldap->hasPagedResultSupport(); + $this->doNotValidate = !in_array($this->configPrefix, + Helper::getServerConfigurationPrefixes()); } public function __destruct() { @@ -88,6 +92,7 @@ class Connection extends LDAPUtility { } public function __set($name, $value) { + $this->doNotValidate = false; $before = $this->configuration->$name; $this->configuration->$name = $value; $after = $this->configuration->$name; @@ -201,11 +206,13 @@ class Connection extends LDAPUtility { if(is_null($setParameters)) { $setParameters = array(); } + $this->doNotValidate = false; $this->configuration->setConfiguration($config, $setParameters); if(count($setParameters) > 0) { $this->configured = $this->validateConfiguration(); } + return $this->configured; } @@ -401,6 +408,14 @@ class Connection extends LDAPUtility { * @returns true if configuration seems OK, false otherwise */ private function validateConfiguration() { + + if($this->doNotValidate) { + //don't do a validation if it is a new configuration with pure + //default values. Will be allowed on changes via __set or + //setConfiguration + return false; + } + // first step: "soft" checks: settings that are not really // necessary, but advisable. If left empty, give an info message $this->doSoftValidation();