Files
AudioCore/core/services/Settings.php

68 lines
1.7 KiB
PHP
Raw Normal View History

<?php
declare(strict_types=1);
namespace Core\Services;
use Throwable;
class Settings
{
private static array $data = [];
private static bool $loaded = false;
public static function init(string $path): void
{
if (self::$loaded) {
return;
}
if (is_file($path)) {
$loaded = require $path;
if (is_array($loaded)) {
self::$data = $loaded;
}
}
self::reload();
self::$loaded = true;
}
public static function get(string $key, string $default = ''): string
{
return array_key_exists($key, self::$data) ? (string)self::$data[$key] : $default;
}
public static function reload(): void
{
$db = Database::get();
if (!$db) {
return;
}
try {
$rows = $db->query("SELECT setting_key, setting_value FROM ac_settings")->fetchAll();
foreach ($rows as $row) {
$k = (string)($row['setting_key'] ?? '');
$v = (string)($row['setting_value'] ?? '');
if ($k !== '') {
self::$data[$k] = $v;
}
}
} catch (Throwable $e) {
return;
}
}
public static function set(string $key, string $value): void
{
self::$data[$key] = $value;
$db = Database::get();
if (!$db) {
return;
}
try {
$stmt = $db->prepare("REPLACE INTO ac_settings (setting_key, setting_value) VALUES (:k, :v)");
$stmt->execute([':k' => $key, ':v' => $value]);
} catch (Throwable $e) {
return;
}
}
}