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 1/8] =?UTF-8?q?Spielerstatistik=20Race=20Permormance=20Ind?= =?UTF-8?q?ex=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 3/8] =?UTF-8?q?Teams=20und=20Filter=20Spiele=20in=20Wertun?= =?UTF-8?q?g=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; ?> + + + + + + + + + + + + +