From 4eab39f133392d37c171aa11f7e76896365f8454 Mon Sep 17 00:00:00 2001 From: Arthur Schiwon Date: Fri, 30 Jun 2017 11:12:33 +0200 Subject: LDAP: only write actually changes values to the DB Signed-off-by: Arthur Schiwon --- apps/user_ldap/lib/Configuration.php | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/apps/user_ldap/lib/Configuration.php b/apps/user_ldap/lib/Configuration.php index c65e6e34e2c..c0963037aaf 100644 --- a/apps/user_ldap/lib/Configuration.php +++ b/apps/user_ldap/lib/Configuration.php @@ -38,6 +38,8 @@ class Configuration { protected $configPrefix = null; protected $configRead = false; + /** @var string[] */ + protected $unsavedChanges = []; //settings protected $config = array( @@ -185,6 +187,8 @@ class Configuration { $this->$setMethod($key, $val); if(is_array($applied)) { $applied[] = $inputKey; + // storing key as index avoids duplication, and as value for simplicity + $this->unsavedChanges[$key] = $key; } } return null; @@ -238,11 +242,12 @@ class Configuration { } /** - * saves the current Configuration in the database + * saves the current config changes in the database */ public function saveConfiguration() { $cta = array_flip($this->getConfigTranslationArray()); - foreach($this->config as $key => $value) { + foreach($this->unsavedChanges as $key) { + $value = $this->config[$key]; switch ($key) { case 'ldapAgentPassword': $value = base64_encode($value); @@ -273,6 +278,7 @@ class Configuration { } $this->saveValue($cta[$key], $value); } + $this->unsavedChanges = []; } /** -- cgit v1.2.3