55 lines
1.3 KiB
PHP
55 lines
1.3 KiB
PHP
<?php
|
|
|
|
namespace App\Models;
|
|
|
|
use Illuminate\Database\Eloquent\Model;
|
|
|
|
class Setting extends Model
|
|
{
|
|
protected $fillable = [
|
|
'group',
|
|
'key',
|
|
'value',
|
|
'type',
|
|
'description',
|
|
];
|
|
|
|
/**
|
|
* Hole einen Setting-Wert anhand von Gruppe und Key.
|
|
*/
|
|
public static function getValue(string $group, string $key, mixed $default = null): mixed
|
|
{
|
|
$setting = self::query()
|
|
->where('group', $group)
|
|
->where('key', $key)
|
|
->first();
|
|
|
|
if (! $setting) {
|
|
return $default;
|
|
}
|
|
|
|
return match ($setting->type) {
|
|
'integer' => (int) $setting->value,
|
|
'boolean' => filter_var($setting->value, FILTER_VALIDATE_BOOLEAN),
|
|
'json' => json_decode($setting->value, true),
|
|
default => $setting->value,
|
|
};
|
|
}
|
|
|
|
/**
|
|
* Setze einen Setting-Wert.
|
|
*/
|
|
public static function setValue(string $group, string $key, mixed $value): void
|
|
{
|
|
$setting = self::query()
|
|
->where('group', $group)
|
|
->where('key', $key)
|
|
->first();
|
|
|
|
if ($setting) {
|
|
$setting->update([
|
|
'value' => is_array($value) ? json_encode($value) : (string) $value,
|
|
]);
|
|
}
|
|
}
|
|
}
|