X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/e5c4e0ac86cdfc9399ee11ca07d1dea7d2151e8e..refs/pull/692/head:/app/Services/SettingService.php diff --git a/app/Services/SettingService.php b/app/Services/SettingService.php index 40094a513..7ec3ef93a 100644 --- a/app/Services/SettingService.php +++ b/app/Services/SettingService.php @@ -16,6 +16,7 @@ class SettingService protected $setting; protected $cache; + protected $localCache = []; protected $cachePrefix = 'setting-'; @@ -39,9 +40,17 @@ class SettingService */ public function get($key, $default = false) { - if ($default === false) $default = config('setting-defaults.' . $key, false); + if ($default === false) { + $default = config('setting-defaults.' . $key, false); + } + if (isset($this->localCache[$key])) { + return $this->localCache[$key]; + } + $value = $this->getValueFromStore($key, $default); - return $this->formatValue($value, $default); + $formatted = $this->formatValue($value, $default); + $this->localCache[$key] = $formatted; + return $formatted; } /** @@ -67,12 +76,15 @@ class SettingService { // Check for an overriding value $overrideValue = $this->getOverrideValue($key); - if ($overrideValue !== null) return $overrideValue; + if ($overrideValue !== null) { + return $overrideValue; + } // Check the cache $cacheKey = $this->cachePrefix . $key; - if ($this->cache->has($cacheKey)) { - return $this->cache->get($cacheKey); + $cacheVal = $this->cache->get($cacheKey, null); + if ($cacheVal !== null) { + return $cacheVal; } // Check the database @@ -94,6 +106,9 @@ class SettingService { $cacheKey = $this->cachePrefix . $key; $this->cache->forget($cacheKey); + if (isset($this->localCache[$key])) { + unset($this->localCache[$key]); + } } /** @@ -105,11 +120,17 @@ class SettingService protected function formatValue($value, $default) { // Change string booleans to actual booleans - if ($value === 'true') $value = true; - if ($value === 'false') $value = false; + if ($value === 'true') { + $value = true; + } + if ($value === 'false') { + $value = false; + } // Set to default if empty - if ($value === '') $value = $default; + if ($value === '') { + $value = $default; + } return $value; } @@ -218,8 +239,9 @@ class SettingService */ protected function getOverrideValue($key) { - if ($key === 'registration-enabled' && config('auth.method') === 'ldap') return false; + if ($key === 'registration-enabled' && config('auth.method') === 'ldap') { + return false; + } return null; } - -} \ No newline at end of file +}