summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/private/allconfig.php10
-rw-r--r--lib/private/config.php89
-rw-r--r--lib/private/legacy/config.php10
-rw-r--r--lib/private/systemconfig.php10
-rw-r--r--lib/public/iconfig.php8
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