From 6b68d8a5edd4da636ad8bbf3a5a6765d1b7fe4a7 Mon Sep 17 00:00:00 2001 From: Tim <43742253+TQxTim@users.noreply.github.com> Date: Thu, 4 Jun 2026 11:53:10 +0200 Subject: [PATCH] Fix DB migration for sync_log: bump version to 121 and mirror into script.php Addresses review feedback (jmeyer26): - update.php: move the sync_log table + dtfb_sync_url setting out of the already-released <120 migration block into a new <121 block, so instances already at version 120 actually receive them. - script.php: create the sync_log table, seed dtfb_sync_url, and set the fresh-install datenbank_version to 121 (parity with update.php). --- .../com_sportsmanager/database/update.php | 56 +++++++++++-------- src/structure/script.php | 23 +++++++- 2 files changed, 55 insertions(+), 24 deletions(-) diff --git a/src/structure/components/com_sportsmanager/database/update.php b/src/structure/components/com_sportsmanager/database/update.php index aa52962..d20c006 100644 --- a/src/structure/components/com_sportsmanager/database/update.php +++ b/src/structure/components/com_sportsmanager/database/update.php @@ -5709,6 +5709,38 @@ function updateDatabase(): void } if ($datenbank_version < 120) { + $columns = $db->getTableColumns('#__sportsmanager_teamspiel_modus'); + if (!array_key_exists('spiele_in_spielerstatistik', $columns)){ + $query = "ALTER TABLE `#__sportsmanager_teamspiel_modus`" + . "\n ADD `spiele_in_spielerstatistik` INT(4) NOT NULL DEFAULT '0' AFTER `heimtausch`;"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + $columns = $db->getTableColumns('#__sportsmanager_bestenliste_punkte'); + if (!array_key_exists('team_id', $columns)){ + $query = "ALTER TABLE `#__sportsmanager_bestenliste_punkte`" + . "\n ADD `team_id` INT(11) NULL DEFAULT NULL AFTER `spieler_2_id`;"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + $spielerstatistik_aktualisieren = true; + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '120'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($datenbank_version < 121) { $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_sync_log` (" . "\n `sync_id` INT(11) NOT NULL AUTO_INCREMENT," . "\n `sync_timestamp` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP," @@ -5734,30 +5766,8 @@ function updateDatabase(): void die($db->stderr(true)); } - $columns = $db->getTableColumns('#__sportsmanager_teamspiel_modus'); - if (!array_key_exists('spiele_in_spielerstatistik', $columns)){ - $query = "ALTER TABLE `#__sportsmanager_teamspiel_modus`" - . "\n ADD `spiele_in_spielerstatistik` INT(4) NOT NULL DEFAULT '0' AFTER `heimtausch`;"; - $db->setQuery($query); - if (!$db->execute()) { - die($db->stderr(true)); - } - } - - $columns = $db->getTableColumns('#__sportsmanager_bestenliste_punkte'); - if (!array_key_exists('team_id', $columns)){ - $query = "ALTER TABLE `#__sportsmanager_bestenliste_punkte`" - . "\n ADD `team_id` INT(11) NULL DEFAULT NULL AFTER `spieler_2_id`;"; - $db->setQuery($query); - if (!$db->execute()) { - die($db->stderr(true)); - } - } - - $spielerstatistik_aktualisieren = true; - $query = "UPDATE #__sportsmanager_einstellungen" - . "\n SET wert = '120'" + . "\n SET wert = '121'" . "\n WHERE name = 'datenbank_version'"; $db->setQuery($query); if (!$db->execute()) { diff --git a/src/structure/script.php b/src/structure/script.php index 0b113ff..ce3fae9 100644 --- a/src/structure/script.php +++ b/src/structure/script.php @@ -1274,7 +1274,28 @@ return new class () implements InstallerScriptInterface $db->setQuery( $query ); if (!$db->execute()) { die($db->stderr(true)); } - $query = "INSERT IGNORE #__sportsmanager_einstellungen SET name = 'datenbank_version', wert = '120';"; + $query = "INSERT IGNORE #__sportsmanager_einstellungen SET name = 'datenbank_version', wert = '121';"; + $db->setQuery( $query ); + if (!$db->execute()) { die($db->stderr(true)); } + + $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_sync_log` (" + . "\n `sync_id` INT(11) NOT NULL AUTO_INCREMENT," + . "\n `sync_timestamp` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP," + . "\n `sync_direction` ENUM('push', 'receive') NOT NULL," + . "\n `sync_trigger` ENUM('manual', 'cron', 'api') NOT NULL," + . "\n `sync_status` ENUM('success', 'error') NOT NULL," + . "\n `spieler_count` INT(11) DEFAULT 0," + . "\n `spieler_updated` INT(11) DEFAULT 0," + . "\n `spieler_added` INT(11) DEFAULT 0," + . "\n `message` TEXT," + . "\n `details` TEXT," + . "\n PRIMARY KEY (`sync_id`)," + . "\n INDEX `idx_timestamp` (`sync_timestamp`)" + . "\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;"; + $db->setQuery( $query ); + if (!$db->execute()) { die($db->stderr(true)); } + + $query = "INSERT IGNORE #__sportsmanager_einstellungen SET name = 'dtfb_sync_url', wert = '';"; $db->setQuery( $query ); if (!$db->execute()) { die($db->stderr(true)); }