Filter Mannschaften in Spielerstatistik

This commit is contained in:
Jürgen Meyer
2026-04-06 07:33:33 +02:00
parent a2243d9ccf
commit 8fb4ed1cdd
6 changed files with 90 additions and 19 deletions
@@ -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";
@@ -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);
}
}
@@ -6016,10 +6016,10 @@ static function turniervoranmeldungen($disziplin, $meldungenSpielerSortiert, $me
<?php
}
static function spielerstatistikenHeader($titel, $beschreibung, $saisons, $filter_saison_id, $id, $spiele, $min_spiele): void
static function spielerstatistikenHeader($titel, $beschreibung, $saisons, $filter_saison_id, $id, $spiele, $min_spiele, $teams, $filter_teams): void
{
global $params;
//SpielerstatistikenHeader
if (!empty($titel)) { ?>
<div
@@ -6035,7 +6035,7 @@ static function spielerstatistikenHeader($titel, $beschreibung, $saisons, $filte
</div>
<?php
}
if (!empty($saisons) || !empty($spiele)) {
if (!empty($saisons) || !empty($spiele) || !empty($teams)) {
?>
<form action="<?php echo SportsManagerURL(); ?>" method="post" name="adminForm" id="adminForm">
<div class="uk-overflow-auto">
@@ -6069,6 +6069,20 @@ static function spielerstatistikenHeader($titel, $beschreibung, $saisons, $filte
echo "<option value=\"" . $key . "\" " . ($min_spiele == $key ? "selected" : "") . ">" . htmlentities_utf8($value) . "</option>";
?>
</select>
<?PHP }
if (!empty($teams)){
?>
<label
for="filter_teams"><?php echo Text::_('COM_SPORTSMANAGER_TEAM'); ?>
:</label>
<select class="uk-select uk-form-width-medium" name="filter_teams"
id="filter_teams" size="1" style="width: 300px;"
onChange="document.adminForm.task.value='spielerstatistik'; document.adminForm.submit();">
<?php
foreach ($teams as $key => $value)
echo "<option value=\"" . $key . "\" " . ($filter_teams == $key ? "selected" : "") . ">" . htmlentities_utf8($value->teamname) . "</option>";
?>
</select>
<?PHP } ?>
<input type="submit" name="ok"
value="<?php echo Text::_('COM_SPORTSMANAGER_GO'); ?>"
@@ -6084,7 +6098,7 @@ static function spielerstatistikenHeader($titel, $beschreibung, $saisons, $filte
}
}
static function spielerstatistik($spielerstatistik, $spielerstatistik_punkte, $allein_angezeigt, $vorherige_spielerstatistik_id, $naechste_spielerstatistik_id, $details_anzeigen): void
static function spielerstatistik($spielerstatistik, $spielerstatistik_punkte, $allein_angezeigt, $filter_teams, $vorherige_spielerstatistik_id, $naechste_spielerstatistik_id, $details_anzeigen): void
{
global $params;
if ($allein_angezeigt) {
@@ -6253,11 +6267,23 @@ static function spielerstatistik($spielerstatistik, $spielerstatistik_punkte, $a
$tatsaechlicher_platz = 1;
$k = 0;
foreach ($spielerstatistik_punkte as $row) {
if ($platz == 1 || $spielpunkte_gewonnen != $row->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;
?>
<tr class="sectiontableentry<?php echo $k + 1;
$k = ($k + 1) % 2; ?><?php echo $params->get('pageclass_sfx'); ?>">
@@ -6333,11 +6359,6 @@ static function spielerstatistik($spielerstatistik, $spielerstatistik_punkte, $a
<td nowrap style="text-align: center"><?php echo $row->punkte_verloren; ?></td>
</tr>
<?php
$spielpunkte_gewonnen = $row->spielpunkte_gewonnen;
$spielpunkte_verloren = $row->spielpunkte_verloren;
$punkte_gewonnen = $row->punkte_gewonnen;
$punkte_verloren = $row->punkte_verloren;
$platz++;
}
?>
</table>
@@ -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&ouml;scht"
COM_SPORTSMANAGER_MATCH_REPORT_WAS_DELETED="Der Spielbericht wurde erfolgreich gel&ouml;scht!"
COM_SPORTSMANAGER_MATCH_REPORT_CORRECTED="Spielberichtskorrektur"
COM_SPORTSMANAGER_MIN_MATCHES="Mindestzahl Spiele"
COM_SPORTSMANAGER_MIN_MATCHES="Mindestzahl Spiele"
COM_SPORTSMANAGER_SELECT_ALL="Alle"
@@ -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"
COM_SPORTSMANAGER_MIN_MATCHES="Min count matches"
COM_SPORTSMANAGER_SELECT_ALL="All"
+3 -1
View File
@@ -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)); }