feat(cache): implement centralized caching layer for improved performance and reduced API calls
feat(microsoft-integration): enhance inbox and events fetching with caching support feat(auth): include theme and notification settings in user data retrieval feat(profile): improve password visibility toggle functionality feat(planner): optimize event synchronization with Outlook using caching fix(notifications): update mail badge handling for mobile and desktop
This commit is contained in:
+30
-20
@@ -29,36 +29,42 @@ function ensure_system_settings_table(?PDO $db = null): void {
|
||||
}
|
||||
|
||||
/**
|
||||
* Haalt een enkele instelling op uit MariaDB
|
||||
* Haalt alle systeeminstellingen in 1 geoptimaliseerde query op en bewaart deze in het static runtime geheugen
|
||||
*/
|
||||
function get_system_setting(string $key, $default = null) {
|
||||
function get_all_system_settings(bool $forceRefresh = false): array {
|
||||
static $settingsCache = null;
|
||||
if ($settingsCache !== null && !$forceRefresh) {
|
||||
return $settingsCache;
|
||||
}
|
||||
|
||||
$settingsCache = [];
|
||||
try {
|
||||
$db = get_db_connection();
|
||||
ensure_system_settings_table($db);
|
||||
|
||||
$stmt = $db->prepare("SELECT setting_value FROM system_settings WHERE setting_key = ?");
|
||||
$stmt->execute([$key]);
|
||||
$val = $stmt->fetchColumn();
|
||||
|
||||
if ($val === false || $val === null) {
|
||||
return $default;
|
||||
$stmt = $db->query("SELECT setting_key, setting_value FROM system_settings");
|
||||
while ($row = $stmt->fetch()) {
|
||||
$val = $row['setting_value'];
|
||||
$decoded = json_decode($val, true);
|
||||
$settingsCache[$row['setting_key']] = (json_last_error() === JSON_ERROR_NONE) ? $decoded : $val;
|
||||
}
|
||||
|
||||
// Decodeer JSON indien van toepassing
|
||||
$decoded = json_decode($val, true);
|
||||
if (json_last_error() === JSON_ERROR_NONE) {
|
||||
return $decoded;
|
||||
}
|
||||
|
||||
return $val;
|
||||
} catch (Throwable $e) {
|
||||
error_log("get_system_setting error for {$key}: " . $e->getMessage());
|
||||
return $default;
|
||||
error_log("get_all_system_settings error: " . $e->getMessage());
|
||||
}
|
||||
|
||||
return $settingsCache;
|
||||
}
|
||||
|
||||
/**
|
||||
* Slaat een instelling op in MariaDB
|
||||
* Haalt een enkele instelling op uit het geheugen (of fallback default)
|
||||
*/
|
||||
function get_system_setting(string $key, $default = null) {
|
||||
$all = get_all_system_settings();
|
||||
return array_key_exists($key, $all) ? $all[$key] : $default;
|
||||
}
|
||||
|
||||
/**
|
||||
* Slaat een instelling op in MariaDB en ververst direct het cachegeheugen
|
||||
*/
|
||||
function set_system_setting(string $key, $value): bool {
|
||||
try {
|
||||
@@ -72,7 +78,11 @@ function set_system_setting(string $key, $value): bool {
|
||||
VALUES (?, ?)
|
||||
ON DUPLICATE KEY UPDATE setting_value = VALUES(setting_value), updated_at = NOW()
|
||||
");
|
||||
return $stmt->execute([$key, $valToStore]);
|
||||
$ok = $stmt->execute([$key, $valToStore]);
|
||||
if ($ok) {
|
||||
get_all_system_settings(true);
|
||||
}
|
||||
return $ok;
|
||||
} catch (Throwable $e) {
|
||||
error_log("set_system_setting error for {$key}: " . $e->getMessage());
|
||||
return false;
|
||||
|
||||
Reference in New Issue
Block a user