86 lines
1.8 KiB
PHP
86 lines
1.8 KiB
PHP
<?php
|
|
|
|
namespace App\CMS\Helpers;
|
|
|
|
use App\CMS\Repositories\Settings\Settings as SettingsRepository;
|
|
use App\Models\Settings as SettingsModel;
|
|
use Illuminate\Support\Facades\Cache;
|
|
|
|
/**
|
|
* Class Settings
|
|
*
|
|
* Helper class for easier obtaining system settings
|
|
*
|
|
* @package App\CMS\Helpers
|
|
*/
|
|
class Settings
|
|
{
|
|
/**
|
|
* @var array List of all used settings
|
|
*/
|
|
protected static $settings;
|
|
/**
|
|
* @var bool Are data already initialized?
|
|
*/
|
|
protected static $initialized = false;
|
|
|
|
/**
|
|
* Getter for settings determined with key.
|
|
*
|
|
* @param string $key settings key
|
|
* @param string|null $default default value, which will be returned when given key does not exist
|
|
*
|
|
* @param null $exists
|
|
*
|
|
* @return null|string
|
|
*/
|
|
public static function get($key, $default = null, & $exists = null)
|
|
{
|
|
self::init();
|
|
|
|
if (isset(self::$settings->$key)) {
|
|
$exists = true;
|
|
self::$initialized = true;
|
|
return self::$settings->$key;
|
|
}
|
|
|
|
$exists = false;
|
|
return $default;
|
|
}
|
|
|
|
/**
|
|
* Shortcut for obtaining settings saved as JSON
|
|
*
|
|
* @param $key
|
|
*
|
|
* @return mixed
|
|
*/
|
|
public static function getJson($key)
|
|
{
|
|
return json_decode(self::get($key, '{}'));
|
|
}
|
|
|
|
/**
|
|
* Get all settings
|
|
*
|
|
* @return array
|
|
*/
|
|
public static function all()
|
|
{
|
|
self::init();
|
|
|
|
return self::$settings;
|
|
}
|
|
|
|
/**
|
|
* Initialize settings array
|
|
*/
|
|
private static function init()
|
|
{
|
|
if (!self::$initialized) {
|
|
self::$settings = Cache::remember('settings', config('cache.settingCacheLifetime'), function () {
|
|
app(SettingsRepository::class)->getAll();
|
|
});
|
|
}
|
|
}
|
|
} |