<?php namespace BookStack\Providers;
+use BookStack\Services\SettingService;
+use BookStack\Setting;
use Illuminate\Support\ServiceProvider;
use Validator;
*/
public function register()
{
- //
+ $this->app->singleton(SettingService::class, function($app) {
+ return new SettingService($app->make(Setting::class), $app->make('Illuminate\Contracts\Cache\Repository'));
+ });
}
}
protected $setting;
protected $cache;
+ protected $localCache = [];
protected $cachePrefix = 'setting-';
public function get($key, $default = 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;
}
/**
// 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
$settingObject = $this->getSettingObjectByKey($key);
*/
function setting($key = null, $default = false)
{
- $settingService = app(\BookStack\Services\SettingService::class);
+ $settingService = resolve(\BookStack\Services\SettingService::class);
if (is_null($key)) return $settingService;
return $settingService->get($key, $default);
}