From 43a03bbb09d9d252d973da240fad0d69a20ca5ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=BCrgen=20Meyer?= Date: Wed, 1 Apr 2026 15:51:23 +0200 Subject: [PATCH 1/4] =?UTF-8?q?Hall=20of=20Fame=20-=20Zuordnung=20Mannscha?= =?UTF-8?q?ftswappen=20=C3=BCber=20Teamname?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/structure/components/com_sportsmanager/admin.php | 9 +++++++++ .../components/com_sportsmanager/sportsmanager.php | 9 +++++++++ .../com_sportsmanager/views/sportsmanager/view.html.php | 5 ++++- .../com_sportsmanager/views/sportsmanager/view_admin.php | 6 +++++- 4 files changed, 27 insertions(+), 2 deletions(-) diff --git a/src/structure/components/com_sportsmanager/admin.php b/src/structure/components/com_sportsmanager/admin.php index 20b3eff..a2cfd9d 100644 --- a/src/structure/components/com_sportsmanager/admin.php +++ b/src/structure/components/com_sportsmanager/admin.php @@ -7788,6 +7788,7 @@ function adminHalloffameMitglieder(): void if ($halloffame->spielform == 1){ foreach ($rows as $row) { $index_vereinid = "verein_id_" . $row->platz; + $index_teamid = "team_id_" . $row->platz; $index_team = "teamname_" . $row->platz; if (!isset($mitglieder[$row->jahr])) { $mitglieder[$row->jahr] = new stdClass(); @@ -7799,6 +7800,14 @@ function adminHalloffameMitglieder(): void $halloffame->platz2_zeigen = 1; if ($row->platz == 3 && !empty($row->teamname)) $halloffame->platz3_zeigen = 1; + + //Suche team_id wenn keine verein_id vorhanden + if (empty($row->verein_id)){ + $query = "SELECT team_id FROM #__sportsmanager_team WHERE teamname LIKE '$row->teamname%' ORDER BY team_id DESC LIMIT 1;"; + $mitglieder[$row->jahr]->$index_teamid = loadResult($db, $query); + } else { + $mitglieder[$row->jahr]->$index_teamid = ""; + } } } if ($halloffame->spielform == 2 || $halloffame->spielform == 3){ diff --git a/src/structure/components/com_sportsmanager/sportsmanager.php b/src/structure/components/com_sportsmanager/sportsmanager.php index 5757739..82f60ec 100644 --- a/src/structure/components/com_sportsmanager/sportsmanager.php +++ b/src/structure/components/com_sportsmanager/sportsmanager.php @@ -4484,6 +4484,7 @@ function halloffameDetails($uebergabe_id = 0): void if ($halloffame->spielform == 1){ foreach ($rows as $row) { $index_vereinid = "verein_id_" . $row->platz; + $index_teamid = "team_id_" . $row->platz; $index_team = "teamname_" . $row->platz; if (!isset($mitglieder[$row->jahr])) { $mitglieder[$row->jahr] = new stdClass(); @@ -4495,6 +4496,14 @@ function halloffameDetails($uebergabe_id = 0): void $halloffame->platz2_zeigen = 1; if ($row->platz == 3 && !empty($row->teamname)) $halloffame->platz3_zeigen = 1; + + //Suche team_id wenn keine verein_id vorhanden + if (empty($row->verein_id)){ + $query = "SELECT team_id FROM #__sportsmanager_team WHERE teamname LIKE '$row->teamname%' ORDER BY team_id DESC LIMIT 1;"; + $mitglieder[$row->jahr]->$index_teamid = loadResult($db, $query); + } else { + $mitglieder[$row->jahr]->$index_teamid = ""; + } } } if ($halloffame->spielform == 2 || $halloffame->spielform == 3){ 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..b4147ff 100644 --- a/src/structure/components/com_sportsmanager/views/sportsmanager/view.html.php +++ b/src/structure/components/com_sportsmanager/views/sportsmanager/view.html.php @@ -4292,7 +4292,6 @@ static function halloffameDetails($titel, $beschreibung, $rows, $halloffame): vo - jahr; ?> @@ -4304,6 +4303,10 @@ static function halloffameDetails($titel, $beschreibung, $rows, $halloffame): vo $id = "verein_id_" . $i; $txt = "teamname_" . $i; $type = "vereine"; + if ($row->$id == ""){ + $id = "team_id_" . $i; + $type = "mannschaften"; + } } else { $id = "spieler1_id_" . $i; $txt = "spieler1_" . $i; 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..4103117 100644 --- a/src/structure/components/com_sportsmanager/views/sportsmanager/view_admin.php +++ b/src/structure/components/com_sportsmanager/views/sportsmanager/view_admin.php @@ -8228,9 +8228,13 @@ static function adminVerbandsorganMitglieder($rows,$verbandsorgan): void if ($i == 2 && !$halloffame->platz2_zeigen) continue; if ($i == 3 && !$halloffame->platz3_zeigen) continue; if ($halloffame->spielform == 1) { - $id = "verein_id_" . $i; $txt = "teamname_" . $i; + $id = "verein_id_" . $i; $type = "vereine"; + if ($row->$id == ""){ + $id = "team_id_" . $i; + $type = "mannschaften"; + } } else { $id = "spieler1_id_" . $i; $txt = "spieler1_" . $i; 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 2/4] 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, ..." From b33a7e6a25aee4aa6a6083101b6e32da5d11491f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=BCrgen=20Meyer?= Date: Thu, 2 Apr 2026 11:59:39 +0200 Subject: [PATCH 3/4] =?UTF-8?q?Unn=C3=B6tige=20Variablen=20gel=C3=B6scht?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/com_sportsmanager/sportsmanager.php | 8 -------- 1 file changed, 8 deletions(-) diff --git a/src/structure/components/com_sportsmanager/sportsmanager.php b/src/structure/components/com_sportsmanager/sportsmanager.php index ea9ef6b..bf6bf44 100644 --- a/src/structure/components/com_sportsmanager/sportsmanager.php +++ b/src/structure/components/com_sportsmanager/sportsmanager.php @@ -1834,12 +1834,8 @@ function getTabelleDirekterVergleich($teams,$veranstaltung,$spieltag) { $gesamtpunkte = 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; @@ -1867,12 +1863,8 @@ function getTabelleDirekterVergleich($teams,$veranstaltung,$spieltag) { $gesamtpunkte = $team->gesamtpunkte; $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; From ac416c182272ee37f126231068f2a50f6f119df3 Mon Sep 17 00:00:00 2001 From: jmeyer26 Date: Fri, 3 Apr 2026 07:37:32 +0200 Subject: [PATCH 4/4] Fehler Vergleich Satzpunkte korrigiert --- src/structure/components/com_sportsmanager/sportsmanager.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/structure/components/com_sportsmanager/sportsmanager.php b/src/structure/components/com_sportsmanager/sportsmanager.php index bf6bf44..d546d44 100644 --- a/src/structure/components/com_sportsmanager/sportsmanager.php +++ b/src/structure/components/com_sportsmanager/sportsmanager.php @@ -1850,9 +1850,9 @@ function getTabelleDirekterVergleich($teams,$veranstaltung,$spieltag) 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) + 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) + 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;