33 lines
998 B
PHP
33 lines
998 B
PHP
<?php
|
|
|
|
namespace App\Models;
|
|
|
|
use Illuminate\Database\Eloquent\Model;
|
|
use Illuminate\Support\Facades\Cache;
|
|
|
|
final class SiteSetting extends Model
|
|
{
|
|
protected $table = 'sonardesk_site_settings';
|
|
protected $primaryKey = 'key';
|
|
public $incrementing = false;
|
|
protected $keyType = 'string';
|
|
protected $fillable = ['key', 'value'];
|
|
|
|
public static function valueFor(string $key, ?string $default = null): ?string
|
|
{
|
|
return Cache::remember('sonardesk.setting.'.$key, 300, fn () => static::query()->find($key)?->value ?? $default);
|
|
}
|
|
|
|
public static function booleanFor(string $key, bool $default = false): bool
|
|
{
|
|
$value = static::valueFor($key);
|
|
return $value === null ? $default : filter_var($value, FILTER_VALIDATE_BOOLEAN);
|
|
}
|
|
|
|
public static function put(string $key, ?string $value): void
|
|
{
|
|
static::query()->updateOrCreate(['key' => $key], ['value' => $value]);
|
|
Cache::forget('sonardesk.setting.'.$key);
|
|
}
|
|
}
|