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 01/12] =?UTF-8?q?Hall=20of=20Fame=20-=20Zuordnung=20Mannsc?= =?UTF-8?q?haftswappen=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 02/12] 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 03/12] =?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 c92774b27d4ad2b6ae7f374d71cb9a9ec4458a06 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=BCrgen=20Meyer?= Date: Thu, 2 Apr 2026 18:48:43 +0200 Subject: [PATCH 04/12] =?UTF-8?q?Spielerstatistik=20Race=20Permormance=20I?= =?UTF-8?q?ndex=20hinzugef=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com_sportsmanager/sportsmanager.php | 45 +++++++---- .../views/sportsmanager/view.html.php | 74 ++++++++++--------- .../views/sportsmanager/view_admin.php | 8 +- .../de-DE/de-DE.com_sportsmanager.ini | 2 + .../en-GB/en-GB.com_sportsmanager.ini | 2 + 5 files changed, 81 insertions(+), 50 deletions(-) diff --git a/src/structure/components/com_sportsmanager/sportsmanager.php b/src/structure/components/com_sportsmanager/sportsmanager.php index 5757739..96725d2 100644 --- a/src/structure/components/com_sportsmanager/sportsmanager.php +++ b/src/structure/components/com_sportsmanager/sportsmanager.php @@ -7344,19 +7344,30 @@ function spielerstatistiken(): void HTML_sportsmanager::spielerstatistikenHeader($params->get('titel'), $params->get('beschreibung'), $saisons, $filter_saison_id); foreach ($spielerstatistiken as $spielerstatistik) { - $query = "SELECT #__sportsmanager_bestenliste_punkte.*, #__sportsmanager_spieler.nachname, #__sportsmanager_spieler.vorname, #__sportsmanager_spieler.geschlecht, #__sportsmanager_spieler.aktueller_verein_id, #__sportsmanager_spieler.bild_ausblenden, spieler_2.nachname AS nachname_2, spieler_2.vorname AS vorname_2, spieler_2.geschlecht AS geschlecht_2, spieler_2.aktueller_verein_id AS aktueller_verein_id_2, spieler_2.bild_ausblenden AS bild_ausblenden_2"; - if ($spielerstatistik->tabellenwertung == 1) + $query = "SELECT #__sportsmanager_bestenliste_punkte.*, #__sportsmanager_spieler.nachname," + . "\n #__sportsmanager_spieler.vorname, #__sportsmanager_spieler.geschlecht," + . "\n #__sportsmanager_spieler.aktueller_verein_id, #__sportsmanager_spieler.bild_ausblenden," + . "\n spieler_2.nachname AS nachname_2, spieler_2.vorname AS vorname_2," + . "\n spieler_2.geschlecht AS geschlecht_2, spieler_2.aktueller_verein_id AS aktueller_verein_id_2," + . "\n spieler_2.bild_ausblenden AS bild_ausblenden_2," + . "\n IF(siege > 0 OR unentschieden > 0, ROUND(((siege * 2 + unentschieden)*100) / ((siege + unentschieden + niederlagen)*2)), 0) AS quotient"; + if ($spielerstatistik->tabellenwertung == 0){ + $query .= "\n , 0 AS leistungsindex"; + } else if ($spielerstatistik->tabellenwertung == 1){ $query .= ", IF(spielpunkte_gewonnen > 0 OR spielpunkte_verloren > 0, spielpunkte_gewonnen * spielpunkte_gewonnen * 100 / (spielpunkte_gewonnen + spielpunkte_verloren), 0) AS leistungsindex"; - else if ($spielerstatistik->tabellenwertung == 2) - $query .= ", IF(punkte_gewonnen > 0 OR punkte_verloren > 0, siege * punkte_gewonnen * 10 / (punkte_gewonnen + punkte_verloren), 0) AS leistungsindex"; - $query .= "\n FROM #__sportsmanager_bestenliste_punkte" + } else if ($spielerstatistik->tabellenwertung == 2){ + $query .= ", IF(punkte_gewonnen > 0 OR punkte_verloren > 0, ROUND(siege * punkte_gewonnen * 10 / (punkte_gewonnen + punkte_verloren)), 0) AS leistungsindex"; + } else if ($spielerstatistik->tabellenwertung == 3){ + $query .= "\n , IF(punkte_gewonnen > 0 OR punkte_verloren > 0, siege * 2 + unentschieden + punkte_gewonnen - punkte_verloren, 0) AS leistungsindex"; + } + $query .= "\n FROM #__sportsmanager_bestenliste_punkte" . "\n LEFT JOIN #__sportsmanager_spieler USING (spieler_id)" . "\n LEFT JOIN #__sportsmanager_spieler AS spieler_2 ON spieler_2.spieler_id = spieler_2_id" . "\n WHERE bestenliste_id = $spielerstatistik->bestenliste_id"; if ($spielerstatistik->tabellenwertung == 0) $query .= "\n ORDER BY spielpunkte_gewonnen DESC, spielpunkte_verloren, punkte_gewonnen - punkte_verloren DESC, nachname, vorname"; else - $query .= "\n ORDER BY leistungsindex DESC, spielpunkte_gewonnen DESC, spielpunkte_verloren, punkte_gewonnen - punkte_verloren DESC, nachname, vorname"; + $query .= "\n ORDER BY leistungsindex DESC, quotient DESC, punkte_gewonnen - punkte_verloren DESC, nachname, vorname"; $spielerstatistik_punkte = loadObjectList($db, $query); HTML_sportsmanager::spielerstatistik($spielerstatistik, $spielerstatistik_punkte, FALSE, 0, 0, $details_anzeigen); @@ -7420,12 +7431,20 @@ function spielerstatistik(): void $spielerstatistik = $rows[0]; // Spielerstatistikpunkte ermitteln - $query = "SELECT #__sportsmanager_bestenliste_punkte.*, #__sportsmanager_spieler.nachname, #__sportsmanager_spieler.vorname, #__sportsmanager_spieler.geschlecht, #__sportsmanager_spieler.aktueller_verein_id, #__sportsmanager_spieler.bild_ausblenden, spieler_2.nachname AS nachname_2, spieler_2.vorname AS vorname_2, spieler_2.geschlecht AS geschlecht_2, spieler_2.aktueller_verein_id AS aktueller_verein_id_2, spieler_2.bild_ausblenden AS bild_ausblenden_2"; - if ($spielerstatistik->tabellenwertung == 1) { - $query .= ", IF(spielpunkte_gewonnen > 0 OR spielpunkte_verloren > 0, spielpunkte_gewonnen * spielpunkte_gewonnen * 100 / (spielpunkte_gewonnen + spielpunkte_verloren), 0) AS leistungsindex"; - } else if ($spielerstatistik->tabellenwertung == 2) { - $query .= ", IF(punkte_gewonnen > 0 OR punkte_verloren > 0, siege * punkte_gewonnen * 10 / (punkte_gewonnen + punkte_verloren), 0) AS leistungsindex"; - } + $query = "SELECT #__sportsmanager_bestenliste_punkte.*, #__sportsmanager_spieler.nachname, #__sportsmanager_spieler.vorname," + . "\n #__sportsmanager_spieler.geschlecht, #__sportsmanager_spieler.aktueller_verein_id, #__sportsmanager_spieler.bild_ausblenden," + . "\n spieler_2.nachname AS nachname_2, spieler_2.vorname AS vorname_2, spieler_2.geschlecht AS geschlecht_2," + . "\n spieler_2.aktueller_verein_id AS aktueller_verein_id_2, spieler_2.bild_ausblenden AS bild_ausblenden_2," + . "\n IF(siege > 0 OR unentschieden > 0, ROUND(((siege * 2 + unentschieden)*100) / ((siege + unentschieden + niederlagen)*2)), 0) AS quotient"; + if ($spielerstatistik->tabellenwertung == 0){ + $query .= "\n , 0 AS leistungsindex"; + } else if ($spielerstatistik->tabellenwertung == 1){ + $query .= ", IF(spielpunkte_gewonnen > 0 OR spielpunkte_verloren > 0, spielpunkte_gewonnen * spielpunkte_gewonnen * 100 / (spielpunkte_gewonnen + spielpunkte_verloren), 0) AS leistungsindex"; + } else if ($spielerstatistik->tabellenwertung == 2){ + $query .= ", IF(punkte_gewonnen > 0 OR punkte_verloren > 0, ROUND(siege * punkte_gewonnen * 10 / (punkte_gewonnen + punkte_verloren)), 0) AS leistungsindex"; + } else if ($spielerstatistik->tabellenwertung == 3){ + $query .= "\n , IF(punkte_gewonnen > 0 OR punkte_verloren > 0, siege * 2 + unentschieden + punkte_gewonnen - punkte_verloren, 0) AS leistungsindex"; + } $query .= "\n FROM #__sportsmanager_bestenliste_punkte" . "\n LEFT JOIN #__sportsmanager_spieler USING (spieler_id)" . "\n LEFT JOIN #__sportsmanager_spieler AS spieler_2 ON spieler_2.spieler_id = spieler_2_id" @@ -7433,7 +7452,7 @@ function spielerstatistik(): void if ($spielerstatistik->tabellenwertung == 0) { $query .= "\n ORDER BY spielpunkte_gewonnen DESC, spielpunkte_verloren, punkte_gewonnen - punkte_verloren DESC, nachname, vorname"; } else { - $query .= "\n ORDER BY leistungsindex DESC, spielpunkte_gewonnen DESC, spielpunkte_verloren, punkte_gewonnen - punkte_verloren DESC, nachname, vorname"; + $query .= "\n ORDER BY leistungsindex DESC, quotient DESC, punkte_gewonnen - punkte_verloren DESC, nachname, vorname"; } $spielerstatistik_punkte = loadObjectList($db, $query); 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..f83b9c7 100644 --- a/src/structure/components/com_sportsmanager/views/sportsmanager/view.html.php +++ b/src/structure/components/com_sportsmanager/views/sportsmanager/view.html.php @@ -6188,23 +6188,39 @@ static function spielerstatistik($spielerstatistik, $spielerstatistik_punkte, $a if ($spielerstatistik->tabellenwertung > 0) { ?> + title=""> + + + + + + + - + + + + - - - + - - - - + + + + + + + + + @@ -6215,18 +6231,6 @@ static function spielerstatistik($spielerstatistik, $spielerstatistik_punkte, $a "> - - - - - - - - - - - - tabellenwertung != 0) { ?> - leistungsindex); ?> + leistungsindex; ?> + + + + punkte_gewonnen; ?> + spielpunkte_verloren; ?> siege + $row->niederlagen + $row->unentschieden; ?> - siege + $row->niederlagen + $row->unentschieden; ?> - tabellenwertung == 0 ? "" : "") . $row->spielpunkte_gewonnen . ($spielerstatistik->tabellenwertung == 0 ? "" : ""); ?> - spielpunkte_verloren; ?> - punkte_gewonnen; ?> - punkte_verloren; ?> - 0) ? round((($row->siege * 2 + $row->unentschieden) / ($spiele_gesamt * 2)) * 100) . "%" : "-"; ?> + quotient . " %"; ?> + siege + $row->niederlagen + $row->unentschieden; ?> siege; ?> unentschieden; ?> niederlagen; ?> + punkte_gewonnen; ?> + punkte_verloren; ?> spielpunkte_gewonnen; 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..0bbbecf 100644 --- a/src/structure/components/com_sportsmanager/views/sportsmanager/view_admin.php +++ b/src/structure/components/com_sportsmanager/views/sportsmanager/view_admin.php @@ -6362,8 +6362,12 @@ class HTML_sportsmanager_admin saison_id . "\" " . ($filter_saison_id == $saison->saison_id ? "selected" : "") . ">" . htmlentities_utf8($saison->saisonbezeichnung) . ""; ?> + + + + @@ -6060,6 +6078,7 @@ static function spielerstatistikenHeader($titel, $beschreibung, $saisons, $filte + Text::_('COM_SPORTSMANAGER_POINTS_WON_LOST_DIFFERENCE'), - 1 => Text::_('COM_SPORTSMANAGER_PERFORMANCE_INDEX'), + $typ = array(0 => Text::_('COM_SPORTSMANAGER_PERFORMANCE_INDEX0'), + 1 => Text::_('COM_SPORTSMANAGER_PERFORMANCE_INDEX1'), 2 => Text::_('COM_SPORTSMANAGER_PERFORMANCE_INDEX2'), 3 => Text::_('COM_SPORTSMANAGER_PERFORMANCE_INDEX3'), - 4 => Text::_('COM_SPORTSMANAGER_PERFORMANCE_INDEX4')); - for ($i = 0; $i <= 3; $i++) { + 4 => Text::_('COM_SPORTSMANAGER_PERFORMANCE_INDEX4'), + 5 => Text::_('COM_SPORTSMANAGER_PERFORMANCE_INDEX5')); + for ($i = 0; $i <= 5; $i++) { echo ""; } ?> 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 8725ba3..a06c9aa 100644 --- a/src/structure/language/de-DE/de-DE.com_sportsmanager.ini +++ b/src/structure/language/de-DE/de-DE.com_sportsmanager.ini @@ -550,11 +550,12 @@ 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_POINTS_WON_LOST_DIFFERENCE="Spielpunkte gewonnen, Spielpunkte verloren, Punktedifferenz" -COM_SPORTSMANAGER_PERFORMANCE_INDEX="Leistungsindex (SP+ * SP+ * 100) / (SP+ + SP-), Spielpunkte gewonnen, ..." +COM_SPORTSMANAGER_PERFORMANCE_INDEX0="Spielpunkte gewonnen, Spielpunkte verloren, Punktedifferenz" +COM_SPORTSMANAGER_PERFORMANCE_INDEX1="Leistungsindex (SP+ * SP+ * 100) / (SP+ + SP-), Spielpunkte gewonnen, ..." COM_SPORTSMANAGER_PERFORMANCE_INDEX2="Leistungsindex (S * P+ * 10) / (P+ + P-), Spielpunkte gewonnen, ..." COM_SPORTSMANAGER_PERFORMANCE_INDEX3="Race Performance Index (Siege*2 + Unentschieden + Tordifferenz)" COM_SPORTSMANAGER_PERFORMANCE_INDEX4="Effizienzindex (G+ / (G+ + G-))" +COM_SPORTSMANAGER_PERFORMANCE_INDEX5="Punkteschnitt (SP+ / Anzahl Sätze)" COM_SPORTSMANAGER_INDIVIDUAL_STATISTICS="Einzelstatistik aus allen Spielen" COM_SPORTSMANAGER_INDIVIDUAL_STATISTICS_SINGLES="Einzelstatistik aus Einzel-Spielen" COM_SPORTSMANAGER_INDIVIDUAL_STATISTICS_DOUBLES="Einzelstatistik aus Doppel-Spielen" @@ -1100,4 +1101,5 @@ COM_SPORTSMANAGER_SWAP_MATCH="Heimrechttausch" COM_SPORTSMANAGER_REALLY_DELETE_MATCH_REPORT="Der Spielbericht wird zusammen mit allen historischen Einträgen gelöscht. Willst du den Spielbericht wirklich löschen?" COM_SPORTSMANAGER_MATCH_REPORT_DELETED="Spielbericht gelöscht" COM_SPORTSMANAGER_MATCH_REPORT_WAS_DELETED="Der Spielbericht wurde erfolgreich gelöscht!" -COM_SPORTSMANAGER_MATCH_REPORT_CORRECTED="Spielberichtskorrektur" \ No newline at end of file +COM_SPORTSMANAGER_MATCH_REPORT_CORRECTED="Spielberichtskorrektur" +COM_SPORTSMANAGER_MIN_MATCHES="Mindestzahl Spiele" \ No newline at end of file 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 bfd2e98..ecdcd3b 100644 --- a/src/structure/language/en-GB/en-GB.com_sportsmanager.ini +++ b/src/structure/language/en-GB/en-GB.com_sportsmanager.ini @@ -550,11 +550,12 @@ 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_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_INDEX0="Game points won, game points lost, point difference" +COM_SPORTSMANAGER_PERFORMANCE_INDEX1="Performance index (GP+ * GP+ * 100) / (GP+ + GP-), game points won, ..." COM_SPORTSMANAGER_PERFORMANCE_INDEX2="Performance index (games * P+ * 10) / (P+ + P-), game points won, ..." COM_SPORTSMANAGER_PERFORMANCE_INDEX3="Race Performance Index (victories*2 + draws + goal difference)" COM_SPORTSMANAGER_PERFORMANCE_INDEX4="Efficency index (G+ / (G+ + G-))" +COM_SPORTSMANAGER_PERFORMANCE_INDEX5="Set point average (SP+ / count sets)" COM_SPORTSMANAGER_INDIVIDUAL_STATISTICS="Individual statistics of all games" COM_SPORTSMANAGER_INDIVIDUAL_STATISTICS_SINGLES="Individual statistics of singles games" COM_SPORTSMANAGER_INDIVIDUAL_STATISTICS_DOUBLES="Individual statistics of doubles games" @@ -1100,4 +1101,5 @@ COM_SPORTSMANAGER_SWAP_MATCH="Swap home advantage" COM_SPORTSMANAGER_REALLY_DELETE_MATCH_REPORT="The match report and all its history will be deleted. Are you sure you want to delete the match report?" COM_SPORTSMANAGER_MATCH_REPORT_DELETED="Match report deleted" COM_SPORTSMANAGER_MATCH_REPORT_WAS_DELETED="The match report has been successfully deleted!" -COM_SPORTSMANAGER_MATCH_REPORT_CORRECTED="Match report corrected" \ No newline at end of file +COM_SPORTSMANAGER_MATCH_REPORT_CORRECTED="Match report corrected" +COM_SPORTSMANAGER_MIN_MATCHES="Min count matches" \ No newline at end of file From a2243d9ccf5985302ba48dede7ee7c5707dddceb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=BCrgen=20Meyer?= Date: Mon, 6 Apr 2026 05:53:13 +0200 Subject: [PATCH 07/12] =?UTF-8?q?Teams=20und=20Filter=20Spiele=20in=20Wert?= =?UTF-8?q?ung=20hinzugef=C3=BCgt.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/com_sportsmanager/admin.php | 8 ++- .../com_sportsmanager/sportsmanager.php | 53 ++++++++++++++----- .../views/sportsmanager/view.html.php | 28 +++++----- .../views/sportsmanager/view_admin.php | 23 ++++++++ .../de-DE/de-DE.com_sportsmanager.ini | 13 +++-- .../en-GB/en-GB.com_sportsmanager.ini | 11 +++- 6 files changed, 101 insertions(+), 35 deletions(-) diff --git a/src/structure/components/com_sportsmanager/admin.php b/src/structure/components/com_sportsmanager/admin.php index 20b3eff..ef8e06c 100644 --- a/src/structure/components/com_sportsmanager/admin.php +++ b/src/structure/components/com_sportsmanager/admin.php @@ -4525,6 +4525,7 @@ function adminEditTeamspielmodus(): void $punkte_sieg_doppel_separat = $jInput->get('punkte_sieg_doppel_separat', 0, 'INT'); $punkte_sieg_doppel = $punkte_sieg_doppel_separat ? $jInput->get('punkte_sieg_doppel', 0, 'INT') : $punkte_sieg_einzel; $heimtausch = $jInput->get('heimtausch', 0, 'INT'); + $spiele_in_spielerstatistik = $jInput->get('spiele_in_spielerstatistik', 0, 'INT'); $status = $jInput->get('status', 0, 'INT'); $spielpunkte_wertung_einzel = $jInput->get('spielpunkte_wertung_einzel', 0, 'INT'); $spielpunkte_wertung_doppel_separat = $jInput->get('spielpunkte_wertung_doppel_separat', 0, 'INT'); @@ -4572,7 +4573,11 @@ function adminEditTeamspielmodus(): void $modus = $db->escape($modus); if ($id == 0) { - $query = "INSERT INTO #__sportsmanager_teamspiel_modus (bezeichnung, punktetyp, punkte_sieg_einzel, punkte_sieg_doppel, spielpunkte_wertung_einzel, spielpunkte_wertung_doppel, spielpunkte_bedingung, spielernamen, heimtausch, modus, status) VALUES ('$bezeichnung', '$punktetyp', '$punkte_sieg_einzel', '$punkte_sieg_doppel', '$spielpunkte_wertung_einzel', '$spielpunkte_wertung_doppel', '$spielpunkte_bedingung', '$spielernamen', '$heimtausch', '$modus', '$status');"; + $query = "INSERT INTO #__sportsmanager_teamspiel_modus" + . "\n (bezeichnung, punktetyp, punkte_sieg_einzel, punkte_sieg_doppel, spielpunkte_wertung_einzel, spielpunkte_wertung_doppel," + . "\n spielpunkte_bedingung, spielernamen, heimtausch, modus, spiele_in_spielerstatistik, status)" + . "\n VALUES ('$bezeichnung', '$punktetyp', '$punkte_sieg_einzel', '$punkte_sieg_doppel', '$spielpunkte_wertung_einzel'," + . "\n '$spielpunkte_wertung_doppel', '$spielpunkte_bedingung', '$spielernamen', '$heimtausch', '$modus', '$spiele_in_spielerstatistik', '$status');"; $db->setQuery($query); if (!$db->execute()) { die($db->stderr(true)); @@ -4590,6 +4595,7 @@ function adminEditTeamspielmodus(): void . "\n spielernamen = '$spielernamen'," . "\n heimtausch = '$heimtausch'," . "\n modus = '$modus'," + . "\n spiele_in_spielerstatistik = '$spiele_in_spielerstatistik'," . "\n status = '$status'" . "\n WHERE teamspiel_modus_id = $id"; $db->setQuery($query); diff --git a/src/structure/components/com_sportsmanager/sportsmanager.php b/src/structure/components/com_sportsmanager/sportsmanager.php index 0ff9d98..c4b9ce8 100644 --- a/src/structure/components/com_sportsmanager/sportsmanager.php +++ b/src/structure/components/com_sportsmanager/sportsmanager.php @@ -5825,17 +5825,23 @@ function spielerstatistikAktualisieren($geaenderte_spielerstatistik_id = 0, $gea $punkte = array(); foreach ($veranstaltungen as $veranstaltung) { - $query = "SELECT heim_spieler_1_id, heim_spieler_2_id, gast_spieler_1_id, gast_spieler_2_id, teamspiel_heim_punkte, teamspiel_gast_punkte, teamspiel_heim_spielpunkte, teamspiel_gast_spielpunkte" + $query = "SELECT heim_spieler_1_id, heim_spieler_2_id, gast_spieler_1_id, gast_spieler_2_id, heim_team_id, gast_team_id," + . "\n teamspiel_heim_punkte, teamspiel_gast_punkte, teamspiel_heim_spielpunkte, teamspiel_gast_spielpunkte" . "\n FROM #__sportsmanager_begegnung" . "\n LEFT JOIN #__sportsmanager_team ON heim_team_id = #__sportsmanager_team.team_id" . "\n LEFT JOIN #__sportsmanager_teamspiel ON #__sportsmanager_begegnung.begegnung_id = #__sportsmanager_teamspiel.begegnung_id" . "\n LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis ON #__sportsmanager_begegnung.begegnung_id = #__sportsmanager_unbestaetigtes_ergebnis.begegnung_id" - . "\n WHERE ISNULL(unbestaetigtes_ergebnis_id) AND veranstaltung_id = $veranstaltung->veranstaltung_id"; - if ($spielerstatistik->typ == 1) + . "\n LEFT JOIN #__sportsmanager_veranstaltung ON #__sportsmanager_team.veranstaltung_id = #__sportsmanager_veranstaltung.veranstaltung_id" + . "\n LEFT JOIN #__sportsmanager_teamspiel_modus ON #__sportsmanager_veranstaltung.modus_id = #__sportsmanager_teamspiel_modus.teamspiel_modus_id" + . "\n WHERE ISNULL(unbestaetigtes_ergebnis_id) AND #__sportsmanager_veranstaltung.veranstaltung_id = $veranstaltung->veranstaltung_id" + . "\n AND (#__sportsmanager_teamspiel_modus.spiele_in_spielerstatistik <= 0" + . "\n OR teamspiel_nummer <= #__sportsmanager_teamspiel_modus.spiele_in_spielerstatistik)"; + if ($spielerstatistik->typ == 1) $query .= "\n AND ISNULL(heim_spieler_2_id) AND ISNULL(gast_spieler_2_id)"; else if ($spielerstatistik->typ == 2 || $spielerstatistik->typ == 3) $query .= "\n AND NOT (ISNULL(heim_spieler_2_id) AND ISNULL(gast_spieler_2_id))"; - $begegnungen = loadObjectList($db, $query); + $query .= "\n ORDER BY #__sportsmanager_begegnung.zeitpunkt ASC;"; + $begegnungen = loadObjectList($db, $query); foreach ($begegnungen as $begegnung) { $beteiligte = array(); @@ -5868,6 +5874,8 @@ function spielerstatistikAktualisieren($geaenderte_spielerstatistik_id = 0, $gea $gast_punkte = $begegnung->teamspiel_gast_punkte; $heim_spielpunkte = $begegnung->teamspiel_heim_spielpunkte; $gast_spielpunkte = $begegnung->teamspiel_gast_spielpunkte; + $heim_team_id = $begegnung->heim_team_id; + $gast_team_id = $begegnung->gast_team_id; $ergebnis = $heim_punkte > $gast_punkte ? 1 : ($heim_punkte < $gast_punkte ? 2 : 0); $heim_saetze = $ergebnis == 1 ? 1 : 0; $unentschieden_saetze = $ergebnis == 0 ? 1 : 0; @@ -5888,6 +5896,10 @@ function spielerstatistikAktualisieren($geaenderte_spielerstatistik_id = 0, $gea $punkte[$spieler_id]["sv"] = 0; $punkte[$spieler_id]["pg"] = 0; $punkte[$spieler_id]["pv"] = 0; + if ($typ == "H") + $punkte[$spieler_id]["team_id"] = $heim_team_id; + else + $punkte[$spieler_id]["team_id"] = $gast_team_id; } if (($ergebnis == 1 && $typ == "H") || ($ergebnis == 2 && $typ != "H")) $punkte[$spieler_id]["s"] += 1; @@ -6014,6 +6026,11 @@ function spielerstatistikAktualisieren($geaenderte_spielerstatistik_id = 0, $gea $spieler_punkte_saetze_verloren = $spieler_punkte["sv"]; $spieler_punkte_punkte_gewonnen = $spieler_punkte["pg"]; $spieler_punkte_punkte_verloren = $spieler_punkte["pv"]; + if (!empty($spieler_punkte["team_id"])) + $spieler_team_id = $spieler_punkte["team_id"]; + else + $spieler_team_id = "NULL"; + $query = "UPDATE #__sportsmanager_bestenliste_punkte" . "\n SET siege = $spieler_punkte_siege," . "\n unentschieden = $spieler_punkte_unentschieden," @@ -6024,7 +6041,8 @@ function spielerstatistikAktualisieren($geaenderte_spielerstatistik_id = 0, $gea . "\n saetze_unentschieden = $spieler_punkte_saetze_unentschieden," . "\n saetze_verloren = $spieler_punkte_saetze_verloren," . "\n punkte_gewonnen = $spieler_punkte_punkte_gewonnen," - . "\n punkte_verloren = $spieler_punkte_punkte_verloren" + . "\n punkte_verloren = $spieler_punkte_punkte_verloren," + . "\n team_id = $spieler_team_id" . "\n WHERE bestenliste_punkte_id = $row->bestenliste_punkte_id;"; $db->setQuery($query); if (!$db->execute()) { @@ -6051,6 +6069,10 @@ function spielerstatistikAktualisieren($geaenderte_spielerstatistik_id = 0, $gea $spieler_punkte_saetze_verloren = $spieler_punkte["sv"]; $spieler_punkte_punkte_gewonnen = $spieler_punkte["pg"]; $spieler_punkte_punkte_verloren = $spieler_punkte["pv"]; + if (!empty($spieler_punkte["team_id"])) + $spieler_team_id = $spieler_punkte["team_id"]; + else + $spieler_team_id = "NULL"; $query = "INSERT #__sportsmanager_bestenliste_punkte" . "\n SET siege = $spieler_punkte_siege," . "\n unentschieden = $spieler_punkte_unentschieden," @@ -6064,6 +6086,7 @@ function spielerstatistikAktualisieren($geaenderte_spielerstatistik_id = 0, $gea . "\n punkte_verloren = $spieler_punkte_punkte_verloren," . "\n spieler_id = $spieler_1_id," . "\n spieler_2_id = " . ($spieler_2_id != NULL ? "$spieler_2_id" : "NULL") . "," + . "\n team_id = $spieler_team_id," . "\n bestenliste_id = $spielerstatistik->bestenliste_id;"; $db->setQuery($query); if (!$db->execute()) { @@ -7356,7 +7379,7 @@ function spielerstatistiken(): void $max_spiele = loadResult($db, $query); $spielerstatistik->min_spiele = round($max_spiele/2); } - $query = "SELECT #__sportsmanager_bestenliste_punkte.*, #__sportsmanager_spieler.nachname," + $query = "SELECT #__sportsmanager_bestenliste_punkte.*, #__sportsmanager_spieler.nachname, team.teamname," . "\n siege + unentschieden + niederlagen AS spiele," . "\n #__sportsmanager_spieler.vorname, #__sportsmanager_spieler.geschlecht," . "\n #__sportsmanager_spieler.aktueller_verein_id, #__sportsmanager_spieler.bild_ausblenden," @@ -7375,10 +7398,11 @@ function spielerstatistiken(): void } else if ($spielerstatistik->tabellenwertung == 4){ $query .= "\n , IF(punkte_gewonnen > 0 OR punkte_verloren > 0, ROUND(punkte_gewonnen*100 / (punkte_gewonnen + punkte_verloren),2), 0) AS leistungsindex"; } else if ($spielerstatistik->tabellenwertung == 5){ - $query .= "\n , IF(punkte_gewonnen > 0 OR punkte_verloren > 0, ROUND(punkte_gewonnen / (siege + unentschieden + niederlagen),2), 0) AS leistungsindex"; + $query .= "\n , IF(punkte_gewonnen > 0 OR punkte_verloren > 0, ROUND(spielpunkte_gewonnen / (siege + unentschieden + niederlagen),2), 0) AS leistungsindex"; } $query .= "\n FROM #__sportsmanager_bestenliste_punkte" . "\n LEFT JOIN #__sportsmanager_spieler USING (spieler_id)" + . "\n LEFT JOIN (SELECT team_id, teamname FROM #__sportsmanager_team) AS team ON #__sportsmanager_bestenliste_punkte.team_id = team.team_id" . "\n LEFT JOIN #__sportsmanager_spieler AS spieler_2 ON spieler_2.spieler_id = spieler_2_id" . "\n WHERE bestenliste_id = $spielerstatistik->bestenliste_id" . "\n AND siege + unentschieden + niederlagen >= $spielerstatistik->min_spiele"; @@ -7386,7 +7410,7 @@ function spielerstatistiken(): void $query .= "\n ORDER BY spielpunkte_gewonnen DESC, spielpunkte_verloren, punkte_gewonnen - punkte_verloren DESC, nachname, vorname"; else $query .= "\n ORDER BY leistungsindex DESC, quotient DESC, punkte_gewonnen - punkte_verloren DESC, nachname, vorname"; - $spielerstatistik_punkte = loadObjectList($db, $query); + $spielerstatistik_punkte = loadObjectList($db, $query); HTML_sportsmanager::spielerstatistik($spielerstatistik, $spielerstatistik_punkte, FALSE, 0, 0, $details_anzeigen); } @@ -7474,34 +7498,35 @@ function spielerstatistik(): void } // Spielerstatistikpunkte ermitteln - $query = "SELECT #__sportsmanager_bestenliste_punkte.*, #__sportsmanager_spieler.nachname, #__sportsmanager_spieler.vorname," + $query = "SELECT #__sportsmanager_bestenliste_punkte.*, #__sportsmanager_spieler.nachname, #__sportsmanager_spieler.vorname, team.teamname," . "\n siege + unentschieden + niederlagen AS spiele," . "\n #__sportsmanager_spieler.geschlecht, #__sportsmanager_spieler.aktueller_verein_id, #__sportsmanager_spieler.bild_ausblenden," . "\n spieler_2.nachname AS nachname_2, spieler_2.vorname AS vorname_2, spieler_2.geschlecht AS geschlecht_2," . "\n spieler_2.aktueller_verein_id AS aktueller_verein_id_2, spieler_2.bild_ausblenden AS bild_ausblenden_2," . "\n IF(siege > 0 OR unentschieden > 0, ROUND(((siege * 2 + unentschieden)*100) / ((siege + unentschieden + niederlagen)*2)), 0) AS quotient"; if ($spielerstatistik->tabellenwertung == 0){ - $query .= "\n , 0 AS leistungsindex"; + $query .= "\n , spielpunkte_gewonnen AS leistungsindex"; } else if ($spielerstatistik->tabellenwertung == 1){ - $query .= ", IF(spielpunkte_gewonnen > 0 OR spielpunkte_verloren > 0, spielpunkte_gewonnen * spielpunkte_gewonnen * 100 / (spielpunkte_gewonnen + spielpunkte_verloren), 0) AS leistungsindex"; + $query .= "\n , IF(spielpunkte_gewonnen > 0 OR spielpunkte_verloren > 0, spielpunkte_gewonnen * spielpunkte_gewonnen * 100 / (spielpunkte_gewonnen + spielpunkte_verloren), 0) AS leistungsindex"; } else if ($spielerstatistik->tabellenwertung == 2){ - $query .= ", IF(punkte_gewonnen > 0 OR punkte_verloren > 0, ROUND(siege * punkte_gewonnen * 10 / (punkte_gewonnen + punkte_verloren)), 0) AS leistungsindex"; + $query .= "\n , IF(punkte_gewonnen > 0 OR punkte_verloren > 0, ROUND(siege * punkte_gewonnen * 10 / (punkte_gewonnen + punkte_verloren)), 0) AS leistungsindex"; } else if ($spielerstatistik->tabellenwertung == 3){ $query .= "\n , IF(punkte_gewonnen > 0 OR punkte_verloren > 0, siege * 2 + unentschieden + punkte_gewonnen - punkte_verloren, 0) AS leistungsindex"; } else if ($spielerstatistik->tabellenwertung == 4){ $query .= "\n , IF(punkte_gewonnen > 0 OR punkte_verloren > 0, ROUND(punkte_gewonnen*100 / (punkte_gewonnen + punkte_verloren),2), 0) AS leistungsindex"; } else if ($spielerstatistik->tabellenwertung == 5){ - $query .= "\n , IF(punkte_gewonnen > 0 OR punkte_verloren > 0, ROUND(punkte_gewonnen / (siege + unentschieden + niederlagen),2), 0) AS leistungsindex"; + $query .= "\n , IF(punkte_gewonnen > 0 OR punkte_verloren > 0, ROUND(spielpunkte_gewonnen / (siege + unentschieden + niederlagen),2), 0) AS leistungsindex"; } $query .= "\n FROM #__sportsmanager_bestenliste_punkte" . "\n LEFT JOIN #__sportsmanager_spieler USING (spieler_id)" + . "\n LEFT JOIN (SELECT team_id, teamname FROM #__sportsmanager_team) AS team ON #__sportsmanager_bestenliste_punkte.team_id = team.team_id" . "\n LEFT JOIN #__sportsmanager_spieler AS spieler_2 ON spieler_2.spieler_id = spieler_2_id" . "\n WHERE bestenliste_id = $spielerstatistik->bestenliste_id" . "\n AND siege + unentschieden + niederlagen >= $spielerstatistik->min_spiele"; if ($spielerstatistik->tabellenwertung == 0) { $query .= "\n ORDER BY spielpunkte_gewonnen DESC, spielpunkte_verloren, punkte_gewonnen - punkte_verloren DESC, nachname, vorname"; } else { - $query .= "\n ORDER BY leistungsindex DESC, quotient DESC, punkte_gewonnen - punkte_verloren DESC, nachname, vorname"; + $query .= "\n ORDER BY leistungsindex DESC, quotient DESC, spielpunkte_gewonnen - spielpunkte_verloren DESC, punkte_gewonnen - punkte_verloren DESC, nachname, vorname"; } $spielerstatistik_punkte = loadObjectList($db, $query); 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 af4be4d..183901f 100644 --- a/src/structure/components/com_sportsmanager/views/sportsmanager/view.html.php +++ b/src/structure/components/com_sportsmanager/views/sportsmanager/view.html.php @@ -6207,21 +6207,19 @@ static function spielerstatistik($spielerstatistik, $spielerstatistik_punkte, $a if ($spielerstatistik->tabellenwertung > 0) { ?> - + title="tabellenwertung); ?>"> + tabellenwertung); ?> - + title=""> + + - + title=""> + - - + + title=""> + + - - + title=""> + - teamname)) + echo "
" . htmlentities_utf8($row->teamname); ?> @@ -6320,7 +6318,7 @@ static function spielerstatistik($spielerstatistik, $spielerstatistik_punkte, $a } else { ?> - punkte_gewonnen; ?> + spielpunkte_gewonnen; ?> spielpunkte_verloren; ?> + + + + + + + + + + + + +