/**
* 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
{
if ($default === false) {
$default = config('setting-defaults.' . $key, false);
}
+
if (isset($this->localCache[$key])) {
return $this->localCache[$key];
}
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
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.
*/
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);
{
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;
- }
}