Remis-Saetze mitfuehren: neue Spalten, an denselben Stellen geschrieben wie die Tore

Meldung von Sven (DTFB-IT): "In der Tabelle sind Saetze falsch." Die
Satz-Spalte der Tabelle summiert teamspiel_*_punkte, und die zaehlen nur
ENTSCHIEDENE Saetze -- unentschiedene Saetze verschwanden spurlos. Aus
"6:4 5:5 2:6 6:3" wurden 2:2 Saetze, das 5:5 fehlte in jeder Summe.

Vorbild ist die Spielerstatistik, die mit saetze_unentschieden genau dieses
Feld schon fuehrt. Neue NULL-bare Spalten, NULL heisst unbekannt (Bestand vor
der Erfassung von Satzergebnissen), nie wird 0 unterstellt:

- teamspiel.teamspiel_saetze_remis: unentschiedene Saetze des Spiels, eine
  Zahl, fuer beide Seiten gleich
- begegnung.saetze_remis: Summe ueber die Spiele; NULL, sobald ein Spiel
  unbekannt ist (gleiche Regel wie bei den Toren)
- team.saetze_remis: Summe ueber die ausgetragenen Begegnungen, in
  teamstatistikAktualisieren mitberechnet

Berechnet wird der Wert in tools.php (saetzeRemisFuerSpiel, analog zu
toreFuerSpiel: nur bei punktetyp 1 mit Satzergebnissen bekannt, sonst NULL)
und an denselben beiden Stellen geschrieben wie die Tore: Speicherschleife
adminSaveBegegnungSpielplan() und begegnungenAktualisieren().

Migration: #306 ist nicht ausgeliefert, Datenbankversion 123 gehoert bereits
zu diesem Zweig -- die neuen Spalten erweitern deshalb den bestehenden
<123-Block in database/update.php (mit eigenen Spalten-Guards, damit eine
Instanz, die den bisherigen 123er-Stand schon traegt, nur das Fehlende
nachzieht) und die CREATEs in script.php.

Anzeige: im Je-Satz-Modus weist die Satz-Spalte der Tabelle die Remis-Saetze
kompakt mit aus ("6:5 (4)"), mit erklaerendem title (neuer Sprachschluessel
COM_SPORTSMANAGER_SETS_DRAWN); die Spaltenzahl waechst nicht. Ausserhalb des
Je-Satz-Modus bleibt team.saetze_remis NULL und die Anzeige unveraendert.
getTabelleSpieltag liefert den Wert je Spieltag ueber ein Subselect, das nur
im Je-Satz-Zweig erzeugt wird; die JSON-Ansicht reicht die Teamobjekte
unveraendert durch und traegt den Wert damit automatisch.
This commit is contained in:
svennickel
2026-09-10 07:26:31 +02:00
parent 7b8fbe6f45
commit ab6b91f2b5
8 changed files with 88 additions and 12 deletions
@@ -11135,6 +11135,7 @@ function adminSaveBegegnungSpielplan(): void
$total_gast_spielpunkte = 0; $total_gast_spielpunkte = 0;
$total_heim_tore = 0; $total_heim_tore = 0;
$total_gast_tore = 0; $total_gast_tore = 0;
$total_saetze_remis = 0;
$spiel_nr = 1; $spiel_nr = 1;
do { do {
$spieltyp = $spieltypen[$spiel_nr - 1] ?? ''; $spieltyp = $spieltypen[$spiel_nr - 1] ?? '';
@@ -11296,10 +11297,19 @@ function adminSaveBegegnungSpielplan(): void
$total_gast_tore += $spiel_gast_tore; $total_gast_tore += $spiel_gast_tore;
} }
$spiel_saetze_remis = saetzeRemisFuerSpiel(
$teamspiel_modus->punktetyp, $teamspiel_modus->satzergebnisse ?? 0,
$spiel_ergebnis_detailliert);
if ($spiel_saetze_remis === null || $total_saetze_remis === null) {
$total_saetze_remis = null;
} else {
$total_saetze_remis += $spiel_saetze_remis;
}
if (!$skip_spiel) { if (!$skip_spiel) {
if (!isset($spiele_nummern[$spiel_nr])) { 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, teamspiel_heim_tore, teamspiel_gast_tore)" $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, teamspiel_saetze_remis)"
. "\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'") . ");"; . "\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'") . ", " . ($spiel_saetze_remis === null ? "NULL" : "'$spiel_saetze_remis'") . ");";
} else { } else {
$teamspiel_id = $spiele_nummern[$spiel_nr]->teamspiel_id; $teamspiel_id = $spiele_nummern[$spiel_nr]->teamspiel_id;
$query = "UPDATE #__sportsmanager_teamspiel" $query = "UPDATE #__sportsmanager_teamspiel"
@@ -11313,7 +11323,8 @@ function adminSaveBegegnungSpielplan(): void
. "\n teamspiel_gast_spielpunkte = '$spiel_gast_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_heim_tore = " . ($spiel_heim_tore === null ? "NULL" : "'$spiel_heim_tore'") . ","
. "\n teamspiel_gast_tore = " . ($spiel_gast_tore === null ? "NULL" : "'$spiel_gast_tore'") . "\n teamspiel_gast_tore = " . ($spiel_gast_tore === null ? "NULL" : "'$spiel_gast_tore'") . ","
. "\n teamspiel_saetze_remis = " . ($spiel_saetze_remis === null ? "NULL" : "'$spiel_saetze_remis'")
. "\n WHERE teamspiel_id = $teamspiel_id"; . "\n WHERE teamspiel_id = $teamspiel_id";
} }
$db->setQuery($query); $db->setQuery($query);
@@ -11340,7 +11351,8 @@ function adminSaveBegegnungSpielplan(): void
. "\n heim_spielpunkte = '$total_heim_spielpunkte'," . "\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 heim_tore = " . ($total_heim_tore === null ? "NULL" : "'$total_heim_tore'") . ","
. "\n gast_tore = " . ($total_gast_tore === null ? "NULL" : "'$total_gast_tore'") . "\n gast_tore = " . ($total_gast_tore === null ? "NULL" : "'$total_gast_tore'") . ","
. "\n saetze_remis = " . ($total_saetze_remis === null ? "NULL" : "'$total_saetze_remis'")
. "\n WHERE begegnung_id = $id"; . "\n WHERE begegnung_id = $id";
} else { } else {
$query = "UPDATE #__sportsmanager_begegnung" $query = "UPDATE #__sportsmanager_begegnung"
@@ -11349,7 +11361,8 @@ function adminSaveBegegnungSpielplan(): void
. "\n heim_spielpunkte = NULL," . "\n heim_spielpunkte = NULL,"
. "\n gast_spielpunkte = NULL," . "\n gast_spielpunkte = NULL,"
. "\n heim_tore = NULL," . "\n heim_tore = NULL,"
. "\n gast_tore = NULL" . "\n gast_tore = NULL,"
. "\n saetze_remis = NULL"
. "\n WHERE begegnung_id = $id"; . "\n WHERE begegnung_id = $id";
} }
$db->setQuery($query); $db->setQuery($query);
@@ -5863,6 +5863,15 @@ function updateDatabase(): void
} }
} }
if (!array_key_exists('teamspiel_saetze_remis', $columns)) {
$query = "ALTER TABLE `#__sportsmanager_teamspiel`"
. "\n ADD `teamspiel_saetze_remis` SMALLINT(6) NULL DEFAULT NULL AFTER `teamspiel_gast_tore`;";
$db->setQuery($query);
if (!$db->execute()) {
die($db->stderr(true));
}
}
$columns = $db->getTableColumns('#__sportsmanager_begegnung'); $columns = $db->getTableColumns('#__sportsmanager_begegnung');
if (!array_key_exists('heim_tore', $columns)) { if (!array_key_exists('heim_tore', $columns)) {
$query = "ALTER TABLE `#__sportsmanager_begegnung`" $query = "ALTER TABLE `#__sportsmanager_begegnung`"
@@ -5874,6 +5883,15 @@ function updateDatabase(): void
} }
} }
if (!array_key_exists('saetze_remis', $columns)) {
$query = "ALTER TABLE `#__sportsmanager_begegnung`"
. "\n ADD `saetze_remis` SMALLINT(6) NULL DEFAULT NULL AFTER `gast_tore`;";
$db->setQuery($query);
if (!$db->execute()) {
die($db->stderr(true));
}
}
$columns = $db->getTableColumns('#__sportsmanager_team'); $columns = $db->getTableColumns('#__sportsmanager_team');
if (!array_key_exists('tore_gewonnen', $columns)) { if (!array_key_exists('tore_gewonnen', $columns)) {
$query = "ALTER TABLE `#__sportsmanager_team`" $query = "ALTER TABLE `#__sportsmanager_team`"
@@ -5887,6 +5905,15 @@ function updateDatabase(): void
} }
} }
if (!array_key_exists('saetze_remis', $columns)) {
$query = "ALTER TABLE `#__sportsmanager_team`"
. "\n ADD `saetze_remis` SMALLINT(6) NULL DEFAULT NULL AFTER `tore_quotient`;";
$db->setQuery($query);
if (!$db->execute()) {
die($db->stderr(true));
}
}
$query = "UPDATE #__sportsmanager_einstellungen" $query = "UPDATE #__sportsmanager_einstellungen"
. "\n SET wert = '123'" . "\n SET wert = '123'"
. "\n WHERE name = 'datenbank_version'"; . "\n WHERE name = 'datenbank_version'";
@@ -2037,7 +2037,8 @@ function getTabelleSpieltag($veranstaltung,$spieltag,$mannschaften = "",$offset_
. "\n (COALESCE((SELECT SUM(heim_spielpunkte) FROM #__sportsmanager_begegnung AS tt1 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS tt2 ON tt1.begegnung_id = tt2.begegnung_id WHERE " . $filter_mannschaften_begegnung . " ISNULL(tt2.unbestaetigtes_ergebnis_id)" . ($spieltag > 0 ? " AND tt1.spieltag <= $spieltag" : "") . " AND tt1.gast_team_id = t1.team_id AND " . $ausgetragen('tt1') . "), 0)) AS spielpunkte_verloren" . "\n (COALESCE((SELECT SUM(heim_spielpunkte) FROM #__sportsmanager_begegnung AS tt1 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS tt2 ON tt1.begegnung_id = tt2.begegnung_id WHERE " . $filter_mannschaften_begegnung . " ISNULL(tt2.unbestaetigtes_ergebnis_id)" . ($spieltag > 0 ? " AND tt1.spieltag <= $spieltag" : "") . " AND tt1.gast_team_id = t1.team_id AND " . $ausgetragen('tt1') . "), 0)) AS spielpunkte_verloren"
. ($je_satz . ($je_satz
? ",\n (SELECT SUM(CASE WHEN tt1.heim_team_id = t1.team_id THEN tt1.heim_tore ELSE tt1.gast_tore END) FROM #__sportsmanager_begegnung AS tt1 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS tt2 ON tt1.begegnung_id = tt2.begegnung_id WHERE " . $filter_mannschaften_begegnung . " ISNULL(tt2.unbestaetigtes_ergebnis_id)" . ($spieltag > 0 ? " AND tt1.spieltag <= $spieltag" : "") . " AND (tt1.heim_team_id = t1.team_id OR tt1.gast_team_id = t1.team_id) AND " . $ausgetragen('tt1') . ") AS tore_gewonnen," ? ",\n (SELECT SUM(CASE WHEN tt1.heim_team_id = t1.team_id THEN tt1.heim_tore ELSE tt1.gast_tore END) FROM #__sportsmanager_begegnung AS tt1 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS tt2 ON tt1.begegnung_id = tt2.begegnung_id WHERE " . $filter_mannschaften_begegnung . " ISNULL(tt2.unbestaetigtes_ergebnis_id)" . ($spieltag > 0 ? " AND tt1.spieltag <= $spieltag" : "") . " AND (tt1.heim_team_id = t1.team_id OR tt1.gast_team_id = t1.team_id) AND " . $ausgetragen('tt1') . ") AS tore_gewonnen,"
. "\n (SELECT SUM(CASE WHEN tt1.heim_team_id = t1.team_id THEN tt1.gast_tore ELSE tt1.heim_tore END) FROM #__sportsmanager_begegnung AS tt1 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS tt2 ON tt1.begegnung_id = tt2.begegnung_id WHERE " . $filter_mannschaften_begegnung . " ISNULL(tt2.unbestaetigtes_ergebnis_id)" . ($spieltag > 0 ? " AND tt1.spieltag <= $spieltag" : "") . " AND (tt1.heim_team_id = t1.team_id OR tt1.gast_team_id = t1.team_id) AND " . $ausgetragen('tt1') . ") AS tore_verloren" . "\n (SELECT SUM(CASE WHEN tt1.heim_team_id = t1.team_id THEN tt1.gast_tore ELSE tt1.heim_tore END) FROM #__sportsmanager_begegnung AS tt1 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS tt2 ON tt1.begegnung_id = tt2.begegnung_id WHERE " . $filter_mannschaften_begegnung . " ISNULL(tt2.unbestaetigtes_ergebnis_id)" . ($spieltag > 0 ? " AND tt1.spieltag <= $spieltag" : "") . " AND (tt1.heim_team_id = t1.team_id OR tt1.gast_team_id = t1.team_id) AND " . $ausgetragen('tt1') . ") AS tore_verloren,"
. "\n (SELECT SUM(tt1.saetze_remis) FROM #__sportsmanager_begegnung AS tt1 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS tt2 ON tt1.begegnung_id = tt2.begegnung_id WHERE " . $filter_mannschaften_begegnung . " ISNULL(tt2.unbestaetigtes_ergebnis_id)" . ($spieltag > 0 ? " AND tt1.spieltag <= $spieltag" : "") . " AND (tt1.heim_team_id = t1.team_id OR tt1.gast_team_id = t1.team_id) AND " . $ausgetragen('tt1') . ") AS saetze_remis"
: "") : "")
. "\n FROM #__sportsmanager_team AS t1" . "\n FROM #__sportsmanager_team AS t1"
. "\n WHERE veranstaltung_id = $veranstaltung->veranstaltung_id)" . "\n WHERE veranstaltung_id = $veranstaltung->veranstaltung_id)"
@@ -5645,7 +5646,8 @@ function teamstatistikAktualisieren($geaenderte_veranstaltung_id = 0, $geaendert
. "\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 " . $ausgetragen('ttb8') . "), 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 " . $ausgetragen('ttb9') . "), 0)) AS punkte_gewonnen," . "\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 " . $ausgetragen('ttb8') . "), 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 " . $ausgetragen('ttb9') . "), 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 " . $ausgetragen('ttb10') . "), 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 " . $ausgetragen('ttb11') . "), 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 " . $ausgetragen('ttb10') . "), 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 " . $ausgetragen('ttb11') . "), 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 " . $ausgetragen('ttb12') . ") AS tore_gewonnen," . "\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 " . $ausgetragen('ttb12') . ") 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 " . $ausgetragen('ttb13') . ") AS tore_verloren" . "\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 " . $ausgetragen('ttb13') . ") AS tore_verloren,"
. "\n (SELECT SUM(ttb14.saetze_remis) FROM #__sportsmanager_begegnung AS ttb14 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS ttu14 ON ttb14.begegnung_id = ttu14.begegnung_id WHERE ISNULL(ttu14.unbestaetigtes_ergebnis_id) AND (ttb14.heim_team_id = t1.team_id OR ttb14.gast_team_id = t1.team_id) AND " . $ausgetragen('ttb14') . ") AS saetze_remis"
. "\n FROM #__sportsmanager_team AS t1 WHERE veranstaltung_id = $veranstaltung->veranstaltung_id)" . "\n FROM #__sportsmanager_team AS t1 WHERE veranstaltung_id = $veranstaltung->veranstaltung_id)"
. "\n AS werte USING (team_id)" . "\n AS werte USING (team_id)"
. "\n SET #__sportsmanager_team.siege = werte.siege," . "\n SET #__sportsmanager_team.siege = werte.siege,"
@@ -5665,6 +5667,7 @@ function teamstatistikAktualisieren($geaenderte_veranstaltung_id = 0, $geaendert
. "\n #__sportsmanager_team.tore_verloren = werte.tore_verloren," . "\n #__sportsmanager_team.tore_verloren = werte.tore_verloren,"
. "\n #__sportsmanager_team.tore_differenz = werte.tore_gewonnen - 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.tore_quotient = IF(werte.tore_verloren = 0, -1, werte.tore_gewonnen / werte.tore_verloren),"
. "\n #__sportsmanager_team.saetze_remis = werte.saetze_remis,"
. "\n #__sportsmanager_team.buchholz1 = 0," . "\n #__sportsmanager_team.buchholz1 = 0,"
. "\n #__sportsmanager_team.buchholz2 = 0" . "\n #__sportsmanager_team.buchholz2 = 0"
. "\n WHERE veranstaltung_id = $veranstaltung->veranstaltung_id"; . "\n WHERE veranstaltung_id = $veranstaltung->veranstaltung_id";
@@ -6223,6 +6226,7 @@ function begegnungenAktualisieren($geaendert_veranstaltung_id = 0, $geaendert_mo
$total_gast_spielpunkte = 0; $total_gast_spielpunkte = 0;
$total_heim_tore = count($spiele) > 0 ? 0 : null; $total_heim_tore = count($spiele) > 0 ? 0 : null;
$total_gast_tore = $total_heim_tore; $total_gast_tore = $total_heim_tore;
$total_saetze_remis = $total_heim_tore;
foreach ($spiele as $spiel) { foreach ($spiele as $spiel) {
$spiel_heim_punkte = $spiel->teamspiel_heim_punkte; $spiel_heim_punkte = $spiel->teamspiel_heim_punkte;
@@ -6247,11 +6251,21 @@ function begegnungenAktualisieren($geaendert_veranstaltung_id = 0, $geaendert_mo
$total_gast_tore += $spiel_gast_tore; $total_gast_tore += $spiel_gast_tore;
} }
$spiel_saetze_remis = saetzeRemisFuerSpiel(
$teamspiel_modus->punktetyp, $teamspiel_modus->satzergebnisse ?? 0,
$spiel->ergebnis_detailliert);
if ($spiel_saetze_remis === null || $total_saetze_remis === null) {
$total_saetze_remis = null;
} else {
$total_saetze_remis += $spiel_saetze_remis;
}
$query = "UPDATE #__sportsmanager_teamspiel" $query = "UPDATE #__sportsmanager_teamspiel"
. "\n SET teamspiel_heim_spielpunkte = '$spiel_heim_spielpunkte'," . "\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_heim_tore = " . ($spiel_heim_tore === null ? "NULL" : "'$spiel_heim_tore'") . ","
. "\n teamspiel_gast_tore = " . ($spiel_gast_tore === null ? "NULL" : "'$spiel_gast_tore'") . "\n teamspiel_gast_tore = " . ($spiel_gast_tore === null ? "NULL" : "'$spiel_gast_tore'") . ","
. "\n teamspiel_saetze_remis = " . ($spiel_saetze_remis === null ? "NULL" : "'$spiel_saetze_remis'")
. "\n WHERE teamspiel_id = $spiel->teamspiel_id"; . "\n WHERE teamspiel_id = $spiel->teamspiel_id";
$db->setQuery($query); $db->setQuery($query);
if (!$db->execute()) { if (!$db->execute()) {
@@ -6263,7 +6277,8 @@ function begegnungenAktualisieren($geaendert_veranstaltung_id = 0, $geaendert_mo
. "\n SET heim_spielpunkte = '$total_heim_spielpunkte'," . "\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 heim_tore = " . ($total_heim_tore === null ? "NULL" : "'$total_heim_tore'") . ","
. "\n gast_tore = " . ($total_gast_tore === null ? "NULL" : "'$total_gast_tore'") . "\n gast_tore = " . ($total_gast_tore === null ? "NULL" : "'$total_gast_tore'") . ","
. "\n saetze_remis = " . ($total_saetze_remis === null ? "NULL" : "'$total_saetze_remis'")
. "\n WHERE begegnung_id = $begegnung->begegnung_id"; . "\n WHERE begegnung_id = $begegnung->begegnung_id";
$db->setQuery($query); $db->setQuery($query);
if (!$db->execute()) { if (!$db->execute()) {
@@ -663,6 +663,14 @@ function toreFuerSpiel($punktetyp, $satzergebnisse, $heim_punkte, $gast_punkte,
return array(null, null); return array(null, null);
} }
function saetzeRemisFuerSpiel($punktetyp, $satzergebnisse, $ergebnis_detailliert): ?int
{
if ($punktetyp == 0 || empty($satzergebnisse) || empty($ergebnis_detailliert))
return null;
$auswertung = runden_detailliert_auswertung($ergebnis_detailliert);
return $auswertung[2];
}
// pass two file names // pass two file names
// returns TRUE if files are the same, FALSE otherwise // returns TRUE if files are the same, FALSE otherwise
function files_identical($fn1, $fn2): bool function files_identical($fn1, $fn2): bool
@@ -1956,15 +1956,23 @@ static function tabelleAnzeigen($veranstaltung, $modus, $teams, $spieltag, $spie
<?php <?php
} }
if ($veranstaltung->tabellenwertung != 3 && $veranstaltung->tabellenwertung != 6 && $veranstaltung->tabellenwertung != 9 && $veranstaltung->tabellenwertung != 23 && $veranstaltung->tabellenwertung != 26 && $veranstaltung->tabellenwertung != 29) { if ($veranstaltung->tabellenwertung != 3 && $veranstaltung->tabellenwertung != 6 && $veranstaltung->tabellenwertung != 9 && $veranstaltung->tabellenwertung != 23 && $veranstaltung->tabellenwertung != 26 && $veranstaltung->tabellenwertung != 29) {
$saetze_remis = $je_satz && ($team->saetze_remis ?? null) !== null && $team->saetze_remis > 0
? (int)$team->saetze_remis : null;
$saetze_remis_hinweis = $saetze_remis !== null
? sprintf(Text::_('COM_SPORTSMANAGER_SETS_DRAWN'), $saetze_remis) : "";
$title = ""; $title = "";
if ($alleine_angezeigt && $praesentation == 0) { if ($alleine_angezeigt && $praesentation == 0) {
?> ?>
<td nowrap style="text-align: center"> <td nowrap style="text-align: center"<?php if ($saetze_remis !== null) echo " title=\"" . $saetze_remis_hinweis . "\""; ?>>
<small><?php echo $punkte_gewonnen . ":" . $punkte_verloren; ?></small> <small><?php echo $punkte_gewonnen . ":" . $punkte_verloren;
if ($saetze_remis !== null) echo " (" . $saetze_remis . ")"; ?></small>
</td> </td>
<?php <?php
} else } else {
$title = $punkte_gewonnen . " : " . $punkte_verloren; $title = $punkte_gewonnen . " : " . $punkte_verloren;
if ($saetze_remis !== null)
$title .= " (" . $saetze_remis . ") &ndash; " . $saetze_remis_hinweis;
}
?> ?>
<td nowrap <td nowrap
style="text-align: center"<?php if (!empty($title)) echo " title=\"" . $title . "\""; ?>> style="text-align: center"<?php if (!empty($title)) echo " title=\"" . $title . "\""; ?>>
@@ -159,6 +159,7 @@ COM_SPORTSMANAGER_DEFEATS_SHORTCUT="N"
COM_SPORTSMANAGER_GOALS="Tore" COM_SPORTSMANAGER_GOALS="Tore"
COM_SPORTSMANAGER_GOALS_SHORTCUT="T" COM_SPORTSMANAGER_GOALS_SHORTCUT="T"
COM_SPORTSMANAGER_SETS="Sätze" COM_SPORTSMANAGER_SETS="Sätze"
COM_SPORTSMANAGER_SETS_DRAWN="Unentschiedene Sätze: %d"
COM_SPORTSMANAGER_POINT="Punkt" COM_SPORTSMANAGER_POINT="Punkt"
COM_SPORTSMANAGER_POINTS="Punkte" COM_SPORTSMANAGER_POINTS="Punkte"
COM_SPORTSMANAGER_SETS_SHORTCUT="S" COM_SPORTSMANAGER_SETS_SHORTCUT="S"
@@ -159,6 +159,7 @@ COM_SPORTSMANAGER_DEFEATS_SHORTCUT="F"
COM_SPORTSMANAGER_GOALS="Goals" COM_SPORTSMANAGER_GOALS="Goals"
COM_SPORTSMANAGER_GOALS_SHORTCUT="G" COM_SPORTSMANAGER_GOALS_SHORTCUT="G"
COM_SPORTSMANAGER_SETS="Sets" COM_SPORTSMANAGER_SETS="Sets"
COM_SPORTSMANAGER_SETS_DRAWN="Drawn sets: %d"
COM_SPORTSMANAGER_POINT="Point" COM_SPORTSMANAGER_POINT="Point"
COM_SPORTSMANAGER_POINTS="Points" COM_SPORTSMANAGER_POINTS="Points"
COM_SPORTSMANAGER_SETS_SHORTCUT="S" COM_SPORTSMANAGER_SETS_SHORTCUT="S"
+3
View File
@@ -151,6 +151,7 @@ return new class () implements InstallerScriptInterface
. "\n `gast_spielpunkte` smallint(6) DEFAULT NULL," . "\n `gast_spielpunkte` smallint(6) DEFAULT NULL,"
. "\n `heim_tore` smallint(6) DEFAULT NULL," . "\n `heim_tore` smallint(6) DEFAULT NULL,"
. "\n `gast_tore` smallint(6) DEFAULT NULL," . "\n `gast_tore` smallint(6) DEFAULT NULL,"
. "\n `saetze_remis` smallint(6) DEFAULT NULL,"
. "\n `nichtraucherschutz` tinyint(4) DEFAULT '0'," . "\n `nichtraucherschutz` tinyint(4) DEFAULT '0',"
. "\n PRIMARY KEY (`begegnung_id`)," . "\n PRIMARY KEY (`begegnung_id`),"
. "\n KEY `heim_team_id` (`heim_team_id`)," . "\n KEY `heim_team_id` (`heim_team_id`),"
@@ -725,6 +726,7 @@ return new class () implements InstallerScriptInterface
. "\n `tore_verloren` smallint(6) DEFAULT NULL," . "\n `tore_verloren` smallint(6) DEFAULT NULL,"
. "\n `tore_differenz` smallint(6) DEFAULT NULL," . "\n `tore_differenz` smallint(6) DEFAULT NULL,"
. "\n `tore_quotient` float(8,2) DEFAULT NULL," . "\n `tore_quotient` float(8,2) DEFAULT NULL,"
. "\n `saetze_remis` smallint(6) DEFAULT NULL,"
. "\n `buchholz1` smallint(6) DEFAULT NULL," . "\n `buchholz1` smallint(6) DEFAULT NULL,"
. "\n `buchholz2` smallint(6) DEFAULT NULL," . "\n `buchholz2` smallint(6) DEFAULT NULL,"
. "\n PRIMARY KEY (`team_id`)," . "\n PRIMARY KEY (`team_id`),"
@@ -784,6 +786,7 @@ return new class () implements InstallerScriptInterface
. "\n `ergebnis_detailliert` tinytext DEFAULT NULL," . "\n `ergebnis_detailliert` tinytext DEFAULT NULL,"
. "\n `teamspiel_heim_tore` smallint(6) DEFAULT NULL," . "\n `teamspiel_heim_tore` smallint(6) DEFAULT NULL,"
. "\n `teamspiel_gast_tore` smallint(6) DEFAULT NULL," . "\n `teamspiel_gast_tore` smallint(6) DEFAULT NULL,"
. "\n `teamspiel_saetze_remis` smallint(6) DEFAULT NULL,"
. "\n PRIMARY KEY (`teamspiel_id`)," . "\n PRIMARY KEY (`teamspiel_id`),"
. "\n KEY `begegnung_id` (`begegnung_id`)," . "\n KEY `begegnung_id` (`begegnung_id`),"
. "\n KEY `heim_spieler_1_id` (`heim_spieler_1_id`)," . "\n KEY `heim_spieler_1_id` (`heim_spieler_1_id`),"