X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/3286f29a61833327b5701b28db626d0a480b07f9..refs/pull/2393/head:/app/Settings/SettingService.php diff --git a/app/Settings/SettingService.php b/app/Settings/SettingService.php index 42a381060..1c053b384 100644 --- a/app/Settings/SettingService.php +++ b/app/Settings/SettingService.php @@ -4,10 +4,8 @@ use Illuminate\Contracts\Cache\Repository as Cache; /** * Class SettingService - * * The settings are a simple key-value database store. - * - * @package BookStack\Services + * For non-authenticated users, user settings are stored via the session instead. */ class SettingService { @@ -41,6 +39,7 @@ class SettingService if ($default === false) { $default = config('setting-defaults.' . $key, false); } + if (isset($this->localCache[$key])) { return $this->localCache[$key]; } @@ -51,6 +50,19 @@ class SettingService return $formatted; } + /** + * Get a value from the session instead of the main store option. + * @param $key + * @param bool $default + * @return mixed + */ + protected function getFromSession($key, $default = false) + { + $value = session()->get($key, $default); + $formatted = $this->formatValue($value, $default); + return $formatted; + } + /** * Get a user-specific setting from the database or cache. * @param \BookStack\Auth\User $user @@ -61,11 +73,22 @@ class SettingService public function getUser($user, $key, $default = false) { if ($user->isDefault()) { - return session()->get($key, $default); + return $this->getFromSession($key, $default); } return $this->get($this->userKey($user->id, $key), $default); } + /** + * Get a value for the current logged-in user. + * @param $key + * @param bool $default + * @return bool|string + */ + public function getForCurrentUser($key, $default = false) + { + return $this->getUser(user(), $key, $default); + } + /** * Gets a setting value from the cache or database. * Looks at the system defaults if not cached or in database. @@ -75,12 +98,6 @@ class SettingService */ protected function getValueFromStore($key, $default) { - // Check for an overriding value - $overrideValue = $this->getOverrideValue($key); - if ($overrideValue !== null) { - return $overrideValue; - } - // Check the cache $cacheKey = $this->cachePrefix . $key; $cacheVal = $this->cache->get($cacheKey, null); @@ -232,20 +249,4 @@ class SettingService { return $this->setting->where('setting_key', '=', $key)->first(); } - - - /** - * Returns an override value for a setting based on certain app conditions. - * Used where certain configuration options overrule others. - * Returns null if no override value is available. - * @param $key - * @return bool|null - */ - protected function getOverrideValue($key) - { - if ($key === 'registration-enabled' && config('auth.method') === 'ldap') { - return false; - } - return null; - } }