koel/app/Models/Setting.php

49 lines
1.1 KiB
PHP
Raw Normal View History

2015-12-13 04:42:28 +00:00
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
2015-12-13 04:42:28 +00:00
use Illuminate\Database\Eloquent\Model;
/**
* @property string $key
2021-06-05 10:47:56 +00:00
* @property mixed $value
2019-08-05 10:57:36 +00:00
*
2019-08-05 10:56:48 +00:00
* @method static self find(string $key)
*/
2015-12-13 04:42:28 +00:00
class Setting extends Model
{
use HasFactory;
2015-12-13 04:42:28 +00:00
protected $primaryKey = 'key';
protected $keyType = 'string';
2015-12-13 04:42:28 +00:00
public $timestamps = false;
protected $guarded = [];
protected $casts = ['value' => 'json'];
public static function get(string $key): mixed
2015-12-13 04:42:28 +00:00
{
return self::find($key)?->value;
2015-12-13 04:42:28 +00:00
}
/**
* Set a setting (no pun) value.
*
* @param array|string $key the key of the setting, or an associative array of settings,
2020-09-06 21:20:42 +00:00
* in which case $value will be discarded
2015-12-13 04:42:28 +00:00
*/
public static function set(array|string $key, $value = ''): void
2015-12-13 04:42:28 +00:00
{
if (is_array($key)) {
foreach ($key as $k => $v) {
self::set($k, $v);
}
return;
}
self::query()->updateOrCreate(compact('key'), compact('value'));
2015-12-13 04:42:28 +00:00
}
}