Files
chat/backend/app/service/SettingsService.php
2026-08-05 15:56:08 +08:00

63 lines
1.7 KiB
PHP

<?php
namespace app\service;
use app\model\SystemSetting;
class SettingsService
{
private const DEFAULT_FEATURES = [
'markdown' => true,
'image' => true,
'video' => true,
'voice' => true,
'document' => true,
'emoji' => true,
'upload_image' => true,
'upload_video' => true,
'upload_file' => true,
'paste_image' => true,
'short_drama' => true,
];
public static function get(string $key, mixed $default = null): mixed
{
$row = SystemSetting::where('setting_key', $key)->find();
if (!$row) {
return $default;
}
$decoded = json_decode($row->setting_value, true);
return json_last_error() === JSON_ERROR_NONE ? $decoded : $row->setting_value;
}
public static function set(string $key, mixed $value): void
{
$stored = is_array($value) || is_object($value)
? json_encode($value, JSON_UNESCAPED_UNICODE)
: (string) $value;
$setting = SystemSetting::where('setting_key', $key)->find();
if ($setting) {
$setting->save(['setting_value' => $stored]);
} else {
SystemSetting::create([
'setting_key' => $key,
'setting_value' => $stored,
]);
}
}
public static function getFeatures(): array
{
$stored = self::get('features', []);
return array_replace(self::DEFAULT_FEATURES, is_array($stored) ? $stored : []);
}
public static function isFeatureEnabled(string $feature): bool
{
$features = self::getFeatures();
return !empty($features[$feature]);
}
}