From f70048f90fb6b7ea4a3f751006a85f9f616c414d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=BCrgen=20Meyer?= Date: Tue, 17 Mar 2026 12:47:43 +0100 Subject: [PATCH 1/5] Fehlerkorrektur Direkter Vergleich --- .../com_sportsmanager/sportsmanager.php | 51 +++++++++++++++++-- .../views/sportsmanager/view.html.php | 2 +- 2 files changed, 49 insertions(+), 4 deletions(-) diff --git a/src/structure/components/com_sportsmanager/sportsmanager.php b/src/structure/components/com_sportsmanager/sportsmanager.php index cac7242..f7bbc81 100644 --- a/src/structure/components/com_sportsmanager/sportsmanager.php +++ b/src/structure/components/com_sportsmanager/sportsmanager.php @@ -1832,14 +1832,15 @@ function tabelle($veranstaltung, $spieltag, $alleine_angezeigt, $praesentation = function getTabelleDirekterVergleich($teams,$veranstaltung,$spieltag) { - $gesamtpunkte = 1000; $anzahlSpiele = 1000; $platz = 0; $punktgleicheMannschaften = []; $korrekturen = []; - + $bufferplatz = []; + foreach($teams AS $team){ + $bufferplatz[$team->team_id]['platz'] = $team->platz; if (($gesamtpunkte != $team->gesamtpunkte) OR ($anzahlSpiele != $team->anzahl_spiele)){ $gesamtpunkte = $team->gesamtpunkte; $anzahlSpiele = $team->anzahl_spiele; @@ -1851,10 +1852,54 @@ function getTabelleDirekterVergleich($teams,$veranstaltung,$spieltag) $korrekturen[$platz] = $punktgleicheMannschaften[$platz]; } } - if (!empty($korrekturen)){ foreach($korrekturen AS $key => $korrektur){ $teamsKorrektur = getTabelleSpieltag($veranstaltung,$spieltag,$korrektur,$key-1); + foreach($teamsKorrektur AS $teamKorrektur){ + $teamKorrektur->platz_alt = $bufferplatz[$teamKorrektur->team_id]['platz']; + } + + if ($veranstaltung->tabellenwertung == 1 || $veranstaltung->tabellenwertung == 4 || $veranstaltung->tabellenwertung == 7){ + usort($teamsKorrektur, fn($a, $b) => + [$b->begegnungspunkte, $a->anzahl_spiele, (int)$b->spielpunkte_differenz, (int)$b->punkte_differenz, $a->platz_alt] + <=> + [$a->begegnungspunkte, $b->anzahl_spiele, (int)$a->spielpunkte_differenz, (int)$a->punkte_differenz, $b->platz_alt] + ); + } + else if ($veranstaltung->tabellenwertung == 2 || $veranstaltung->tabellenwertung == 5 || $veranstaltung->tabellenwertung == 8){ + usort($teamsKorrektur, fn($a, $b) => + [$b->begegnungspunkte, $a->anzahl_spiele, (float)$b->spielpunkte_quotient, (float)$b->punkte_quotient, $a->platz_alt] + <=> + [$a->begegnungspunkte, $b->anzahl_spiele, (float)$a->spielpunkte_quotient, (float)$a->punkte_quotient, $b->platz_alt] + ); + } + else if ($veranstaltung->tabellenwertung == 10){ + usort($teamsKorrektur, fn($a, $b) => + [(int)$b->spielpunkte_differenz, (int)$b->punkte_differenz, $a->platz_alt] + <=> + [(int)$a->spielpunkte_differenz, (int)$a->punkte_differenz, $b->platz_alt] + ); + } + else if ($veranstaltung->tabellenwertung == 11){ + usort($teamsKorrektur, fn($a, $b) => + [(float)$b->spielpunkte_quotient, (float)$b->punkte_quotient, $a->platz_alt] + <=> + [(float)$a->spielpunkte_quotient, (float)$a->punkte_quotient, $b->platz_alt] + ); + } + else { + usort($teamsKorrektur, fn($a, $b) => + [$b->begegnungspunkte, $a->anzahl_spiele, $a->platz_alt] + <=> + [$a->begegnungspunkte, $b->anzahl_spiele, $b->platz_alt] + ); + } + + $neuerPlatz = $key; + foreach ($teamsKorrektur as $teamKorrektur) { + $teamKorrektur->platz = $neuerPlatz++; + } + foreach($teamsKorrektur AS $teamKorrektur){ foreach($teams AS $team){ if ($team->team_id == $teamKorrektur->team_id){ 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 6b2fe1d..094f494 100644 --- a/src/structure/components/com_sportsmanager/views/sportsmanager/view.html.php +++ b/src/structure/components/com_sportsmanager/views/sportsmanager/view.html.php @@ -1709,7 +1709,7 @@ static function tabelleAnzeigen($veranstaltung, $modus, $teams, $spieltag, $spie