Tabellensortierung im Je-Satz-Modus: Begegnungspunkte, Spielpunkte, TORE

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.
This commit is contained in:
svennickel
2026-09-09 19:21:15 +02:00
parent 64588f71ac
commit 49ce079900
2 changed files with 112 additions and 18 deletions
@@ -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++;
@@ -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
</th>
<?php
}
if ($je_satz && $veranstaltung->tabellenwertung != 3 && $veranstaltung->tabellenwertung != 6 && $veranstaltung->tabellenwertung != 9 && $veranstaltung->tabellenwertung != 23 && $veranstaltung->tabellenwertung != 26 && $veranstaltung->tabellenwertung != 29) {
if ($alleine_angezeigt && $praesentation == 0) {
?>
<th nowrap>
<strong><?php echo Text::_('COM_SPORTSMANAGER_GOALS'); ?></strong><br/>
<small><?php echo Text::_('COM_SPORTSMANAGER_STAT_TOTAL'); ?></small>
</th>
<?php
}
?>
<th nowrap
title="<?php echo $veranstaltung->tabellenwertung == 1 || $veranstaltung->tabellenwertung == 4 || $veranstaltung->tabellenwertung == 7 || $veranstaltung->tabellenwertung == 10 || $veranstaltung->tabellenwertung == 21 || $veranstaltung->tabellenwertung == 24 || $veranstaltung->tabellenwertung == 27 ? Text::_('COM_SPORTSMANAGER_DIFFERENCE') : Text::_('COM_SPORTSMANAGER_RATIO'); ?>">
<strong><?php echo Text::_('COM_SPORTSMANAGER_GOALS'); ?></strong>
</th>
<?php
}
if ($veranstaltung->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
</td>
<?php
}
if ($je_satz && $veranstaltung->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) {
?>
<td nowrap style="text-align: center">
<small><?php echo $tore_bekannt ? $tore_gewonnen . ":" . $tore_verloren : "-"; ?></small>
</td>
<?php
} else if ($tore_bekannt)
$title = $tore_gewonnen . " : " . $tore_verloren;
?>
<td nowrap
style="text-align: center"<?php if (!empty($title)) echo " title=\"" . $title . "\""; ?>>
<?php
if (!$tore_bekannt)
echo "-";
else if ($veranstaltung->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 ? "&#8734;" : sprintf("%.2f", $team->tore_quotient);
?>
</td>
<?php
}
if ($veranstaltung->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) {