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]); } }