From 79f3abc01a19aa91dcb655ca3f685c0496dfaba8 Mon Sep 17 00:00:00 2001 From: svennickel Date: Wed, 9 Sep 2026 18:56:02 +0200 Subject: [PATCH] Torsummen als eigene Spalten, NULL heisst unbekannt (Datenbankversion 123) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Die STFV-Tabellensortierung braucht als letzte inhaltliche Stufe die Tore — und die stehen bisher ausschliesslich im tinytext ergebnis_detailliert, wo kein SQL sie lesen kann (#306-Konzept, Abschnitt 2). Also neue, durchweg NULL-bare Spalten: teamspiel_heim_tore/gast_tore, begegnung.heim_tore/gast_tore und team.tore_gewonnen/verloren/differenz/quotient (Typen nach punkte_*-Vorbild). toreFuerSpiel() in tools.php ist die einzige Rechenstelle: bei punktetyp 0 sind die Punkte die Tore; wo Satzergebnisse gefuehrt werden (satzergebnisse 1), werden sie aus ergebnis_detailliert summiert (runden_detailliert_auswertung); sonst NULL — unter "Mehrere" ohne Satzerfassung spiegelt das Detail nur den Satzstand, eine Torzahl steht dort nicht und stand dort nie. Geschrieben wird an denselben zwei Stellen wie die Spielpunkte (Spielbericht speichern und begegnungenAktualisieren), immer paarweise gesetzt oder paarweise NULL; das Loeschen des Spielberichts nullt die Begegnungssummen mit. team.tore_* rechnet teamstatistikAktualisieren immer mit — als SUM ueber CASE je Begegnung, OHNE COALESCE: eine Begegnung mit unbekannten Toren traegt nichts bei, unbekannt wird niemals als 0:0 gewertet. Gemessen an Prueflige F: ein geleertes ergebnis_detailliert macht Spiel, Begegnung und die Differenz beider Teams NULL (135/147 -> 85/98), die Wiederherstellung stellt exakt den alten Stand her. KEIN Backfill in der Migration: updateDatabase() ruft begegnungenAktualisieren() nicht auf, und ein Update soll gespeicherte Werte nicht anfassen. Gemessen: nach Einspielen und einem Seitenaufruf steht die Version auf 123, alle 455 + 116 + 32 Tore-Felder sind NULL. Befuellt wird beim naechsten Speichern eines Berichts bzw. komplett beim Speichern des Modus — gemessen ueber alle acht Ligen: Einer/Race tragen Tore = Punkte (Damenbundesliga 42:31 -> 42:31), Satzerfassung summiert die Saetze ("5:3 4:4 2:6 6:1" -> 17:14, Begegnung 50:49), "Mehrere" ohne Satzerfassung bleibt ehrlich NULL (PRUEF Liga A, 30 Spiele, 0 Tore-Werte). Beide Pflegeorte: Migration <123 in database/update.php (getTableColumns-Guard je Tabelle, Versionsschreiben am Ende) UND die CREATEs in script.php samt datenbank_version 123. Gemessen per probe_-Tabellen aus den Neuinstallations- CREATEs gegen die migrierten Tabellen (information_schema: Name, Position, Typ, Nullable, Default): alle drei Tabellen spaltenidentisch. Bestand unberuehrt, gemessen mit derselben Messlatte wie beim Refactoring: alle zehn Modi und dieselben zehn Begegnungen unveraendert erneut gespeichert, danach Datenbank-Dump der Bestandsspalten (756 Zeilen) und Frontend-Dump (30995 Zeilen HTML) gegen den Lauf mit dem alten Code verglichen: VOLLSTAENDIG identisch. --- .../components/com_sportsmanager/admin.php | 36 ++++++++++++--- .../com_sportsmanager/database/update.php | 46 +++++++++++++++++++ .../com_sportsmanager/sportsmanager.php | 29 ++++++++++-- .../components/com_sportsmanager/tools.php | 11 +++++ src/structure/script.php | 10 +++- 5 files changed, 122 insertions(+), 10 deletions(-) diff --git a/src/structure/components/com_sportsmanager/admin.php b/src/structure/components/com_sportsmanager/admin.php index 3acd25d..bbfa1e3 100644 --- a/src/structure/components/com_sportsmanager/admin.php +++ b/src/structure/components/com_sportsmanager/admin.php @@ -11123,6 +11123,8 @@ function adminSaveBegegnungSpielplan(): void $total_gast_punkte = 0; $total_heim_spielpunkte = 0; $total_gast_spielpunkte = 0; + $total_heim_tore = 0; + $total_gast_tore = 0; $spiel_nr = 1; do { $spieltyp = $spieltypen[$spiel_nr - 1] ?? ''; @@ -11269,10 +11271,24 @@ function adminSaveBegegnungSpielplan(): void $total_heim_spielpunkte += $spiel_heim_spielpunkte; $total_gast_spielpunkte += $spiel_gast_spielpunkte; + list($spiel_heim_tore, $spiel_gast_tore) = toreFuerSpiel( + $teamspiel_modus->punktetyp, $teamspiel_modus->satzergebnisse ?? 0, + $spiel_heim_punkte, $spiel_gast_punkte, + $skip_spiel + ? (isset($spiele_nummern[$spiel_nr]) ? $spiele_nummern[$spiel_nr]->ergebnis_detailliert : null) + : $ergebnis_detailliert); + if ($spiel_heim_tore === null || $total_heim_tore === null) { + $total_heim_tore = null; + $total_gast_tore = null; + } else { + $total_heim_tore += $spiel_heim_tore; + $total_gast_tore += $spiel_gast_tore; + } + if (!$skip_spiel) { if (!isset($spiele_nummern[$spiel_nr])) { - $query = "INSERT INTO #__sportsmanager_teamspiel (begegnung_id, teamspiel_nummer, heim_spieler_1_id, heim_spieler_2_id, gast_spieler_1_id, gast_spieler_2_id, teamspiel_heim_punkte, teamspiel_gast_punkte, teamspiel_heim_spielpunkte, teamspiel_gast_spielpunkte, ergebnis_detailliert)" - . "\n VALUES ('$id', '$spiel_nr', '$spiel_heim_spieler_1_id', " . ($spieltyp[0] == "D" ? "'$spiel_heim_spieler_2_id'" : "NULL") . ", '$spiel_gast_spieler_1_id', " . ($spieltyp[0] == "D" ? "'$spiel_gast_spieler_2_id'" : "NULL") . ", '$spiel_heim_punkte', '$spiel_gast_punkte', '$spiel_heim_spielpunkte', '$spiel_gast_spielpunkte', " . (empty($ergebnis_detailliert) ? "null" : "'$ergebnis_detailliert'") . ");"; + $query = "INSERT INTO #__sportsmanager_teamspiel (begegnung_id, teamspiel_nummer, heim_spieler_1_id, heim_spieler_2_id, gast_spieler_1_id, gast_spieler_2_id, teamspiel_heim_punkte, teamspiel_gast_punkte, teamspiel_heim_spielpunkte, teamspiel_gast_spielpunkte, ergebnis_detailliert, teamspiel_heim_tore, teamspiel_gast_tore)" + . "\n VALUES ('$id', '$spiel_nr', '$spiel_heim_spieler_1_id', " . ($spieltyp[0] == "D" ? "'$spiel_heim_spieler_2_id'" : "NULL") . ", '$spiel_gast_spieler_1_id', " . ($spieltyp[0] == "D" ? "'$spiel_gast_spieler_2_id'" : "NULL") . ", '$spiel_heim_punkte', '$spiel_gast_punkte', '$spiel_heim_spielpunkte', '$spiel_gast_spielpunkte', " . (empty($ergebnis_detailliert) ? "null" : "'$ergebnis_detailliert'") . ", " . ($spiel_heim_tore === null ? "NULL, NULL" : "'$spiel_heim_tore', '$spiel_gast_tore'") . ");"; } else { $teamspiel_id = $spiele_nummern[$spiel_nr]->teamspiel_id; $query = "UPDATE #__sportsmanager_teamspiel" @@ -11284,7 +11300,9 @@ function adminSaveBegegnungSpielplan(): void . "\n teamspiel_gast_punkte = '$spiel_gast_punkte'," . "\n teamspiel_heim_spielpunkte = '$spiel_heim_spielpunkte'," . "\n teamspiel_gast_spielpunkte = '$spiel_gast_spielpunkte'," - . "\n ergebnis_detailliert = " . (empty($ergebnis_detailliert) ? "null" : "'$ergebnis_detailliert'") + . "\n ergebnis_detailliert = " . (empty($ergebnis_detailliert) ? "null" : "'$ergebnis_detailliert'") . "," + . "\n teamspiel_heim_tore = " . ($spiel_heim_tore === null ? "NULL" : "'$spiel_heim_tore'") . "," + . "\n teamspiel_gast_tore = " . ($spiel_gast_tore === null ? "NULL" : "'$spiel_gast_tore'") . "\n WHERE teamspiel_id = $teamspiel_id"; } $db->setQuery($query); @@ -11309,14 +11327,18 @@ function adminSaveBegegnungSpielplan(): void . "\n SET heim_punkte = '$total_heim_punkte'," . "\n gast_punkte = '$total_gast_punkte'," . "\n heim_spielpunkte = '$total_heim_spielpunkte'," - . "\n gast_spielpunkte = '$total_gast_spielpunkte'" + . "\n gast_spielpunkte = '$total_gast_spielpunkte'," + . "\n heim_tore = " . ($total_heim_tore === null ? "NULL" : "'$total_heim_tore'") . "," + . "\n gast_tore = " . ($total_gast_tore === null ? "NULL" : "'$total_gast_tore'") . "\n WHERE begegnung_id = $id"; } else { $query = "UPDATE #__sportsmanager_begegnung" . "\n SET heim_punkte = NULL," . "\n gast_punkte = NULL," . "\n heim_spielpunkte = NULL," - . "\n gast_spielpunkte = NULL" + . "\n gast_spielpunkte = NULL," + . "\n heim_tore = NULL," + . "\n gast_tore = NULL" . "\n WHERE begegnung_id = $id"; } $db->setQuery($query); @@ -11458,7 +11480,9 @@ function adminDeleteMatchReportBegegnung($id,$veranstaltungId): void . "\n SET heim_punkte = NULL," . "\n gast_punkte = NULL," . "\n heim_spielpunkte = NULL," - . "\n gast_spielpunkte = NULL" + . "\n gast_spielpunkte = NULL," + . "\n heim_tore = NULL," + . "\n gast_tore = NULL" . "\n WHERE begegnung_id = $id"; $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 34cbd75..0df172f 100644 --- a/src/structure/components/com_sportsmanager/database/update.php +++ b/src/structure/components/com_sportsmanager/database/update.php @@ -5850,6 +5850,52 @@ function updateDatabase(): void } } + if ($datenbank_version < 123) { + + $columns = $db->getTableColumns('#__sportsmanager_teamspiel'); + if (!array_key_exists('teamspiel_heim_tore', $columns)) { + $query = "ALTER TABLE `#__sportsmanager_teamspiel`" + . "\n ADD `teamspiel_heim_tore` SMALLINT(6) NULL DEFAULT NULL AFTER `ergebnis_detailliert`," + . "\n ADD `teamspiel_gast_tore` SMALLINT(6) NULL DEFAULT NULL AFTER `teamspiel_heim_tore`;"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + $columns = $db->getTableColumns('#__sportsmanager_begegnung'); + if (!array_key_exists('heim_tore', $columns)) { + $query = "ALTER TABLE `#__sportsmanager_begegnung`" + . "\n ADD `heim_tore` SMALLINT(6) NULL DEFAULT NULL AFTER `gast_spielpunkte`," + . "\n ADD `gast_tore` SMALLINT(6) NULL DEFAULT NULL AFTER `heim_tore`;"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + $columns = $db->getTableColumns('#__sportsmanager_team'); + if (!array_key_exists('tore_gewonnen', $columns)) { + $query = "ALTER TABLE `#__sportsmanager_team`" + . "\n ADD `tore_gewonnen` SMALLINT(6) NULL DEFAULT NULL AFTER `punkte_quotient`," + . "\n ADD `tore_verloren` SMALLINT(6) NULL DEFAULT NULL AFTER `tore_gewonnen`," + . "\n ADD `tore_differenz` SMALLINT(6) NULL DEFAULT NULL AFTER `tore_verloren`," + . "\n ADD `tore_quotient` FLOAT(8,2) NULL DEFAULT NULL AFTER `tore_differenz`;"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '123'" + . "\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/components/com_sportsmanager/sportsmanager.php b/src/structure/components/com_sportsmanager/sportsmanager.php index 92eb3de..a787d92 100644 --- a/src/structure/components/com_sportsmanager/sportsmanager.php +++ b/src/structure/components/com_sportsmanager/sportsmanager.php @@ -5598,7 +5598,9 @@ function teamstatistikAktualisieren($geaenderte_veranstaltung_id = 0, $geaendert . "\n (COALESCE((SELECT SUM(heim_spielpunkte) FROM #__sportsmanager_begegnung AS ttb4 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS ttu4 ON ttb4.begegnung_id = ttu4.begegnung_id WHERE ISNULL(ttu4.unbestaetigtes_ergebnis_id) AND ttb4.heim_team_id = t1.team_id AND (ttb4.heim_punkte != 0 OR ttb4.gast_punkte != 0)), 0)) + (COALESCE((SELECT SUM(gast_spielpunkte) FROM #__sportsmanager_begegnung AS ttb5 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS ttu5 ON ttb5.begegnung_id = ttu5.begegnung_id WHERE ISNULL(ttu5.unbestaetigtes_ergebnis_id) AND ttb5.gast_team_id = t1.team_id AND (ttb5.heim_punkte != 0 OR ttb5.gast_punkte != 0)), 0)) AS spielpunkte_gewonnen," . "\n (COALESCE((SELECT SUM(gast_spielpunkte) FROM #__sportsmanager_begegnung AS ttb6 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS ttu6 ON ttb6.begegnung_id = ttu6.begegnung_id WHERE ISNULL(ttu6.unbestaetigtes_ergebnis_id) AND ttb6.heim_team_id = t1.team_id AND (ttb6.heim_punkte != 0 OR ttb6.gast_punkte != 0)), 0)) + (COALESCE((SELECT SUM(heim_spielpunkte) FROM #__sportsmanager_begegnung AS ttb7 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS ttu7 ON ttb7.begegnung_id = ttu7.begegnung_id WHERE ISNULL(ttu7.unbestaetigtes_ergebnis_id) AND ttb7.gast_team_id = t1.team_id AND (ttb7.heim_punkte != 0 OR ttb7.gast_punkte != 0)), 0)) AS spielpunkte_verloren," . "\n (COALESCE((SELECT SUM(heim_punkte) FROM #__sportsmanager_begegnung AS ttb8 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS ttu8 ON ttb8.begegnung_id = ttu8.begegnung_id WHERE ISNULL(ttu8.unbestaetigtes_ergebnis_id) AND ttb8.heim_team_id = t1.team_id AND (ttb8.heim_punkte != 0 OR ttb8.gast_punkte != 0)), 0)) + (COALESCE((SELECT SUM(gast_punkte) FROM #__sportsmanager_begegnung AS ttb9 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS ttu9 ON ttb9.begegnung_id = ttu9.begegnung_id WHERE ISNULL(ttu9.unbestaetigtes_ergebnis_id) AND ttb9.gast_team_id = t1.team_id AND (ttb9.heim_punkte != 0 OR ttb9.gast_punkte != 0)), 0)) AS punkte_gewonnen," - . "\n (COALESCE((SELECT SUM(gast_punkte) FROM #__sportsmanager_begegnung AS ttb10 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS ttu10 ON ttb10.begegnung_id = ttu10.begegnung_id WHERE ISNULL(ttu10.unbestaetigtes_ergebnis_id) AND ttb10.heim_team_id = t1.team_id AND (ttb10.heim_punkte != 0 OR ttb10.gast_punkte != 0)), 0)) + (COALESCE((SELECT SUM(heim_punkte) FROM #__sportsmanager_begegnung AS ttb11 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS ttu11 ON ttb11.begegnung_id = ttu11.begegnung_id WHERE ISNULL(ttu11.unbestaetigtes_ergebnis_id) AND ttb11.gast_team_id = t1.team_id AND (ttb11.heim_punkte != 0 OR ttb11.gast_punkte != 0)), 0)) AS punkte_verloren" + . "\n (COALESCE((SELECT SUM(gast_punkte) FROM #__sportsmanager_begegnung AS ttb10 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS ttu10 ON ttb10.begegnung_id = ttu10.begegnung_id WHERE ISNULL(ttu10.unbestaetigtes_ergebnis_id) AND ttb10.heim_team_id = t1.team_id AND (ttb10.heim_punkte != 0 OR ttb10.gast_punkte != 0)), 0)) + (COALESCE((SELECT SUM(heim_punkte) FROM #__sportsmanager_begegnung AS ttb11 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS ttu11 ON ttb11.begegnung_id = ttu11.begegnung_id WHERE ISNULL(ttu11.unbestaetigtes_ergebnis_id) AND ttb11.gast_team_id = t1.team_id AND (ttb11.heim_punkte != 0 OR ttb11.gast_punkte != 0)), 0)) AS punkte_verloren," + . "\n (SELECT SUM(CASE WHEN ttb12.heim_team_id = t1.team_id THEN ttb12.heim_tore ELSE ttb12.gast_tore END) FROM #__sportsmanager_begegnung AS ttb12 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS ttu12 ON ttb12.begegnung_id = ttu12.begegnung_id WHERE ISNULL(ttu12.unbestaetigtes_ergebnis_id) AND (ttb12.heim_team_id = t1.team_id OR ttb12.gast_team_id = t1.team_id) AND (ttb12.heim_punkte != 0 OR ttb12.gast_punkte != 0)) AS tore_gewonnen," + . "\n (SELECT SUM(CASE WHEN ttb13.heim_team_id = t1.team_id THEN ttb13.gast_tore ELSE ttb13.heim_tore END) FROM #__sportsmanager_begegnung AS ttb13 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS ttu13 ON ttb13.begegnung_id = ttu13.begegnung_id WHERE ISNULL(ttu13.unbestaetigtes_ergebnis_id) AND (ttb13.heim_team_id = t1.team_id OR ttb13.gast_team_id = t1.team_id) AND (ttb13.heim_punkte != 0 OR ttb13.gast_punkte != 0)) AS tore_verloren" . "\n FROM #__sportsmanager_team AS t1 WHERE veranstaltung_id = $veranstaltung->veranstaltung_id)" . "\n AS werte USING (team_id)" . "\n SET #__sportsmanager_team.siege = werte.siege," @@ -5614,6 +5616,10 @@ function teamstatistikAktualisieren($geaenderte_veranstaltung_id = 0, $geaendert . "\n #__sportsmanager_team.spielpunkte_verloren = werte.spielpunkte_verloren," . "\n #__sportsmanager_team.spielpunkte_differenz = werte.spielpunkte_gewonnen - werte.spielpunkte_verloren," . "\n #__sportsmanager_team.spielpunkte_quotient = IF(werte.spielpunkte_verloren = 0, -1, werte.spielpunkte_gewonnen / werte.spielpunkte_verloren)," + . "\n #__sportsmanager_team.tore_gewonnen = werte.tore_gewonnen," + . "\n #__sportsmanager_team.tore_verloren = werte.tore_verloren," + . "\n #__sportsmanager_team.tore_differenz = werte.tore_gewonnen - werte.tore_verloren," + . "\n #__sportsmanager_team.tore_quotient = IF(werte.tore_verloren = 0, -1, werte.tore_gewonnen / werte.tore_verloren)," . "\n #__sportsmanager_team.buchholz1 = 0," . "\n #__sportsmanager_team.buchholz2 = 0" . "\n WHERE veranstaltung_id = $veranstaltung->veranstaltung_id"; @@ -6164,6 +6170,8 @@ function begegnungenAktualisieren($geaendert_veranstaltung_id = 0, $geaendert_mo $total_heim_spielpunkte = 0; $total_gast_spielpunkte = 0; + $total_heim_tore = count($spiele) > 0 ? 0 : null; + $total_gast_tore = $total_heim_tore; foreach ($spiele as $spiel) { $spiel_heim_punkte = $spiel->teamspiel_heim_punkte; @@ -6177,9 +6185,22 @@ function begegnungenAktualisieren($geaendert_veranstaltung_id = 0, $geaendert_mo $total_heim_spielpunkte += $spiel_heim_spielpunkte; $total_gast_spielpunkte += $spiel_gast_spielpunkte; + list($spiel_heim_tore, $spiel_gast_tore) = toreFuerSpiel( + $teamspiel_modus->punktetyp, $teamspiel_modus->satzergebnisse ?? 0, + $spiel_heim_punkte, $spiel_gast_punkte, $spiel->ergebnis_detailliert); + if ($spiel_heim_tore === null || $total_heim_tore === null) { + $total_heim_tore = null; + $total_gast_tore = null; + } else { + $total_heim_tore += $spiel_heim_tore; + $total_gast_tore += $spiel_gast_tore; + } + $query = "UPDATE #__sportsmanager_teamspiel" . "\n SET teamspiel_heim_spielpunkte = '$spiel_heim_spielpunkte'," - . "\n teamspiel_gast_spielpunkte = '$spiel_gast_spielpunkte'" + . "\n teamspiel_gast_spielpunkte = '$spiel_gast_spielpunkte'," + . "\n teamspiel_heim_tore = " . ($spiel_heim_tore === null ? "NULL" : "'$spiel_heim_tore'") . "," + . "\n teamspiel_gast_tore = " . ($spiel_gast_tore === null ? "NULL" : "'$spiel_gast_tore'") . "\n WHERE teamspiel_id = $spiel->teamspiel_id"; $db->setQuery($query); if (!$db->execute()) { @@ -6189,7 +6210,9 @@ function begegnungenAktualisieren($geaendert_veranstaltung_id = 0, $geaendert_mo $query = "UPDATE #__sportsmanager_begegnung" . "\n SET heim_spielpunkte = '$total_heim_spielpunkte'," - . "\n gast_spielpunkte = '$total_gast_spielpunkte'" + . "\n gast_spielpunkte = '$total_gast_spielpunkte'," + . "\n heim_tore = " . ($total_heim_tore === null ? "NULL" : "'$total_heim_tore'") . "," + . "\n gast_tore = " . ($total_gast_tore === null ? "NULL" : "'$total_gast_tore'") . "\n WHERE begegnung_id = $begegnung->begegnung_id"; $db->setQuery($query); if (!$db->execute()) { diff --git a/src/structure/components/com_sportsmanager/tools.php b/src/structure/components/com_sportsmanager/tools.php index 6f78cb3..3d689b2 100644 --- a/src/structure/components/com_sportsmanager/tools.php +++ b/src/structure/components/com_sportsmanager/tools.php @@ -642,6 +642,17 @@ function spielpunkteFuerSpiel($wertung, $heim_punkte, $gast_punkte): array return array(1, 1); } +function toreFuerSpiel($punktetyp, $satzergebnisse, $heim_punkte, $gast_punkte, $ergebnis_detailliert): array +{ + if ($punktetyp == 0) + return array((int)$heim_punkte, (int)$gast_punkte); + if (!empty($satzergebnisse) && !empty($ergebnis_detailliert)) { + $auswertung = runden_detailliert_auswertung($ergebnis_detailliert); + return array($auswertung[4], $auswertung[5]); + } + return array(null, null); +} + // pass two file names // returns TRUE if files are the same, FALSE otherwise function files_identical($fn1, $fn2): bool diff --git a/src/structure/script.php b/src/structure/script.php index 089a1b6..ffc1ba2 100644 --- a/src/structure/script.php +++ b/src/structure/script.php @@ -149,6 +149,8 @@ return new class () implements InstallerScriptInterface . "\n `gast_punkte` smallint(6) DEFAULT NULL," . "\n `heim_spielpunkte` smallint(6) DEFAULT NULL," . "\n `gast_spielpunkte` smallint(6) DEFAULT NULL," + . "\n `heim_tore` smallint(6) DEFAULT NULL," + . "\n `gast_tore` smallint(6) DEFAULT NULL," . "\n `nichtraucherschutz` tinyint(4) DEFAULT '0'," . "\n PRIMARY KEY (`begegnung_id`)," . "\n KEY `heim_team_id` (`heim_team_id`)," @@ -719,6 +721,10 @@ return new class () implements InstallerScriptInterface . "\n `punkte_verloren` smallint(6) DEFAULT NULL," . "\n `punkte_differenz` smallint(6) DEFAULT NULL," . "\n `punkte_quotient` float(8,2) DEFAULT NULL," + . "\n `tore_gewonnen` smallint(6) DEFAULT NULL," + . "\n `tore_verloren` smallint(6) DEFAULT NULL," + . "\n `tore_differenz` smallint(6) DEFAULT NULL," + . "\n `tore_quotient` float(8,2) DEFAULT NULL," . "\n `buchholz1` smallint(6) DEFAULT NULL," . "\n `buchholz2` smallint(6) DEFAULT NULL," . "\n PRIMARY KEY (`team_id`)," @@ -776,6 +782,8 @@ return new class () implements InstallerScriptInterface . "\n `teamspiel_heim_spielpunkte` smallint(6) DEFAULT NULL," . "\n `teamspiel_gast_spielpunkte` smallint(6) DEFAULT NULL," . "\n `ergebnis_detailliert` tinytext DEFAULT NULL," + . "\n `teamspiel_heim_tore` smallint(6) DEFAULT NULL," + . "\n `teamspiel_gast_tore` smallint(6) DEFAULT NULL," . "\n PRIMARY KEY (`teamspiel_id`)," . "\n KEY `begegnung_id` (`begegnung_id`)," . "\n KEY `heim_spieler_1_id` (`heim_spieler_1_id`)," @@ -1307,7 +1315,7 @@ 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 = '122';"; + $query = "INSERT IGNORE #__sportsmanager_einstellungen SET name = 'datenbank_version', wert = '123';"; $db->setQuery( $query ); if (!$db->execute()) { die($db->stderr(true)); }