From f86815dae535aa1bde9fec73cc95d0920d1e5712 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=BCrgen=20Meyer?= Date: Thu, 2 Apr 2026 11:56:51 +0200 Subject: [PATCH] Auswahl Direkter Vergleich nach Punkte, Satzpunkte, Tore --- .../com_sportsmanager/sportsmanager.php | 48 ++++++++++++++++--- .../views/sportsmanager/view.html.php | 1 - .../views/sportsmanager/view_admin.php | 16 ++++--- .../de-DE/de-DE.com_sportsmanager.ini | 4 ++ .../en-GB/en-GB.com_sportsmanager.ini | 4 ++ 5 files changed, 59 insertions(+), 14 deletions(-) diff --git a/src/structure/components/com_sportsmanager/sportsmanager.php b/src/structure/components/com_sportsmanager/sportsmanager.php index 5757739..ea9ef6b 100644 --- a/src/structure/components/com_sportsmanager/sportsmanager.php +++ b/src/structure/components/com_sportsmanager/sportsmanager.php @@ -1805,7 +1805,7 @@ function tabelle($veranstaltung, $spieltag, $alleine_angezeigt, $praesentation = $teams = getTabelleAktuellerSpieltag($veranstaltung); } else { $teams = getTabelleSpieltag($veranstaltung,$spieltag); - if ($veranstaltung->direktervergleich && $spieltag >= $anzahl_spieltage_komplett/2 && $anzahl_spieltage_komplett >= 3){ + if ($veranstaltung->direktervergleich > 0 && $spieltag >= $anzahl_spieltage_komplett/2 && $anzahl_spieltage_komplett >= 3){ $teams = getTabelleDirekterVergleich($teams,$veranstaltung,$spieltag); } } @@ -1833,17 +1833,48 @@ function tabelle($veranstaltung, $spieltag, $alleine_angezeigt, $praesentation = function getTabelleDirekterVergleich($teams,$veranstaltung,$spieltag) { $gesamtpunkte = 1000; - $anzahlSpiele = 1000; + $anzahl_spiele = 1000; + $punkte_gewonnen = 1000; + $punkte_verloren = 1000; + $punkte_differenz = 1000; + $punkte_quotient = 1000.0000; + $spielpunkte_gewonnen = 1000; + $spielpunkte_verloren = 1000; + $spielpunkte_differenz = 1000; + $spielpunkte_quotient = 1000.0000; $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)){ + $unterschied = false; + + if (($gesamtpunkte != $team->gesamtpunkte) || ($anzahl_spiele != $team->anzahl_spiele)) + $unterschied = true; + if ($veranstaltung->direktervergleich == 2 && in_array($veranstaltung->tabellenwertung, [1,4,7,10]) && $spielpunkte_differenz != $team->spielpunkte_differenz) + $unterschied = true; + if ($veranstaltung->direktervergleich == 2 && in_array($veranstaltung->tabellenwertung, [2,5,8,11]) && $spielpunkte_quotient != $team->spielpunkte_quotient) + $unterschied = true; + if ($veranstaltung->direktervergleich == 3 && in_array($veranstaltung->tabellenwertung, [1,4,7,10]) && $punkte_differenz != $team->punkte_differenz) + $unterschied = true; + if ($veranstaltung->direktervergleich == 3 && in_array($veranstaltung->tabellenwertung, [2,5,8,11]) && $punkte_quotient != $team->punkte_quotient) + $unterschied = true; + + if ($unterschied) + { $gesamtpunkte = $team->gesamtpunkte; - $anzahlSpiele = $team->anzahl_spiele; + $anzahl_spiele = $team->anzahl_spiele; + $punkte_gewonnen = $team->punkte_gewonnen; + $punkte_verloren = $team->punkte_verloren; + $punkte_differenz = $team->punkte_differenz; + $punkte_quotient = $team->punkte_quotient; + $spielpunkte_gewonnen = $team->spielpunkte_gewonnen; + $spielpunkte_verloren = $team->spielpunkte_verloren; + $spielpunkte_differenz = $team->spielpunkte_differenz; + $spielpunkte_quotient = $team->spielpunkte_quotient; $platz = $team->platz; $punktgleicheMannschaften[$platz] = $team->team_id; } @@ -5270,7 +5301,7 @@ function teamstatistikAktualisieren($geaenderte_veranstaltung_id = 0, $geaendert } // Direkter Vergleich, wenn mindestens die Hälfte der Spieltage gespielt sind. - if ($veranstaltung->direktervergleich && $anzahl_spieltage_gespielt >= $anzahl_spieltage_komplett/2 && $anzahl_spieltage_komplett >= 3){ + if ($veranstaltung->direktervergleich > 0 && $anzahl_spieltage_gespielt >= $anzahl_spieltage_komplett/2 && $anzahl_spieltage_komplett >= 3){ $teams = getTabelleDirekterVergleich($teams,$veranstaltung,$aktueller_spieltag); } @@ -5284,7 +5315,10 @@ function teamstatistikAktualisieren($geaenderte_veranstaltung_id = 0, $geaendert $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)) || (($veranstaltung->tabellenwertung >= 21) && ($team->buchholz1 != $buchholz1_wert || $team->buchholz2 != $buchholz2_wert))) + 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)) + || (($veranstaltung->tabellenwertung >= 21) && ($team->buchholz1 != $buchholz1_wert || $team->buchholz2 != $buchholz2_wert))) $tatsaechlicher_platz = $platz; $query = "UPDATE #__sportsmanager_team" . "\n SET platz = $tatsaechlicher_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 bfdebfd..cc0c190 100644 --- a/src/structure/components/com_sportsmanager/views/sportsmanager/view.html.php +++ b/src/structure/components/com_sportsmanager/views/sportsmanager/view.html.php @@ -1697,7 +1697,6 @@ if (count($spiele) > 0) { static function tabelleAnzeigen($veranstaltung, $modus, $teams, $spieltag, $spieltage, $alleine_angezeigt, int $praesentation = 0): void { global $params; - if (count($teams) > 0) { if ($alleine_angezeigt && $veranstaltung->tabellenwertung >= -1 && $veranstaltung->tabellenwertung <= 11 && count($spieltage) > 1) { ?> diff --git a/src/structure/components/com_sportsmanager/views/sportsmanager/view_admin.php b/src/structure/components/com_sportsmanager/views/sportsmanager/view_admin.php index 678bf30..ea65d5a 100644 --- a/src/structure/components/com_sportsmanager/views/sportsmanager/view_admin.php +++ b/src/structure/components/com_sportsmanager/views/sportsmanager/view_admin.php @@ -9435,12 +9435,16 @@ static function adminVerbandsorganMitglieder($rows,$verbandsorgan): void : - direktervergleich == $i ? " selected" : "") : "") . ">" . htmlentities_utf8($direktervergleich[$i]) . ""; - } + $typ = array( + 0 => Text::_('COM_SPORTSMANAGER_HEAD_TO_HEAD_OPT_NOT'), + 1 => Text::_('COM_SPORTSMANAGER_HEAD_TO_HEAD_OPT_POINTS'), + 2 => Text::_('COM_SPORTSMANAGER_HEAD_TO_HEAD_OPT_SETS'), + 3 => Text::_('COM_SPORTSMANAGER_HEAD_TO_HEAD_OPT_GOALS') + ); + foreach ($typ as $typ_wert => $typ_bezeichnung) + echo ""; ?> @@ -9662,7 +9666,7 @@ static function adminVerbandsorganMitglieder($rows,$verbandsorgan): void function pruefeAnzeige() { const wert = parseInt(dropdown.value); - if (wert >= 1 && wert <= 9) { + if (wert >= 1 && wert <= 11) { zeile.style.display = ""; } else { zeile.style.display = "none"; diff --git a/src/structure/language/de-DE/de-DE.com_sportsmanager.ini b/src/structure/language/de-DE/de-DE.com_sportsmanager.ini index 38d0119..4695598 100644 --- a/src/structure/language/de-DE/de-DE.com_sportsmanager.ini +++ b/src/structure/language/de-DE/de-DE.com_sportsmanager.ini @@ -550,6 +550,10 @@ COM_SPORTSMANAGER_NO_RATING="Keine Wertung" COM_SPORTSMANAGER_TEAM_COMPETITIONS="Mannschaftswettbewerbe" COM_SPORTSMANAGER_TABLE_SUMMARY="Tabellenwertung" COM_SPORTSMANAGER_HEAD_TO_HEAD_RECORD="Direkter Vergleich" +COM_SPORTSMANAGER_HEAD_TO_HEAD_OPT_NOT="deaktiviert" +COM_SPORTSMANAGER_HEAD_TO_HEAD_OPT_POINTS="bei gleicher Punktzahl" +COM_SPORTSMANAGER_HEAD_TO_HEAD_OPT_SETS="bei gleicher Punktzahl, Satzpunkte" +COM_SPORTSMANAGER_HEAD_TO_HEAD_OPT_GOALS="bei gleicher Punktzahl, Satzpunkte, Tore" COM_SPORTSMANAGER_POINTS_WON_LOST_DIFFERENCE="Spielpunkte gewonnen, Spielpunkte verloren, Punktedifferenz" COM_SPORTSMANAGER_PERFORMANCE_INDEX="Leistungsindex (SP+ * SP+ * 100) / (SP+ + SP-), Spielpunkte gewonnen, ..." COM_SPORTSMANAGER_PERFORMANCE_INDEX2="Leistungsindex (S * P+ * 10) / (P+ + P-), Spielpunkte gewonnen, ..." diff --git a/src/structure/language/en-GB/en-GB.com_sportsmanager.ini b/src/structure/language/en-GB/en-GB.com_sportsmanager.ini index 6efe062..165df52 100644 --- a/src/structure/language/en-GB/en-GB.com_sportsmanager.ini +++ b/src/structure/language/en-GB/en-GB.com_sportsmanager.ini @@ -550,6 +550,10 @@ COM_SPORTSMANAGER_NO_RATING="No rating" COM_SPORTSMANAGER_TEAM_COMPETITIONS="Team competitions" COM_SPORTSMANAGER_TABLE_SUMMARY="Table rating" COM_SPORTSMANAGER_HEAD_TO_HEAD_RECORD="Head-to-head record" +COM_SPORTSMANAGER_HEAD_TO_HEAD_OPT_NOT="Off" +COM_SPORTSMANAGER_HEAD_TO_HEAD_OPT_POINTS="Tie: pts" +COM_SPORTSMANAGER_HEAD_TO_HEAD_OPT_SETS="Tie: pts, set points" +COM_SPORTSMANAGER_HEAD_TO_HEAD_OPT_GOALS="Tie: pts, set points, goals" COM_SPORTSMANAGER_POINTS_WON_LOST_DIFFERENCE="Game points won, game points lost, point difference" COM_SPORTSMANAGER_PERFORMANCE_INDEX="Performance index (GP+ * GP+ * 100) / (GP+ + GP-), game points won, ..." COM_SPORTSMANAGER_PERFORMANCE_INDEX2="Performance index (games * P+ * 10) / (P+ + P-), game points won, ..."