]> git.mxchange.org Git - friendica.git/blobdiff - src/Core/Config/Configuration.php
Merge pull request #6942 from annando/worker-fast-commands
[friendica.git] / src / Core / Config / Configuration.php
index ccb9abda8a67a5d143eca2309e0b7cd9fa040525..c6fe626d91e441f1033142e64bda5e2ce6b526ac 100644 (file)
@@ -10,6 +10,16 @@ namespace Friendica\Core\Config;
  */
 class Configuration
 {
+       /**
+        * The blacklist of configuration settings, which should not get saved to the backend
+        * @var array
+        */
+       private $configSaveBlacklist = [
+               'config' => [
+                       'hostname' => true,
+               ]
+       ];
+
        /**
         * @var Cache\IConfigCache
         */
@@ -79,25 +89,23 @@ class Configuration
         */
        public function get($cat, $key, $default_value = null, $refresh = false)
        {
-               // Return the value of the cache if found and no refresh is forced
-               if (!$refresh && $this->configCache->has($cat, $key)) {
-                       return $this->configCache->get($cat, $key);
-               }
+               // if the value isn't loaded or refresh is needed, load it to the cache
+               if ($this->configAdapter->isConnected() &&
+                       (!$this->configAdapter->isLoaded($cat, $key) ||
+                       $refresh)) {
 
-               // if we don't find the value in the cache and the adapter isn't ready, return the default value
-               if (!$this->configAdapter->isConnected()) {
-                       return $default_value;
+                       $dbvalue = $this->configAdapter->get($cat, $key);
+
+                       if (isset($dbvalue)) {
+                               $this->configCache->set($cat, $key, $dbvalue);
+                               return $dbvalue;
+                       }
                }
 
-               // load DB value to cache
-               $dbvalue = $this->configAdapter->get($cat, $key);
+               // use the config cache for return
+               $result = $this->configCache->get($cat, $key);
 
-               if ($dbvalue !== '!<unset>!') {
-                       $this->configCache->set($cat, $key, $dbvalue);
-                       return $dbvalue;
-               } else {
-                       return $default_value;
-               }
+               return (isset($result)) ? $result : $default_value;
        }
 
        /**
@@ -119,7 +127,7 @@ class Configuration
                $cached = $this->configCache->set($cat, $key, $value);
 
                // If there is no connected adapter, we're finished
-               if (!$this->configAdapter->isConnected()) {
+               if (!$this->configAdapter->isConnected() || !empty($this->configSaveBlacklist[$cat][$key])) {
                        return $cached;
                }