From e498981bc4e9edbf8068992a54530ea3ced1b588 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=BCrgen=20Meyer?= Date: Thu, 13 Nov 2025 17:13:43 +0100 Subject: [PATCH] Datumsabgleich zwischen Turnier und Turnierdisziplin optimiert. --- .../components/com_sportsmanager/admin.php | 22 ++++++++++++++++--- .../com_sportsmanager/database/update.php | 21 ++++++++++++++++++ 2 files changed, 40 insertions(+), 3 deletions(-) diff --git a/src/structure/components/com_sportsmanager/admin.php b/src/structure/components/com_sportsmanager/admin.php index f253ef6..0c4270e 100644 --- a/src/structure/components/com_sportsmanager/admin.php +++ b/src/structure/components/com_sportsmanager/admin.php @@ -10592,11 +10592,11 @@ function adminEditTurnier(): void HTML_sportsmanager_admin::adminEditTurnier($row, $veranstalter, $saisons, $vorlage, $users, $berechtigt_fuer_turnier, $kategorien); } -#[NoReturn] function adminSaveTurnier(): void +function adminSaveTurnier(): void { $db = getDatabase(); $jInput = Factory::getContainer()->get(SiteApplication::class)->input; - + $Fehlertext = ""; if (!benutzerZugriff("turniere_aendern")) keinZugriff(); @@ -10610,7 +10610,9 @@ function adminEditTurnier(): void $saison_id = $jInput->get('saison_id', 0, 'INT'); $turnierort = $db->escape(trim($jInput->get('turnierort', '', 'RAW'))); $erster_tag = normalisiertesDatum(sprintf("%04d-%02d-%02d", $jInput->get('erster_tag_jahr', 2000, 'INT'), $jInput->get('erster_tag_monat', 1, 'INT'), $jInput->get('erster_tag_tag', 1, 'INT'))); - $mehrtaegig = $jInput->get('mehrtaegig', 0, 'INT'); + if (!validateDate($erster_tag,'Y-m-d')) + $Fehlertext = "Bitte gültiges Datum eingeben"; + $mehrtaegig = $jInput->get('mehrtaegig', 0, 'INT'); $reminder_count = $jInput->get('reminder_count', 0, 'INT'); if (!$mehrtaegig) $letzter_tag = $erster_tag; @@ -10625,6 +10627,11 @@ function adminEditTurnier(): void $berechtigt_fuer_turnier_user_ids[] = $berechtigt_user_id; } + if ($Fehlertext != ""){ + echo "$Fehlertext\n"; + return; + } + if ($vorlage) { $vorlage_id = $id; $id = 0; @@ -10666,6 +10673,15 @@ function adminEditTurnier(): void . "\n reminder_count = '$reminder_count'" . "\n WHERE turnier_id = $id"; $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + if ($letzter_tag == $erster_tag){ + $query = "UPDATE #__sportsmanager_turnierdisziplin" + . "\n SET beginn = CONCAT('$erster_tag', ' ', TIME(beginn))"; + } + $db->setQuery($query); if (!$db->execute()) { die($db->stderr(true)); } diff --git a/src/structure/components/com_sportsmanager/database/update.php b/src/structure/components/com_sportsmanager/database/update.php index 736cb95..04091b8 100644 --- a/src/structure/components/com_sportsmanager/database/update.php +++ b/src/structure/components/com_sportsmanager/database/update.php @@ -5378,6 +5378,27 @@ function updateDatabase(): void } } + if ($datenbank_version < 112) { + + // Korrektur Startuhrzeit in sportsmanager_turnierdisziplin bei eintägigen Veranstaltungen + $query = "UPDATE #__sportsmanager_turnierdisziplin td" + . "\n JOIN #__sportsmanager_turnier t ON td.turnier_id = t.turnier_id" + . "\n SET td.beginn = CONCAT(t.erster_tag, ' ', TIME(td.beginn))" + . "\n WHERE t.erster_tag = t.letzter_tag;"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '112'" + . "\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";