feat(ui): complete look and feel refactor with dark and light mode support
This commit is contained in:
@@ -98,6 +98,24 @@ function ensure_notification_columns(PDO $db): void {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Garandeert dat de kolom voor weergavethema (dark, light, system) aanwezig is in MariaDB
|
||||
*/
|
||||
function ensure_theme_column(PDO $db): void {
|
||||
static $themeChecked = false;
|
||||
if ($themeChecked) return;
|
||||
$themeChecked = true;
|
||||
|
||||
try {
|
||||
$result = $db->query("SHOW COLUMNS FROM `users` LIKE 'theme'");
|
||||
if (!$result || $result->rowCount() === 0) {
|
||||
$db->exec("ALTER TABLE `users` ADD COLUMN `theme` VARCHAR(20) NOT NULL DEFAULT 'dark' AFTER `notification_settings`");
|
||||
}
|
||||
} catch (Throwable $e) {
|
||||
// Stil negeren indien al aanwezig
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Genereert en bewaart een persistente 'Onthoud mij' token in MariaDB en plaatst een veilige cookie
|
||||
*/
|
||||
@@ -399,4 +417,43 @@ function update_user_notification_settings(int $userId, array $settings): bool {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Haalt het voorkeursthema op voor een gebruiker ('dark', 'light' of 'system')
|
||||
*/
|
||||
function get_user_theme(int $userId): string {
|
||||
$db = get_db_connection();
|
||||
ensure_theme_column($db);
|
||||
|
||||
try {
|
||||
$stmt = $db->prepare("SELECT theme FROM users WHERE id = ?");
|
||||
$stmt->execute([$userId]);
|
||||
$theme = $stmt->fetchColumn();
|
||||
if ($theme && in_array($theme, ['dark', 'light', 'system'])) {
|
||||
return $theme;
|
||||
}
|
||||
} catch (Throwable $e) {
|
||||
error_log("get_user_theme error: " . $e->getMessage());
|
||||
}
|
||||
|
||||
return 'dark';
|
||||
}
|
||||
|
||||
/**
|
||||
* Slaat het voorkeursthema van een gebruiker op ('dark', 'light' of 'system')
|
||||
*/
|
||||
function update_user_theme(int $userId, string $theme): bool {
|
||||
$db = get_db_connection();
|
||||
ensure_theme_column($db);
|
||||
|
||||
$theme = in_array($theme, ['dark', 'light', 'system']) ? $theme : 'dark';
|
||||
|
||||
try {
|
||||
$stmt = $db->prepare("UPDATE users SET theme = ? WHERE id = ?");
|
||||
return $stmt->execute([$theme, $userId]);
|
||||
} catch (Throwable $e) {
|
||||
error_log("update_user_theme error: " . $e->getMessage());
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user