diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/private/allconfig.php | 10 | ||||
-rw-r--r-- | lib/private/config.php | 89 | ||||
-rw-r--r-- | lib/private/legacy/config.php | 10 | ||||
-rw-r--r-- | lib/private/systemconfig.php | 10 | ||||
-rw-r--r-- | lib/public/iconfig.php | 8 |
5 files changed, 105 insertions, 22 deletions
diff --git a/lib/private/allconfig.php b/lib/private/allconfig.php index d4b4ed6fb6a..421db566866 100644 --- a/lib/private/allconfig.php +++ b/lib/private/allconfig.php @@ -70,6 +70,16 @@ class AllConfig implements \OCP\IConfig { } /** + * Sets and deletes system wide values + * + * @param array $configs Associative array with `key => value` pairs + * If value is null, the config key will be deleted + */ + public function setSystemValues(array $configs) { + $this->systemConfig->setValues($configs); + } + + /** * Sets a new system wide value * * @param string $key the key of the value, under which will be saved diff --git a/lib/private/config.php b/lib/private/config.php index 8544de34b72..586e8c20587 100644 --- a/lib/private/config.php +++ b/lib/private/config.php @@ -41,10 +41,10 @@ class Config { /** * Lists all available config keys - * @return array an array of key names * - * This function returns all keys saved in config.php. Please note that it - * does not return the values. + * Please note that it does not return the values. + * + * @return array an array of key names */ public function getKeys() { return array_keys($this->cache); @@ -52,12 +52,12 @@ class Config { /** * Gets a value from config.php + * + * If it does not exist, $default will be returned. + * * @param string $key key * @param mixed $default = null default value * @return mixed the value or $default - * - * This function gets the value from config.php. If it does not exist, - * $default will be returned. */ public function getValue($key, $default = null) { if (isset($this->cache[$key])) { @@ -68,36 +68,81 @@ class Config { } /** - * Sets a value - * @param string $key key - * @param mixed $value value - * - * This function sets the value and writes the config.php. + * Sets and deletes values and writes the config.php * + * @param array $configs Associative array with `key => value` pairs + * If value is null, the config key will be deleted */ - public function setValue($key, $value) { - // Add change - $this->cache[$key] = $value; + public function setValues(array $configs) { + $needsUpdate = false; + foreach ($configs as $key => $value) { + if ($value !== null) { + $needsUpdate |= $this->set($key, $value); + } else { + $needsUpdate |= $this->delete($key); + } + } - // Write changes - $this->writeData(); + if ($needsUpdate) { + // Write changes + $this->writeData(); + } } /** - * Removes a key from the config - * @param string $key key + * Sets the value and writes it to config.php if required * - * This function removes a key from the config.php. + * @param string $key key + * @param mixed $value value + */ + public function setValue($key, $value) { + if ($this->set($key, $value)) { + // Write changes + $this->writeData(); + } + } + + /** + * This function sets the value * + * @param string $key key + * @param mixed $value value + * @return bool True if the file needs to be updated, false otherwise + */ + protected function set($key, $value) { + if (!isset($this->cache[$key]) || $this->cache[$key] !== $value) { + // Add change + $this->cache[$key] = $value; + return true; + } + + return false; + } + + /** + * Removes a key from the config and removes it from config.php if required + * @param string $key */ public function deleteKey($key) { + if ($this->delete($key)) { + // Write changes + $this->writeData(); + } + } + + /** + * This function removes a key from the config + * + * @param string $key + * @return bool True if the file needs to be updated, false otherwise + */ + protected function delete($key) { if (isset($this->cache[$key])) { // Delete key from cache unset($this->cache[$key]); - - // Write changes - $this->writeData(); + return true; } + return false; } /** diff --git a/lib/private/legacy/config.php b/lib/private/legacy/config.php index 7b711204256..64d01434b11 100644 --- a/lib/private/legacy/config.php +++ b/lib/private/legacy/config.php @@ -59,6 +59,16 @@ class OC_Config { } /** + * Sets and deletes values and writes the config.php + * + * @param array $configs Associative array with `key => value` pairs + * If value is null, the config key will be deleted + */ + public static function setValues(array $configs) { + self::$object->setValues($configs); + } + + /** * Removes a key from the config * @param string $key key * diff --git a/lib/private/systemconfig.php b/lib/private/systemconfig.php index ce6883e5ab3..36cefdb8499 100644 --- a/lib/private/systemconfig.php +++ b/lib/private/systemconfig.php @@ -28,6 +28,16 @@ class SystemConfig { } /** + * Sets and deletes values and writes the config.php + * + * @param array $configs Associative array with `key => value` pairs + * If value is null, the config key will be deleted + */ + public function setValues(array $configs) { + \OC_Config::setValues($configs); + } + + /** * Looks up a system wide defined value * * @param string $key the key of the value, under which it was saved diff --git a/lib/public/iconfig.php b/lib/public/iconfig.php index a1952ef8f84..868a4133d2e 100644 --- a/lib/public/iconfig.php +++ b/lib/public/iconfig.php @@ -35,6 +35,14 @@ namespace OCP; */ interface IConfig { /** + * Sets and deletes system wide values + * + * @param array $configs Associative array with `key => value` pairs + * If value is null, the config key will be deleted + */ + public function setSystemValues(array $configs); + + /** * Sets a new system wide value * * @param string $key the key of the value, under which will be saved |