netgescon-day0/app/Models/SystemSetting.php

41 lines
983 B
PHP

<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class SystemSetting extends Model
{
protected $fillable = [
'key',
'value',
];
public static function getValue(string $key, mixed $default = null): mixed
{
$setting = static::query()->where('key', $key)->value('value');
if ($setting === null) {
return $default;
}
$decoded = json_decode($setting, true);
return json_last_error() === JSON_ERROR_NONE ? $decoded : $setting;
}
public static function setValue(string $key, mixed $value): void
{
$storedValue = is_string($value) ? $value : json_encode($value);
static::query()->updateOrCreate(
['key' => $key],
['value' => $storedValue]
);
}
public static function bool(string $key, bool $default = false): bool
{
return filter_var(static::getValue($key, $default), FILTER_VALIDATE_BOOL);
}
}