*/
public function get($key, $default = false)
{
- $value = $this->getValueFromStore($key, $default);
+ $value = $this->getValueFromStore($key, $default);
return $this->formatValue($value, $default);
}
/**
* Gets a setting value from the cache or database.
+ * Looks at the system defaults if not cached or in database.
* @param $key
* @param $default
* @return mixed
*/
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;
if ($this->cache->has($cacheKey)) {
return $this->cache->get($cacheKey);
}
+ // Check the database
$settingObject = $this->getSettingObjectByKey($key);
- if($settingObject !== null) {
+ if ($settingObject !== null) {
$value = $settingObject->value;
$this->cache->forever($cacheKey, $value);
return $value;
}
+ // Check the defaults set in the app config.
+ $configPrefix = 'setting-defaults.' . $key;
+ if (config()->has($configPrefix)) {
+ $value = config($configPrefix);
+ $this->cache->forever($cacheKey, $value);
+ return $value;
+ }
+
return $default;
}
+ /**
+ * Clear an item from the cache completely.
+ * @param $key
+ */
protected function clearFromCache($key)
{
$cacheKey = $this->cachePrefix . $key;
* @param $key
* @return mixed
*/
- private function getSettingObjectByKey($key)
+ protected function getSettingObjectByKey($key)
{
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;
+ }
+
}
\ No newline at end of file