From 8fb4ed1cdd857a0f16c7d005a729a1e0f0bbff23 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=BCrgen=20Meyer?= Date: Mon, 6 Apr 2026 07:33:33 +0200 Subject: [PATCH] Filter Mannschaften in Spielerstatistik --- .../com_sportsmanager/database/update.php | 31 ++++++++++++++ .../com_sportsmanager/sportsmanager.php | 23 +++++++++-- .../views/sportsmanager/view.html.php | 41 ++++++++++++++----- .../de-DE/de-DE.com_sportsmanager.ini | 5 ++- .../en-GB/en-GB.com_sportsmanager.ini | 5 ++- src/structure/script.php | 4 +- 6 files changed, 90 insertions(+), 19 deletions(-) diff --git a/src/structure/components/com_sportsmanager/database/update.php b/src/structure/components/com_sportsmanager/database/update.php index 0fa7438..745ee19 100644 --- a/src/structure/components/com_sportsmanager/database/update.php +++ b/src/structure/components/com_sportsmanager/database/update.php @@ -5708,6 +5708,37 @@ function updateDatabase(): void } } + if ($datenbank_version < 120) { + + $columns = $db->getTableColumns('#__sportsmanager_teamspiel_modus'); + if (!array_key_exists('spiele_in_spielerstatistik', $columns)){ + $query = "ALTER TABLE `#__sportsmanager_teamspiel_modus`" + . "\n ADD `spiele_in_spielerstatistik` INT(4) NOT NULL DEFAULT '0' AFTER `heimtausch`;"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + $columns = $db->getTableColumns('#__sportsmanager_bestenliste_punkte'); + if (!array_key_exists('team_id', $columns)){ + $query = "ALTER TABLE `#__sportsmanager_bestenliste_punkte`" + . "\n ADD `team_id` INT(11) NULL DEFAULT NULL AFTER `spieler_2_id`;"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '120'" + . "\n WHERE name = 'datenbank_version'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + if ($termin_aktionen_email_setzen) { $query = "SELECT aktion_user_id, termin_aktion_id" . "\n FROM #__sportsmanager_termin_aktion"; diff --git a/src/structure/components/com_sportsmanager/sportsmanager.php b/src/structure/components/com_sportsmanager/sportsmanager.php index c4b9ce8..60c5eda 100644 --- a/src/structure/components/com_sportsmanager/sportsmanager.php +++ b/src/structure/components/com_sportsmanager/sportsmanager.php @@ -7365,7 +7365,7 @@ function spielerstatistiken(): void . "\n ORDER BY reihenfolge, bezeichnung, kategorie"; $spielerstatistiken = loadObjectList($db, $query); - HTML_sportsmanager::spielerstatistikenHeader($params->get('titel'), $params->get('beschreibung'), $saisons, $filter_saison_id, "", null, null); + HTML_sportsmanager::spielerstatistikenHeader($params->get('titel'), $params->get('beschreibung'), $saisons, $filter_saison_id, "", null, null, null, null); foreach ($spielerstatistiken as $spielerstatistik) { //Mindestzahl an Spielen @@ -7412,7 +7412,7 @@ function spielerstatistiken(): void $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); + HTML_sportsmanager::spielerstatistik($spielerstatistik, $spielerstatistik_punkte, FALSE, 0, 0, 0, $details_anzeigen); } administrationFooter(); @@ -7439,6 +7439,8 @@ function spielerstatistik(): void $details_anzeigen = currentUserHasAccessToDetails(); $filter_min_spiele = $jInput->get('filter_min_spiele', 999, 'INT'); $filter_saison_id = $jInput->get('filter_saison_id', 0, 'INT'); + $filter_teams = $jInput->get('filter_teams', 0, 'INT'); + if ($filter_saison_id == 0) { $filter_saison_id = $jInput->cookie->get('sportsmanager_filter_saison_id', 0, 'INT'); } @@ -7530,6 +7532,19 @@ function spielerstatistik(): void } $spielerstatistik_punkte = loadObjectList($db, $query); + //Dropdown teams + $query = "SELECT 0 AS team_id, '" . Text::_('COM_SPORTSMANAGER_SELECT_ALL') . "' AS teamname, 0 AS sort_order" + . "\n UNION" + . "\n SELECT team.team_id, team.teamname, 1 AS sort_order" + . "\n FROM #__sportsmanager_bestenliste_punkte" + . "\n LEFT JOIN (SELECT team_id, teamname FROM #__sportsmanager_team) AS team" + . "\n ON #__sportsmanager_bestenliste_punkte.team_id = team.team_id" + . "\n WHERE bestenliste_id = $spielerstatistik->bestenliste_id" + . "\n GROUP BY team.team_id" + . "\n ORDER BY sort_order, teamname;"; + $db->setQuery($query); + $teams = $db->loadObjectList('team_id'); + // Vorherige und nächste Spielerstatistik ermitteln $query = "SELECT *" . "\n FROM #__sportsmanager_bestenliste" @@ -7556,8 +7571,8 @@ function spielerstatistik(): void if (isJson()) { JSON_sportsmanager::spielerstatistik($spielerstatistik_punkte); } else { - HTML_sportsmanager::spielerstatistikenHeader($params->get('titel'), $params->get('beschreibung'), $saisons, $filter_saison_id, $id, $spiele, $spielerstatistik->min_spiele); - HTML_sportsmanager::spielerstatistik($spielerstatistik, $spielerstatistik_punkte, TRUE, $vorherige_spielerstatistik_id, $naechste_spielerstatistik_id, $details_anzeigen); + HTML_sportsmanager::spielerstatistikenHeader($params->get('titel'), $params->get('beschreibung'), $saisons, $filter_saison_id, $id, $spiele, $spielerstatistik->min_spiele, $teams, $filter_teams); + HTML_sportsmanager::spielerstatistik($spielerstatistik, $spielerstatistik_punkte, TRUE, $filter_teams, $vorherige_spielerstatistik_id, $naechste_spielerstatistik_id, $details_anzeigen); } } 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 183901f..cbfbfcc 100644 --- a/src/structure/components/com_sportsmanager/views/sportsmanager/view.html.php +++ b/src/structure/components/com_sportsmanager/views/sportsmanager/view.html.php @@ -6016,10 +6016,10 @@ static function turniervoranmeldungen($disziplin, $meldungenSpielerSortiert, $me
@@ -6069,6 +6069,20 @@ static function spielerstatistikenHeader($titel, $beschreibung, $saisons, $filte echo ""; ?> + + + spielpunkte_gewonnen || $spielpunkte_verloren != $row->spielpunkte_verloren || ($punkte_gewonnen - $punkte_verloren) != ($row->punkte_gewonnen - $row->punkte_verloren)) + if ($platz == 1 + || $spielpunkte_gewonnen != $row->spielpunkte_gewonnen + || $spielpunkte_verloren != $row->spielpunkte_verloren + || ($punkte_gewonnen - $punkte_verloren) != ($row->punkte_gewonnen - $row->punkte_verloren)) $tatsaechlicher_platz = $platz; + $spielpunkte_gewonnen = $row->spielpunkte_gewonnen; + $spielpunkte_verloren = $row->spielpunkte_verloren; + $punkte_gewonnen = $row->punkte_gewonnen; + $punkte_verloren = $row->punkte_verloren; + $platz++; + if (!$allein_angezeigt && $tatsaechlicher_platz > 3) break; + + if (!empty($filter_teams) && $row->team_id != $filter_teams) + continue; ?> @@ -6333,11 +6359,6 @@ static function spielerstatistik($spielerstatistik, $spielerstatistik_punkte, $a punkte_verloren; ?> spielpunkte_gewonnen; - $spielpunkte_verloren = $row->spielpunkte_verloren; - $punkte_gewonnen = $row->punkte_gewonnen; - $punkte_verloren = $row->punkte_verloren; - $platz++; } ?> 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 31b8e78..6abdc5e 100644 --- a/src/structure/language/de-DE/de-DE.com_sportsmanager.ini +++ b/src/structure/language/de-DE/de-DE.com_sportsmanager.ini @@ -562,7 +562,7 @@ COM_SPORTSMANAGER_PERFORMANCE_SHORT1="LI" COM_SPORTSMANAGER_PERFORMANCE_SHORT2="LI" COM_SPORTSMANAGER_PERFORMANCE_SHORT3="RPI" COM_SPORTSMANAGER_PERFORMANCE_SHORT4="EI" -COM_SPORTSMANAGER_PERFORMANCE_SHORT5="AVE" +COM_SPORTSMANAGER_PERFORMANCE_SHORT5="AVG" 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" @@ -1109,4 +1109,5 @@ COM_SPORTSMANAGER_REALLY_DELETE_MATCH_REPORT="Der Spielbericht wird zusammen mit 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" -COM_SPORTSMANAGER_MIN_MATCHES="Mindestzahl Spiele" \ No newline at end of file +COM_SPORTSMANAGER_MIN_MATCHES="Mindestzahl Spiele" +COM_SPORTSMANAGER_SELECT_ALL="Alle" \ 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 e8529a8..969166b 100644 --- a/src/structure/language/en-GB/en-GB.com_sportsmanager.ini +++ b/src/structure/language/en-GB/en-GB.com_sportsmanager.ini @@ -562,7 +562,7 @@ COM_SPORTSMANAGER_PERFORMANCE_SHORT1="LI" COM_SPORTSMANAGER_PERFORMANCE_SHORT2="LI" COM_SPORTSMANAGER_PERFORMANCE_SHORT3="RPI" COM_SPORTSMANAGER_PERFORMANCE_SHORT4="EI" -COM_SPORTSMANAGER_PERFORMANCE_SHORT5="AVE" +COM_SPORTSMANAGER_PERFORMANCE_SHORT5="AVG" 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" @@ -1109,4 +1109,5 @@ COM_SPORTSMANAGER_REALLY_DELETE_MATCH_REPORT="The match report and all its histo 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" -COM_SPORTSMANAGER_MIN_MATCHES="Min count matches" \ No newline at end of file +COM_SPORTSMANAGER_MIN_MATCHES="Min count matches" +COM_SPORTSMANAGER_SELECT_ALL="All" \ No newline at end of file diff --git a/src/structure/script.php b/src/structure/script.php index 6bebe14..526309c 100644 --- a/src/structure/script.php +++ b/src/structure/script.php @@ -526,6 +526,7 @@ return new class () implements InstallerScriptInterface . "\n `bestenliste_id` int(11) NOT NULL DEFAULT '0'," . "\n `spieler_id` int(11) NOT NULL DEFAULT '0'," . "\n `spieler_2_id` int(11) DEFAULT NULL," + . "\n `team_id` INT(11) DEFAULT NULL," . "\n `siege` smallint(6) DEFAULT NULL," . "\n `unentschieden` smallint(6) DEFAULT NULL," . "\n `niederlagen` smallint(6) DEFAULT NULL," @@ -789,6 +790,7 @@ return new class () implements InstallerScriptInterface . "\n `spielpunkte_bedingung` tinyint(4) NOT NULL DEFAULT '0'," . "\n `spielernamen` tinyint(4) NOT NULL DEFAULT '0'," . "\n `heimtausch` tinyint(4) NOT NULL DEFAULT '0'," + . "\n `spiele_in_spielerstatistik` tinyint(4) NOT NULL DEFAULT '0'" . "\n `modus` varchar(200) NOT NULL DEFAULT ''," . "\n `status` tinyint(4) NOT NULL DEFAULT '0'," . "\n PRIMARY KEY (`teamspiel_modus_id`)" @@ -1272,7 +1274,7 @@ return new class () implements InstallerScriptInterface $db->setQuery( $query ); if (!$db->execute()) { die($db->stderr(true)); } - $query = "INSERT IGNORE #__sportsmanager_einstellungen SET name = 'datenbank_version', wert = '119';"; + $query = "INSERT IGNORE #__sportsmanager_einstellungen SET name = 'datenbank_version', wert = '120';"; $db->setQuery( $query ); if (!$db->execute()) { die($db->stderr(true)); }