From 49ce07990013b5a53734817b78cb8f7f2c5ac3fc Mon Sep 17 00:00:00 2001 From: svennickel Date: Wed, 9 Sep 2026 19:21:15 +0200 Subject: [PATCH] Tabellensortierung im Je-Satz-Modus: Begegnungspunkte, Spielpunkte, TORE MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Im Je-Satz-Modus ist die Satzdifferenz nach der Spielpunkte-Differenz vollstaendig redundant (Spielpunkte-Differenz = 2 x Satzdifferenz) — die naechste Stufe, die wirklich trennt, sind die Tore (#306-Konzept, Abschnitt 0 und 3). Die Sortierung haengt am MODUS, nicht an neuen tabellenwertung- Werten: so wirkt die Tore-Stufe automatisch in Differenz-, Quotienten-, Buchholz- und Direktvergleichs-Varianten, ohne die Auswahlliste zu verdoppeln. getTabelleSpieltag(), teamstatistikAktualisieren() und getTabelleDirekterVergleich() ermitteln die Wertung des Modus jeweils per eigenem kleinen SELECT und schieben bei Wertung 4 die Stufe tore_differenz DESC (bzw. tore_quotient) ZWISCHEN Spielpunkte und Punkte; die Satz-Stufe bleibt als letzter Tie-Break dahinter — sie schadet nie, und solange Tore noch NULL sind, ordnet die Tabelle exakt wie bisher. Die Summen entstehen als SUM ueber CASE je Begegnung ohne COALESCE: NULL traegt nichts bei, unbekannt wird niemals 0:0. Die Platzvergabe (geteilte Plaetze) beachtet die Tore an beiden Stellen (teamstatistik und HTML-Tabelle) mit — ohne das teilten sich zwei nur durch Tore getrennte Teams Platz 1, gemessen am Zwischenstand dieses Schrittes. Die HTML-Tabelle zeigt die neue Stufe: im Je-Satz-Modus steht zwischen der Saetze- und der Spiele-Spalte eine Tore-Spalte (Differenz bzw. Quotient, absolut als Tooltip/Beiwert, "-" wo Tore unbekannt sind). Die JSON-Ansicht bekommt die tore_*-Felder additiv ueber die ohnehin rohen Team-Zeilen. Fuer alle anderen Modi entsteht BYTEIDENTISCHES SQL — nicht behauptet, sondern geloggt: beide Fassungen im Testserver mit einem Query-Log instrumentiert, 18 getTabelleSpieltag-Aufrufe (9 Ligen x 2 Spieltage) und 19 teamstatistik-Laeufe verglichen. Saemtliche Unterschiede betreffen ausschliesslich die Je-Satz-Liga (2 Zusatzspalten, 2 Subselects, eine ORDER-Stufe); jede Query einer Nicht-4-Liga ist Byte fuer Byte gleich. Dazu dieselbe Messlatte wie bisher: 11 Modi + 11 Begegnungen unveraendert gespeichert, Datenbank-Dump (778 Zeilen): 0 Unterschiede; Frontend-Dump (9 Ligen x 3 Ansichten + 8 Statistiken): jede Abweichung ist eine HINZUGEKOMMENE Zeile der Tore-Spalte der Je-Satz-Liga, keine einzige bestehende Zeile geaendert oder entfernt. Und der Fall, fuer den die Stufe da ist, ist konstruiert und gemessen (Prueflige H): eine Remis-Begegnung, beide Teams mit Begegnungspunkten 1, Spielpunkte-Differenz 0 und Satz-Differenz 0, aber Toren 35:34 gegen 34:35. Alte Kette: beide Platz 1, alphabetisch sortiert (Adler vor Zebras). Neue Kette: Zebras (+1 Tore) Platz 1, Adler (-1) Platz 2 — in team.platz wie in der angezeigten Tabelle. --- .../com_sportsmanager/sportsmanager.php | 80 ++++++++++++++----- .../views/sportsmanager/view.html.php | 50 ++++++++++++ 2 files changed, 112 insertions(+), 18 deletions(-) diff --git a/src/structure/components/com_sportsmanager/sportsmanager.php b/src/structure/components/com_sportsmanager/sportsmanager.php index 2b9e1e3..ac2ac95 100644 --- a/src/structure/components/com_sportsmanager/sportsmanager.php +++ b/src/structure/components/com_sportsmanager/sportsmanager.php @@ -1848,12 +1848,22 @@ function tabelle($veranstaltung, $spieltag, $alleine_angezeigt, $praesentation = function getTabelleDirekterVergleich($teams,$veranstaltung,$spieltag) { + $db = getDatabase(); + $query = "SELECT spielpunkte_wertung_einzel, spielpunkte_wertung_doppel" + . "\n FROM #__sportsmanager_teamspiel_modus" + . "\n WHERE teamspiel_modus_id = " . (int)($veranstaltung->modus_id ?? 0); + $wertungen = loadObjectList($db, $query); + $je_satz = count($wertungen) > 0 + && ($wertungen[0]->spielpunkte_wertung_einzel == 4 || $wertungen[0]->spielpunkte_wertung_doppel == 4); + $gesamtpunkte = 1000; $anzahl_spiele = 1000; $punkte_differenz = 1000; $punkte_quotient = 1000.0000; $spielpunkte_differenz = 1000; $spielpunkte_quotient = 1000.0000; + $tore_differenz = 1000; + $tore_quotient = 1000.0000; $platz = 0; $punktgleicheMannschaften = []; @@ -1874,6 +1884,10 @@ function getTabelleDirekterVergleich($teams,$veranstaltung,$spieltag) $unterschied = true; if ($veranstaltung->direktervergleich == 3 && in_array($veranstaltung->tabellenwertung, [2,5,8,11]) && $punkte_quotient != $team->punkte_quotient) $unterschied = true; + if ($je_satz && $veranstaltung->direktervergleich == 3 && in_array($veranstaltung->tabellenwertung, [1,4,7,10]) && $tore_differenz != ($team->tore_differenz ?? null)) + $unterschied = true; + if ($je_satz && $veranstaltung->direktervergleich == 3 && in_array($veranstaltung->tabellenwertung, [2,5,8,11]) && $tore_quotient != ($team->tore_quotient ?? null)) + $unterschied = true; if ($unterschied) { @@ -1883,6 +1897,8 @@ function getTabelleDirekterVergleich($teams,$veranstaltung,$spieltag) $punkte_quotient = $team->punkte_quotient; $spielpunkte_differenz = $team->spielpunkte_differenz; $spielpunkte_quotient = $team->spielpunkte_quotient; + $tore_differenz = $team->tore_differenz ?? null; + $tore_quotient = $team->tore_quotient ?? null; $platz = $team->platz; $punktgleicheMannschaften[$platz] = $team->team_id; } @@ -1900,30 +1916,30 @@ function getTabelleDirekterVergleich($teams,$veranstaltung,$spieltag) if ($veranstaltung->tabellenwertung == 1 || $veranstaltung->tabellenwertung == 4 || $veranstaltung->tabellenwertung == 7){ usort($teamsKorrektur, fn($a, $b) => - [(float)$b->begegnungspunkte, (int)$a->anzahl_spiele, (float)$b->spielpunkte_differenz, (float)$b->punkte_differenz, (int)$a->platz_alt] + [(float)$b->begegnungspunkte, (int)$a->anzahl_spiele, (float)$b->spielpunkte_differenz, $je_satz ? (float)($b->tore_differenz ?? -INF) : 0.0, (float)$b->punkte_differenz, (int)$a->platz_alt] <=> - [(float)$a->begegnungspunkte, (int)$b->anzahl_spiele, (float)$a->spielpunkte_differenz, (float)$a->punkte_differenz, (int)$b->platz_alt] + [(float)$a->begegnungspunkte, (int)$b->anzahl_spiele, (float)$a->spielpunkte_differenz, $je_satz ? (float)($a->tore_differenz ?? -INF) : 0.0, (float)$a->punkte_differenz, (int)$b->platz_alt] ); } else if ($veranstaltung->tabellenwertung == 2 || $veranstaltung->tabellenwertung == 5 || $veranstaltung->tabellenwertung == 8){ usort($teamsKorrektur, fn($a, $b) => - [(float)$b->begegnungspunkte, (int)$a->anzahl_spiele, (float)$b->spielpunkte_quotient, (float)$b->punkte_quotient, (int)$a->platz_alt] + [(float)$b->begegnungspunkte, (int)$a->anzahl_spiele, (float)$b->spielpunkte_quotient, $je_satz ? (float)($b->tore_quotient ?? -INF) : 0.0, (float)$b->punkte_quotient, (int)$a->platz_alt] <=> - [(float)$a->begegnungspunkte, (int)$b->anzahl_spiele, (float)$a->spielpunkte_quotient, (float)$a->punkte_quotient, (int)$b->platz_alt] + [(float)$a->begegnungspunkte, (int)$b->anzahl_spiele, (float)$a->spielpunkte_quotient, $je_satz ? (float)($a->tore_quotient ?? -INF) : 0.0, (float)$a->punkte_quotient, (int)$b->platz_alt] ); } else if ($veranstaltung->tabellenwertung == 10){ usort($teamsKorrektur, fn($a, $b) => - [(float)$b->spielpunkte_differenz, (float)$b->punkte_differenz, (int)$a->platz_alt] + [(float)$b->spielpunkte_differenz, $je_satz ? (float)($b->tore_differenz ?? -INF) : 0.0, (float)$b->punkte_differenz, (int)$a->platz_alt] <=> - [(float)$a->spielpunkte_differenz, (float)$a->punkte_differenz, (int)$b->platz_alt] + [(float)$a->spielpunkte_differenz, $je_satz ? (float)($a->tore_differenz ?? -INF) : 0.0, (float)$a->punkte_differenz, (int)$b->platz_alt] ); } else if ($veranstaltung->tabellenwertung == 11){ usort($teamsKorrektur, fn($a, $b) => - [(float)$b->spielpunkte_quotient, (float)$b->punkte_quotient, (int)$a->platz_alt] + [(float)$b->spielpunkte_quotient, $je_satz ? (float)($b->tore_quotient ?? -INF) : 0.0, (float)$b->punkte_quotient, (int)$a->platz_alt] <=> - [(float)$a->spielpunkte_quotient, (float)$a->punkte_quotient, (int)$b->platz_alt] + [(float)$a->spielpunkte_quotient, $je_satz ? (float)($a->tore_quotient ?? -INF) : 0.0, (float)$a->punkte_quotient, (int)$b->platz_alt] ); } else { @@ -1981,6 +1997,13 @@ function getTabelleSpieltag($veranstaltung,$spieltag,$mannschaften = "",$offset_ $filter_mannschaften_begegnung = ""; $filter_mannschaften_teams = ""; } + $query = "SELECT spielpunkte_wertung_einzel, spielpunkte_wertung_doppel" + . "\n FROM #__sportsmanager_teamspiel_modus" + . "\n WHERE teamspiel_modus_id = " . (int)($veranstaltung->modus_id ?? 0); + $wertungen = loadObjectList($db, $query); + $je_satz = count($wertungen) > 0 + && ($wertungen[0]->spielpunkte_wertung_einzel == 4 || $wertungen[0]->spielpunkte_wertung_doppel == 4); + $query = "SELECT verein_id, teamname, zusatzpunkte," . "\n werte.*," . "\n werte.siege * " . ($veranstaltung->tabellenwertung <= 3 ? "2" : ($veranstaltung->tabellenwertung <= 6 ? "3" : "1")) . ($veranstaltung->tabellenwertung <= 6 ? " + werte.unentschieden" : "") . " + COALESCE(zusatzpunkte, 0) AS gesamtpunkte," @@ -1989,6 +2012,10 @@ function getTabelleSpieltag($veranstaltung,$spieltag,$mannschaften = "",$offset_ . "\n IF(werte.punkte_verloren = 0, -1, werte.punkte_gewonnen / werte.punkte_verloren) AS punkte_quotient," . "\n werte.spielpunkte_gewonnen - werte.spielpunkte_verloren AS spielpunkte_differenz," . "\n IF(werte.spielpunkte_verloren = 0, -1, werte.spielpunkte_gewonnen / werte.spielpunkte_verloren) AS spielpunkte_quotient, " + . ($je_satz + ? "\n werte.tore_gewonnen - werte.tore_verloren AS tore_differenz," + . "\n IF(werte.tore_verloren = 0, -1, werte.tore_gewonnen / werte.tore_verloren) AS tore_quotient, " + : "") . "\n werte.siege + werte.unentschieden + werte.niederlagen AS anzahl_spiele" . "\n FROM #__sportsmanager_team" . "\n LEFT JOIN" @@ -2004,18 +2031,22 @@ function getTabelleSpieltag($veranstaltung,$spieltag,$mannschaften = "",$offset_ . "\n (COALESCE((SELECT SUM(gast_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 (tt1.heim_punkte != 0 OR tt1.gast_punkte != 0)), 0)) AS spielpunkte_gewonnen," . "\n (COALESCE((SELECT SUM(gast_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.heim_team_id = t1.team_id AND (tt1.heim_punkte != 0 OR tt1.gast_punkte != 0)), 0)) + " . "\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 (tt1.heim_punkte != 0 OR tt1.gast_punkte != 0)), 0)) AS spielpunkte_verloren" + . ($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 (tt1.heim_punkte != 0 OR tt1.gast_punkte != 0)) 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 (tt1.heim_punkte != 0 OR tt1.gast_punkte != 0)) AS tore_verloren" + : "") . "\n FROM #__sportsmanager_team AS t1" . "\n WHERE veranstaltung_id = $veranstaltung->veranstaltung_id)" . "\n AS werte USING (team_id)" . "\n WHERE veranstaltung_id = $veranstaltung->veranstaltung_id " . $filter_mannschaften_teams; if ($veranstaltung->tabellenwertung == 1 || $veranstaltung->tabellenwertung == 4 || $veranstaltung->tabellenwertung == 7) - $query .= "\n ORDER BY gesamtpunkte DESC, anzahl_spiele ASC, spielpunkte_differenz DESC, punkte_differenz DESC, teamname"; + $query .= "\n ORDER BY gesamtpunkte DESC, anzahl_spiele ASC, spielpunkte_differenz DESC, " . ($je_satz ? "tore_differenz DESC, " : "") . "punkte_differenz DESC, teamname"; else if ($veranstaltung->tabellenwertung == 2 || $veranstaltung->tabellenwertung == 5 || $veranstaltung->tabellenwertung == 8) - $query .= "\n ORDER BY gesamtpunkte DESC, anzahl_spiele ASC, spielpunkte_quotient DESC, punkte_quotient DESC, teamname"; + $query .= "\n ORDER BY gesamtpunkte DESC, anzahl_spiele ASC, spielpunkte_quotient DESC, " . ($je_satz ? "tore_quotient DESC, " : "") . "punkte_quotient DESC, teamname"; else if ($veranstaltung->tabellenwertung == 10) - $query .= "\n ORDER BY spielpunkte_differenz DESC, punkte_differenz DESC, teamname"; + $query .= "\n ORDER BY spielpunkte_differenz DESC, " . ($je_satz ? "tore_differenz DESC, " : "") . "punkte_differenz DESC, teamname"; else if ($veranstaltung->tabellenwertung == 11) - $query .= "\n ORDER BY spielpunkte_quotient DESC, punkte_quotient DESC, teamname"; + $query .= "\n ORDER BY spielpunkte_quotient DESC, " . ($je_satz ? "tore_quotient DESC, " : "") . "punkte_quotient DESC, teamname"; else $query .= "\n ORDER BY gesamtpunkte DESC, anzahl_spiele ASC, teamname"; @@ -5589,6 +5620,13 @@ function teamstatistikAktualisieren($geaenderte_veranstaltung_id = 0, $geaendert foreach ($veranstaltungen as $veranstaltung) { if ($veranstaltung->tabellenwertung > 0) { + $query = "SELECT spielpunkte_wertung_einzel, spielpunkte_wertung_doppel" + . "\n FROM #__sportsmanager_teamspiel_modus" + . "\n WHERE teamspiel_modus_id = " . (int)($veranstaltung->modus_id ?? 0); + $wertungen = loadObjectList($db, $query); + $je_satz = count($wertungen) > 0 + && ($wertungen[0]->spielpunkte_wertung_einzel == 4 || $wertungen[0]->spielpunkte_wertung_doppel == 4); + $query = "UPDATE #__sportsmanager_team" . "\n LEFT JOIN" . "\n (SELECT t1.team_id," @@ -5676,17 +5714,17 @@ function teamstatistikAktualisieren($geaenderte_veranstaltung_id = 0, $geaendert $query = "SELECT *, siege + unentschieden + niederlagen AS anzahl_spiele FROM #__sportsmanager_team" . "\n WHERE veranstaltung_id = $veranstaltung->veranstaltung_id"; if ($veranstaltung->tabellenwertung == 1 || $veranstaltung->tabellenwertung == 4 || $veranstaltung->tabellenwertung == 7) - $query .= "\n ORDER BY gesamtpunkte DESC, anzahl_spiele ASC, spielpunkte_differenz DESC, punkte_differenz DESC, teamname"; + $query .= "\n ORDER BY gesamtpunkte DESC, anzahl_spiele ASC, spielpunkte_differenz DESC, " . ($je_satz ? "tore_differenz DESC, " : "") . "punkte_differenz DESC, teamname"; else if ($veranstaltung->tabellenwertung == 2 || $veranstaltung->tabellenwertung == 5 || $veranstaltung->tabellenwertung == 8) - $query .= "\n ORDER BY gesamtpunkte DESC, anzahl_spiele ASC, spielpunkte_quotient DESC, punkte_quotient DESC, teamname"; + $query .= "\n ORDER BY gesamtpunkte DESC, anzahl_spiele ASC, spielpunkte_quotient DESC, " . ($je_satz ? "tore_quotient DESC, " : "") . "punkte_quotient DESC, teamname"; else if ($veranstaltung->tabellenwertung == 21 || $veranstaltung->tabellenwertung == 24 || $veranstaltung->tabellenwertung == 27) - $query .= "\n ORDER BY gesamtpunkte DESC, buchholz1 DESC, buchholz2 DESC, spielpunkte_differenz DESC, punkte_differenz DESC, teamname"; + $query .= "\n ORDER BY gesamtpunkte DESC, buchholz1 DESC, buchholz2 DESC, spielpunkte_differenz DESC, " . ($je_satz ? "tore_differenz DESC, " : "") . "punkte_differenz DESC, teamname"; else if ($veranstaltung->tabellenwertung == 22 || $veranstaltung->tabellenwertung == 25 || $veranstaltung->tabellenwertung == 28) - $query .= "\n ORDER BY gesamtpunkte DESC, buchholz1 DESC, buchholz2 DESC, spielpunkte_quotient DESC, punkte_quotient DESC, teamname"; + $query .= "\n ORDER BY gesamtpunkte DESC, buchholz1 DESC, buchholz2 DESC, spielpunkte_quotient DESC, " . ($je_satz ? "tore_quotient DESC, " : "") . "punkte_quotient DESC, teamname"; else if ($veranstaltung->tabellenwertung == 10) - $query .= "\n ORDER BY spielpunkte_differenz DESC, punkte_differenz DESC, teamname"; + $query .= "\n ORDER BY spielpunkte_differenz DESC, " . ($je_satz ? "tore_differenz DESC, " : "") . "punkte_differenz DESC, teamname"; else if ($veranstaltung->tabellenwertung == 11) - $query .= "\n ORDER BY spielpunkte_quotient DESC, punkte_quotient DESC, teamname"; + $query .= "\n ORDER BY spielpunkte_quotient DESC, " . ($je_satz ? "tore_quotient DESC, " : "") . "punkte_quotient DESC, teamname"; else if ($veranstaltung->tabellenwertung == 23 || $veranstaltung->tabellenwertung == 26 || $veranstaltung->tabellenwertung == 29) $query .= "\n ORDER BY gesamtpunkte DESC, buchholz1 DESC, buchholz2 DESC, teamname"; else // ($veranstaltung->tabellenwertung == 3, 6, 9) @@ -5730,12 +5768,16 @@ function teamstatistikAktualisieren($geaenderte_veranstaltung_id = 0, $geaendert $spielpunkte_quotient = 0; $punkte_differenz = 0; $punkte_quotient = 0; + $tore_differenz = 0; + $tore_quotient = 0; $buchholz1_wert = 0; $buchholz2_wert = 0; foreach ($teams as $team) { if ($platz == 1 || (($veranstaltung->tabellenwertung <= 9 || $veranstaltung->tabellenwertung >= 21) && $gesamtpunkte != $team->gesamtpunkte) || (($veranstaltung->tabellenwertung == 1 || $veranstaltung->tabellenwertung == 4 || $veranstaltung->tabellenwertung == 7 || $veranstaltung->tabellenwertung == 10 || $veranstaltung->tabellenwertung == 21 || $veranstaltung->tabellenwertung == 24 || $veranstaltung->tabellenwertung == 27) && ($spielpunkte_differenz != $team->spielpunkte_differenz || $punkte_differenz != $team->punkte_differenz)) || (($veranstaltung->tabellenwertung == 2 || $veranstaltung->tabellenwertung == 5 || $veranstaltung->tabellenwertung == 8 || $veranstaltung->tabellenwertung == 11 || $veranstaltung->tabellenwertung == 22 || $veranstaltung->tabellenwertung == 25 || $veranstaltung->tabellenwertung == 28) && ($spielpunkte_quotient != $team->spielpunkte_quotient || $punkte_quotient != $team->punkte_quotient)) + || ($je_satz && ($veranstaltung->tabellenwertung == 1 || $veranstaltung->tabellenwertung == 4 || $veranstaltung->tabellenwertung == 7 || $veranstaltung->tabellenwertung == 10 || $veranstaltung->tabellenwertung == 21 || $veranstaltung->tabellenwertung == 24 || $veranstaltung->tabellenwertung == 27) && $tore_differenz !== ($team->tore_differenz ?? null)) + || ($je_satz && ($veranstaltung->tabellenwertung == 2 || $veranstaltung->tabellenwertung == 5 || $veranstaltung->tabellenwertung == 8 || $veranstaltung->tabellenwertung == 11 || $veranstaltung->tabellenwertung == 22 || $veranstaltung->tabellenwertung == 25 || $veranstaltung->tabellenwertung == 28) && $tore_quotient !== ($team->tore_quotient ?? null)) || (($veranstaltung->tabellenwertung >= 21) && ($team->buchholz1 != $buchholz1_wert || $team->buchholz2 != $buchholz2_wert))) $tatsaechlicher_platz = $platz; $query = "UPDATE #__sportsmanager_team" @@ -5750,6 +5792,8 @@ function teamstatistikAktualisieren($geaenderte_veranstaltung_id = 0, $geaendert $punkte_differenz = $team->punkte_differenz; $spielpunkte_quotient = $team->spielpunkte_quotient; $spielpunkte_differenz = $team->spielpunkte_differenz; + $tore_differenz = $team->tore_differenz ?? null; + $tore_quotient = $team->tore_quotient ?? null; $buchholz1_wert = $team->buchholz1; $buchholz2_wert = $team->buchholz2; $platz++; diff --git a/src/structure/components/com_sportsmanager/views/sportsmanager/view.html.php b/src/structure/components/com_sportsmanager/views/sportsmanager/view.html.php index cda00a2..bf63b26 100644 --- a/src/structure/components/com_sportsmanager/views/sportsmanager/view.html.php +++ b/src/structure/components/com_sportsmanager/views/sportsmanager/view.html.php @@ -1708,6 +1708,7 @@ if (count($spiele) > 0) { static function tabelleAnzeigen($veranstaltung, $modus, $teams, $spieltag, $spieltage, $alleine_angezeigt, int $praesentation = 0): void { global $params; + $je_satz = !empty($modus) && ($modus->spielpunkte_wertung_einzel == 4 || $modus->spielpunkte_wertung_doppel == 4); if (count($teams) > 0) { if ($alleine_angezeigt && $veranstaltung->tabellenwertung >= -1 && $veranstaltung->tabellenwertung <= 11 && count($spieltage) > 1) { ?> @@ -1812,6 +1813,22 @@ static function tabelleAnzeigen($veranstaltung, $modus, $teams, $spieltag, $spie tabellenwertung != 3 && $veranstaltung->tabellenwertung != 6 && $veranstaltung->tabellenwertung != 9 && $veranstaltung->tabellenwertung != 23 && $veranstaltung->tabellenwertung != 26 && $veranstaltung->tabellenwertung != 29) { + if ($alleine_angezeigt && $praesentation == 0) { + ?> + +
+ + + + + + + tabellenwertung != 3 && $veranstaltung->tabellenwertung != 6 && $veranstaltung->tabellenwertung != 9 && $veranstaltung->tabellenwertung != 23 && $veranstaltung->tabellenwertung != 26 && $veranstaltung->tabellenwertung != 29 && ($modus->spielpunkte_wertung_einzel != 2 || $modus->spielpunkte_wertung_doppel != 2)) { if ($alleine_angezeigt && $praesentation == 0 && ($modus->spielpunkte_wertung_einzel != 2 || $modus->spielpunkte_wertung_doppel != 2)) { ?> @@ -1853,6 +1870,8 @@ static function tabelleAnzeigen($veranstaltung, $modus, $teams, $spieltag, $spie $spielpunkte_quotient = 0; $punkte_differenz = 0; $punkte_quotient = 0; + $tore_differenz_vorher = 0; + $tore_quotient_vorher = 0; $buchholz1_wert = 0; $buchholz2_wert = 0; $gesamtpunkte_verloren = 0; @@ -1866,6 +1885,8 @@ static function tabelleAnzeigen($veranstaltung, $modus, $teams, $spieltag, $spie if ($platz == 1 || (($veranstaltung->tabellenwertung <= 9 || $veranstaltung->tabellenwertung >= 21) && $gesamtpunkte != $team->gesamtpunkte) || (($veranstaltung->tabellenwertung == 1 || $veranstaltung->tabellenwertung == 4 || $veranstaltung->tabellenwertung == 7 || $veranstaltung->tabellenwertung == 10) && ($spielpunkte_differenz != $team->spielpunkte_differenz || $punkte_differenz != $team->punkte_differenz)) || (($veranstaltung->tabellenwertung == 2 || $veranstaltung->tabellenwertung == 5 || $veranstaltung->tabellenwertung == 8 || $veranstaltung->tabellenwertung == 11) && ($spielpunkte_quotient != $team->spielpunkte_quotient || $punkte_quotient != $team->punkte_quotient)) + || ($je_satz && ($veranstaltung->tabellenwertung == 1 || $veranstaltung->tabellenwertung == 4 || $veranstaltung->tabellenwertung == 7 || $veranstaltung->tabellenwertung == 10) && $tore_differenz_vorher !== ($team->tore_differenz ?? null)) + || ($je_satz && ($veranstaltung->tabellenwertung == 2 || $veranstaltung->tabellenwertung == 5 || $veranstaltung->tabellenwertung == 8 || $veranstaltung->tabellenwertung == 11) && $tore_quotient_vorher !== ($team->tore_quotient ?? null)) || (($veranstaltung->tabellenwertung >= 21) && ($team->buchholz1 != $buchholz1_wert || $team->buchholz2 != $buchholz2_wert))) $tatsaechlicher_platz = $platz; echo $tatsaechlicher_platz; @@ -1882,6 +1903,8 @@ static function tabelleAnzeigen($veranstaltung, $modus, $teams, $spieltag, $spie $spielpunkte_differenz = $team->spielpunkte_differenz; $spielpunkte_gewonnen = $team->spielpunkte_gewonnen; $spielpunkte_verloren = $team->spielpunkte_verloren; + $tore_differenz_vorher = $team->tore_differenz ?? null; + $tore_quotient_vorher = $team->tore_quotient ?? null; if ($veranstaltung->tabellenwertung >= 21) { $buchholz1_wert = $team->buchholz1; $buchholz2_wert = $team->buchholz2; @@ -1954,6 +1977,33 @@ static function tabelleAnzeigen($veranstaltung, $modus, $teams, $spieltag, $spie tabellenwertung != 3 && $veranstaltung->tabellenwertung != 6 && $veranstaltung->tabellenwertung != 9 && $veranstaltung->tabellenwertung != 23 && $veranstaltung->tabellenwertung != 26 && $veranstaltung->tabellenwertung != 29) { + $tore_gewonnen = $team->tore_gewonnen ?? null; + $tore_verloren = $team->tore_verloren ?? null; + $tore_bekannt = $tore_gewonnen !== null && $tore_verloren !== null; + $title = ""; + if ($alleine_angezeigt && $praesentation == 0) { + ?> + + + + + > + tabellenwertung == 1 || $veranstaltung->tabellenwertung == 4 || $veranstaltung->tabellenwertung == 7 || $veranstaltung->tabellenwertung == 10 || $veranstaltung->tabellenwertung == 21 || $veranstaltung->tabellenwertung == 24 || $veranstaltung->tabellenwertung == 27) + echo ($team->tore_differenz >= 0 ? "+" : "") . $team->tore_differenz; + else + echo $team->tore_quotient == -1 ? "∞" : sprintf("%.2f", $team->tore_quotient); + ?> + + tabellenwertung != 3 && $veranstaltung->tabellenwertung != 6 && $veranstaltung->tabellenwertung != 9 && $veranstaltung->tabellenwertung != 23 && $veranstaltung->tabellenwertung != 26 && $veranstaltung->tabellenwertung != 29 && ($modus->spielpunkte_wertung_einzel != 2 || $modus->spielpunkte_wertung_doppel != 2)) { $title = ""; if ($modus->spielpunkte_wertung_einzel != 2 || $modus->spielpunkte_wertung_doppel != 2) {