From 56776c01f027c92512525c6aa64e80c2e2433eb6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=BCrgen=20Meyer?= Date: Thu, 18 Sep 2025 16:54:22 +0200 Subject: [PATCH 1/2] Doppelte Live-Ergebnisse eines Spiels (issue #190) --- .../components/com_sportsmanager/admin.php | 4 ++-- .../com_sportsmanager/database/update.php | 23 +++++++++++++++++++ src/structure/script.php | 4 ++-- 3 files changed, 27 insertions(+), 4 deletions(-) diff --git a/src/structure/components/com_sportsmanager/admin.php b/src/structure/components/com_sportsmanager/admin.php index 1a42438..120b3cf 100644 --- a/src/structure/components/com_sportsmanager/admin.php +++ b/src/structure/components/com_sportsmanager/admin.php @@ -8327,7 +8327,7 @@ function adminSaveBegegnungSpielplan(): void } if ($zwischenergebnis) { - $query = "INSERT INTO #__sportsmanager_unbestaetigtes_ergebnis (begegnung_id, vorschlagendes_team_id, zwischenergebnis, kommentar, vorgeschlagen)" + $query = "INSERT IGNORE INTO #__sportsmanager_unbestaetigtes_ergebnis (begegnung_id, vorschlagendes_team_id, zwischenergebnis, kommentar, vorgeschlagen)" . "\n VALUES ('$id', " . ($bestaetigen != 0 ? "'$vorschlagendes_team_id'" : "'0'") . ", '1', '$kommentar', now());"; $db->setQuery($query); if (!$db->execute()) { @@ -8341,7 +8341,7 @@ function adminSaveBegegnungSpielplan(): void abortWithError($db->stderr(true)); } } else if ($bestaetigen != 0) { - $query = "INSERT INTO #__sportsmanager_unbestaetigtes_ergebnis (begegnung_id, vorschlagendes_team_id, kommentar, vorgeschlagen)" + $query = "INSERT IGNORE INTO #__sportsmanager_unbestaetigtes_ergebnis (begegnung_id, vorschlagendes_team_id, kommentar, vorgeschlagen)" . "\n VALUES ('$id', '$vorschlagendes_team_id', '$kommentar', now());"; $db->setQuery($query); if (!$db->execute()) { diff --git a/src/structure/components/com_sportsmanager/database/update.php b/src/structure/components/com_sportsmanager/database/update.php index 9b3055b..f1606e5 100644 --- a/src/structure/components/com_sportsmanager/database/update.php +++ b/src/structure/components/com_sportsmanager/database/update.php @@ -5318,6 +5318,29 @@ function updateDatabase(): void } } + if ($datenbank_version < 108) { + + $query = "DELETE t1 FROM tfvhh_sportsmanager_unbestaetigtes_ergebnis t1" + . "\n INNER JOIN tfvhh_sportsmanager_unbestaetigtes_ergebnis t2" + . "\n ON t1.begegnung_id = t2.begegnung_id" + . "\n AND t1.unbestaetigtes_ergebnis_id < t2.unbestaetigtes_ergebnis_id;"; + $db->setQuery( $query ); + if (!$db->execute()) { die($db->stderr(true)); } + + $query = " ALTER TABLE `tfvhh`.`tfvhh_sportsmanager_unbestaetigtes_ergebnis`" + . "\n DROP INDEX `begegnung_id`, ADD UNIQUE `begegnung_id` (`begegnung_id`) USING BTREE;"; + $db->setQuery( $query ); + if (!$db->execute()) { die($db->stderr(true)); } + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '108'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + if ($termin_aktionen_email_setzen) { $query = "SELECT aktion_user_id, termin_aktion_id" . "\n FROM #__sportsmanager_termin_aktion"; diff --git a/src/structure/script.php b/src/structure/script.php index 5ff6caa..5fbe9db 100644 --- a/src/structure/script.php +++ b/src/structure/script.php @@ -1005,7 +1005,7 @@ return new class () implements InstallerScriptInterface $db->setQuery( $query ); if (!$db->execute()) { die($db->stderr(true)); } - $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_unbestaetigtes_ergebnis` (" + $query = "CREATE TABLE IF NOT EXISTS `#__sportsmanager_unbestaetigtes_ergebnis` (" . "\n `unbestaetigtes_ergebnis_id` int(11) NOT NULL AUTO_INCREMENT," . "\n `begegnung_id` int(11) NOT NULL DEFAULT '0'," . "\n `vorschlagendes_team_id` int(11) NOT NULL DEFAULT '0'," @@ -1013,7 +1013,7 @@ return new class () implements InstallerScriptInterface . "\n `kommentar` varchar(255) DEFAULT NULL," . "\n `vorgeschlagen` datetime DEFAULT NULL," . "\n PRIMARY KEY (`unbestaetigtes_ergebnis_id`)," - . "\n KEY `begegnung_id` (`begegnung_id`)," + . "\n UNIQUE KEY `begegnung_id` (`begegnung_id`)," . "\n KEY `vorschlagendes_team_id` (`vorschlagendes_team_id`)" . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; $db->setQuery( $query ); From 11e42c237449433c5cf04b08213d7cd25438ebf4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=BCrgen=20Meyer?= Date: Thu, 18 Sep 2025 17:10:24 +0200 Subject: [PATCH 2/2] tfvhh durch #_ ersetzt --- .../components/com_sportsmanager/database/update.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/structure/components/com_sportsmanager/database/update.php b/src/structure/components/com_sportsmanager/database/update.php index f1606e5..712aa2d 100644 --- a/src/structure/components/com_sportsmanager/database/update.php +++ b/src/structure/components/com_sportsmanager/database/update.php @@ -5320,14 +5320,14 @@ function updateDatabase(): void if ($datenbank_version < 108) { - $query = "DELETE t1 FROM tfvhh_sportsmanager_unbestaetigtes_ergebnis t1" - . "\n INNER JOIN tfvhh_sportsmanager_unbestaetigtes_ergebnis t2" + $query = "DELETE t1 FROM #__sportsmanager_unbestaetigtes_ergebnis t1" + . "\n INNER JOIN #__sportsmanager_unbestaetigtes_ergebnis t2" . "\n ON t1.begegnung_id = t2.begegnung_id" . "\n AND t1.unbestaetigtes_ergebnis_id < t2.unbestaetigtes_ergebnis_id;"; $db->setQuery( $query ); if (!$db->execute()) { die($db->stderr(true)); } - $query = " ALTER TABLE `tfvhh`.`tfvhh_sportsmanager_unbestaetigtes_ergebnis`" + $query = " ALTER TABLE `#__sportsmanager_unbestaetigtes_ergebnis`" . "\n DROP INDEX `begegnung_id`, ADD UNIQUE `begegnung_id` (`begegnung_id`) USING BTREE;"; $db->setQuery( $query ); if (!$db->execute()) { die($db->stderr(true)); }