Merge pull request 'Timzone' (#59) from dev into main
Reviewed-on: #59
This commit was merged in pull request #59.
This commit is contained in:
+21
-1
@@ -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());
|
||||
|
||||
Reference in New Issue
Block a user