This commit is contained in:
2026-09-12 10:57:11 +02:00
parent bcd85f131b
commit 5a5456ffe0
3 changed files with 28 additions and 6 deletions
+21 -1
View File
@@ -32,6 +32,7 @@ function get_db_connection(): PDO {
");
}
$tzOffset = date('P'); // Dynamische offset conform Europe/Amsterdam (+02:00 in zomertijd, +01:00 in wintertijd)
$options = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
@@ -41,6 +42,9 @@ function get_db_connection(): PDO {
if (defined('PDO::MYSQL_ATTR_MULTI_STATEMENTS')) {
$options[PDO::MYSQL_ATTR_MULTI_STATEMENTS] = true;
}
if (defined('PDO::MYSQL_ATTR_INIT_COMMAND')) {
$options[PDO::MYSQL_ATTR_INIT_COMMAND] = "SET time_zone = '{$tzOffset}'";
}
$dsnWithDb = sprintf(
'mysql:host=%s;port=%s;dbname=%s;charset=%s',
@@ -53,6 +57,8 @@ function get_db_connection(): PDO {
// 2. CHECK: Bestaat de database al?
try {
$pdo = new PDO($dsnWithDb, DB_USER, DB_PASS, $options);
// Garandeer dat MariaDB sessietijd 1-op-1 synchroon loopt met PHP tijd (Europe/Amsterdam)
$pdo->exec("SET time_zone = '{$tzOffset}'");
ensure_tables_exist($pdo);
return $pdo;
@@ -70,6 +76,7 @@ function get_db_connection(): PDO {
));
$pdo = new PDO($dsnWithDb, DB_USER, DB_PASS, $options);
$pdo->exec("SET time_zone = '{$tzOffset}'");
ensure_tables_exist($pdo);
return $pdo;
@@ -228,8 +235,21 @@ function ensure_tables_exist(PDO $pdo): void {
}
}
}
// Zorg dat eerdere audit logs die in UTC (+00:00) zijn weggeschreven worden gesynchroniseerd naar Europe/Amsterdam (+2 uur)
try {
$stmtCheck = $pdo->query("SELECT setting_value FROM system_settings WHERE setting_key = 'audit_logs_tz_fixed' LIMIT 1");
$fixed = $stmtCheck ? $stmtCheck->fetchColumn() : null;
if (!$fixed) {
// Pas bestaande audit logs eenmalig aan zodat de weergave klopt met de lokale tijd
$pdo->exec("UPDATE audit_logs SET created_at = DATE_ADD(created_at, INTERVAL 2 HOUR)");
$pdo->prepare("
INSERT INTO system_settings (setting_key, setting_value, created_at, updated_at)
VALUES ('audit_logs_tz_fixed', '1', NOW(), NOW())
ON DUPLICATE KEY UPDATE setting_value = '1', updated_at = NOW()
")->execute();
}
} catch (Throwable $e) {
// Stil negeren indien tabellen nog in opbouw zijn
// Stil negeren indien system_settings tabel nog niet bestaat
}
} catch (Throwable $e) {
error_log("Fout bij controleren tabellen: " . $e->getMessage());