From a6fe497cad843107ac15384150f50e36f79c4611 Mon Sep 17 00:00:00 2001 From: Wieland Hagen Date: Sun, 4 May 2025 20:49:52 +0200 Subject: [PATCH 1/4] Admin League Team View: show number of shifts that each team is responsible for --- src/structure/components/com_sportsmanager/admin.php | 11 ++++++++++- .../views/sportsmanager/view_admin.php | 2 ++ .../language/de-DE/de-DE.com_sportsmanager.ini | 1 + .../language/en-GB/en-GB.com_sportsmanager.ini | 1 + 4 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/structure/components/com_sportsmanager/admin.php b/src/structure/components/com_sportsmanager/admin.php index 4e159b8..4733928 100644 --- a/src/structure/components/com_sportsmanager/admin.php +++ b/src/structure/components/com_sportsmanager/admin.php @@ -7200,7 +7200,16 @@ function adminMannschaften(): void $query = "SELECT #__sportsmanager_team.*, #__sportsmanager_verein.vereinsname, #__sportsmanager_spielort.*," . "\n (SELECT COUNT(*) FROM #__sportsmanager_mitglied_von_team WHERE #__sportsmanager_team.team_id = #__sportsmanager_mitglied_von_team.team_id AND NOT ausgetreten) AS mitglieder_aktiv," . "\n (SELECT COUNT(*) FROM #__sportsmanager_mitglied_von_team WHERE #__sportsmanager_team.team_id = #__sportsmanager_mitglied_von_team.team_id) AS mitglieder," - . "\n (SELECT COUNT(*) FROM #__sportsmanager_begegnung WHERE heim_team_id = #__sportsmanager_team.team_id OR gast_team_id = #__sportsmanager_team.team_id) AS begegnungen" + . "\n (SELECT COUNT(*) FROM #__sportsmanager_begegnung WHERE heim_team_id = #__sportsmanager_team.team_id OR gast_team_id = #__sportsmanager_team.team_id) AS begegnungen," + . "\n (SELECT COUNT(team_id) FROM #__sportsmanager_begegnung_historie" + . "\n WHERE begegnung_historie_id IN (" + . "\n SELECT MIN(begegnung_historie_id) AS historie_id FROM #__sportsmanager_begegnung_historie " + . "\n WHERE aktion IN (0, 3) AND team_id in " + . "\n (SELECT team_id FROM #__sportsmanager_team WHERE veranstaltung_id = $veranstaltungid)" + . "\n GROUP BY begegnung_id" + . "\n )" + . "\n AND team_id = #__sportsmanager_team.team_id" + . "\n ) AS anzahl_verschiebungen" . "\n FROM #__sportsmanager_team" . "\n LEFT JOIN #__sportsmanager_verein ON #__sportsmanager_verein.verein_id = #__sportsmanager_team.verein_id" . "\n LEFT JOIN #__sportsmanager_spielort ON #__sportsmanager_spielort.spielort_id = #__sportsmanager_team.heimspielort_id" 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 db2a63f..16bf2d3 100644 --- a/src/structure/components/com_sportsmanager/views/sportsmanager/view_admin.php +++ b/src/structure/components/com_sportsmanager/views/sportsmanager/view_admin.php @@ -7392,6 +7392,7 @@ class HTML_sportsmanager_admin + mitglieder_aktiv . " / " . ($row->mitglieder - $row->mitglieder_aktiv); ?> + anzahl_verschiebungen; ?> name)) echo htmlentities_utf8($row->name); ?> begegnungen == 0) { ?> Date: Sun, 4 May 2025 20:59:48 +0200 Subject: [PATCH 2/4] Admin League Games View: show various additional information - mark teams which have requested a game shift - display amount of time that a game has been shifted - display time that has passed between game and result proposal, and result proposal and result validation - mark games with incomplete player data --- .../components/com_sportsmanager/admin.php | 51 ++++++++++++++++++- .../views/sportsmanager/view_admin.php | 37 ++++++++++++-- .../de-DE/de-DE.com_sportsmanager.ini | 1 + .../en-GB/en-GB.com_sportsmanager.ini | 1 + 4 files changed, 85 insertions(+), 5 deletions(-) diff --git a/src/structure/components/com_sportsmanager/admin.php b/src/structure/components/com_sportsmanager/admin.php index 4733928..7378943 100644 --- a/src/structure/components/com_sportsmanager/admin.php +++ b/src/structure/components/com_sportsmanager/admin.php @@ -8881,7 +8881,56 @@ function adminBegegnungen(): void $query = "SELECT t1.*, t2.teamname AS heim_name, t3.teamname AS gast_name, t4.unbestaetigtes_ergebnis_id, t4.zwischenergebnis, t2.nichtraucherschutz AS heim_nichtraucherschutz, t3.nichtraucherschutz AS gast_nichtraucherschutz," . "\n EXISTS(SELECT * FROM #__sportsmanager_begegnung_historie USE INDEX (begegnung_id) WHERE #__sportsmanager_begegnung_historie.begegnung_id = t1.begegnung_id AND aktion IN (1, 5)) AS verlegt," - . "\n (SELECT IF(#__sportsmanager_begegnung_historie.aktion NOT IN (0, 3, 4), NULL, #__sportsmanager_begegnung_historie.eingetragen) AS eingetragen FROM #__sportsmanager_begegnung_historie USE INDEX (begegnung_id) WHERE #__sportsmanager_begegnung_historie.begegnung_id = t1.begegnung_id ORDER BY begegnung_historie_id DESC LIMIT 1) AS verlegung_eingetragen" + . "\n (SELECT IF(#__sportsmanager_begegnung_historie.aktion NOT IN (0, 3, 4), NULL, #__sportsmanager_begegnung_historie.eingetragen) AS eingetragen FROM #__sportsmanager_begegnung_historie USE INDEX (begegnung_id) WHERE #__sportsmanager_begegnung_historie.begegnung_id = t1.begegnung_id ORDER BY begegnung_historie_id DESC LIMIT 1) AS verlegung_eingetragen," + + . "\n UNIX_TIMESTAMP(t1.zeitpunkt) AS termin_spiel," + + . "\n (" + . "\n SELECT UNIX_TIMESTAMP(zeitpunkt)" + . "\n FROM #__sportsmanager_begegnung_historie" + . "\n WHERE begegnung_id = t1.begegnung_id AND aktion = 2" + . "\n ORDER BY begegnung_historie_id ASC" + . "\n LIMIT 1" + . "\n ) AS termin_original," + + . "\n (" + . "\n SELECT team_id" + . "\n FROM #__sportsmanager_begegnung_historie" + . "\n WHERE begegnung_id = t1.begegnung_id AND aktion IN (0, 3)" + . "\n ORDER BY begegnung_historie_id ASC" + . "\n LIMIT 1" + . "\n ) AS verantwortliches_team," + + . "\n (" + . "\n SELECT UNIX_TIMESTAMP(zeitpunkt)" + . "\n FROM #__sportsmanager_begegnung_historie" + . "\n WHERE begegnung_id = t1.begegnung_id AND aktion = 1" + . "\n ORDER BY begegnung_historie_id ASC" + . "\n LIMIT 1" + . "\n ) AS termin_akzeptiert," + + . "\n (" + . "\n SELECT UNIX_TIMESTAMP(eingetragen)" + . "\n FROM #__sportsmanager_begegnung_historie" + . "\n WHERE begegnung_id = t1.begegnung_id AND aktion = 6" + . "\n ORDER BY begegnung_historie_id ASC" + . "\n LIMIT 1" + . "\n ) AS ergebnis_vorgeschlagen," + + . "\n (" + . "\n SELECT UNIX_TIMESTAMP(eingetragen)" + . "\n FROM #__sportsmanager_begegnung_historie" + . "\n WHERE begegnung_id = t1.begegnung_id AND aktion = 7" + . "\n ORDER BY begegnung_historie_id ASC" + . "\n LIMIT 1" + . "\n ) AS ergebnis_akzeptiert," + + . "\n (" + . "\n SELECT COUNT(*) FROM #__sportsmanager_teamspiel" + . "\n WHERE begegnung_id = t1.begegnung_id" + . "\n AND (heim_spieler_1_id = 0 OR heim_spieler_2_id = 0 OR gast_spieler_1_id = 0 OR gast_spieler_2_id = 0)" + . "\n ) AS fehlende_spieler" + . "\n FROM #__sportsmanager_begegnung AS t1" . "\n LEFT JOIN #__sportsmanager_team AS t2 ON t1.heim_team_id = t2.team_id" . "\n LEFT JOIN #__sportsmanager_team AS t3 ON t1.gast_team_id = t3.team_id" 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 16bf2d3..c3ed060 100644 --- a/src/structure/components/com_sportsmanager/views/sportsmanager/view_admin.php +++ b/src/structure/components/com_sportsmanager/views/sportsmanager/view_admin.php @@ -12,6 +12,27 @@ defined('_JEXEC') or die('Restricted access'); require_once JPATH_SITE . '/components/com_sportsmanager/views/sportsmanager/view_tools.php'; require_once JPATH_SITE . '/components/com_sportsmanager/util/image.php'; +function formatTimediff( $timestamp1, $timestamp2, $verbose ) { + if (empty($timestamp1) || empty($timestamp2)) { + return ""; + } else { + $hourdiff = ($timestamp2 - $timestamp1) / 3600.0; + if (abs($hourdiff) > 23) { + return sprintf($verbose ? "%+d d" : "%dd", round($hourdiff / 24.0)); + } else { + return "-"; + } + } +} + +function formatTeamName( $team_name, $team_id, $highlight_team_id ) { + if ($team_id == $highlight_team_id) { + return "" . htmlentities_utf8($team_name) . ""; + } else { + return htmlentities_utf8($team_name); + } +} + class HTML_sportsmanager_admin { static function adminUebersicht($veranstaltungen, $spielerstatistiken, $turniere, $ranglisten, $individualwettbewerbe, $statistik, $saisons, $filter_saison_id, $externe_datenbank): void @@ -8605,6 +8626,7 @@ class HTML_sportsmanager_admin punktetyp == 0 ? Text::_('COM_SPORTSMANAGER_GOALS') : Text::_('COM_SPORTSMANAGER_SETS'); ?> + verlegung_eingetragen != null) echo " **"; else if ($row->verlegt != 0) - echo " *"; + echo " (" . formatTimediff($row->termin_original, $row->termin_akzeptiert, true) . ")"; if ($row->nichtraucherschutz == 0 && ((($row->heim_nichtraucherschutz == 1 || $row->heim_nichtraucherschutz == 2 || $row->heim_nichtraucherschutz == 3) && ($row->gast_nichtraucherschutz == 3 || $row->gast_nichtraucherschutz == 7 || $row->gast_nichtraucherschutz == 8)) || (($row->heim_nichtraucherschutz == 5 || $row->heim_nichtraucherschutz == 6 || $row->heim_nichtraucherschutz == 8) && ($row->gast_nichtraucherschutz == 1 || $row->gast_nichtraucherschutz == 4 || $row->gast_nichtraucherschutz == 5)))) echo " !"; ?> @@ -8647,13 +8669,20 @@ class HTML_sportsmanager_admin echo "
" . Text::_('COM_SPORTSMANAGER_MATCH_TABLE') . ": " . htmlentities_utf8($row->tisch) . ""; ?> - heim_name); ?> - gast_name); ?> + heim_name, $row->heim_team_id, $row->verantwortliches_team); ?> + gast_name, $row->gast_team_id, $row->verantwortliches_team); ?>
heim_punkte . " : " . $row->gast_punkte; else echo "_ : _" ?>unbestaetigtes_ergebnis_id != null) echo "
" . ($row->zwischenergebnis ? "live" : "unbestätigt") . ""; ?> + href="veranstaltung_id . '&id=' . $row->begegnung_id); ?>">heim_punkte . " : " . $row->gast_punkte; else echo "_ : _" ?>unbestaetigtes_ergebnis_id != null) echo "
" . ($row->zwischenergebnis ? "live" : "unbestätigt") . ""; else if ($row->fehlende_spieler > 0) echo " (*)"; ?> heim_spielpunkte . " : " . $row->gast_spielpunkte; else echo "_ : _" ?>unbestaetigtes_ergebnis_id != null) echo "
" . ($row->zwischenergebnis ? "live" : "unbestätigt") . ""; ?> + + termin_spiel, $row->ergebnis_vorgeschlagen, false) + . " / " + . formatTimediff($row->ergebnis_vorgeschlagen, $row->ergebnis_akzeptiert, false); + ?> + 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 d462bd2..62b5302 100644 --- a/src/structure/language/de-DE/de-DE.com_sportsmanager.ini +++ b/src/structure/language/de-DE/de-DE.com_sportsmanager.ini @@ -990,3 +990,4 @@ COM_SPORTSMANAGER_ARIA_LABEL_LASTNAME="Nachname" COM_SPORTSMANAGER_ARIA_LABEL_FIRSTNAME="Vorname" COM_SPORTSMANAGER_ARIA_LABEL_CLUB="Verein" COM_SPORTSMANAGER_NUM_REQUESTED_SHIFTS="Verschiebungen" +COM_SPORTSMANAGER_GAME_RESULT_DELAYS="Verzögerung" 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 4a72aee..671d676 100644 --- a/src/structure/language/en-GB/en-GB.com_sportsmanager.ini +++ b/src/structure/language/en-GB/en-GB.com_sportsmanager.ini @@ -988,3 +988,4 @@ COM_SPORTSMANAGER_ARIA_LABEL_LASTNAME="Lastname" COM_SPORTSMANAGER_ARIA_LABEL_FIRSTNAME="Firstname" COM_SPORTSMANAGER_ARIA_LABEL_CLUB="Club" COM_SPORTSMANAGER_NUM_REQUESTED_SHIFTS="Shifts" +COM_SPORTSMANAGER_GAME_RESULT_DELAYS="Delay" From 2dddfa473afbb36fcc9591eef388a496fa9147f7 Mon Sep 17 00:00:00 2001 From: Wieland Hagen Date: Sun, 11 May 2025 21:26:22 +0200 Subject: [PATCH 3/4] Admin League Games View: display "+0d" for 0 day shifts, fix SQL query --- src/structure/components/com_sportsmanager/admin.php | 2 +- .../com_sportsmanager/views/sportsmanager/view_admin.php | 8 +++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/structure/components/com_sportsmanager/admin.php b/src/structure/components/com_sportsmanager/admin.php index 7378943..d2d4a07 100644 --- a/src/structure/components/com_sportsmanager/admin.php +++ b/src/structure/components/com_sportsmanager/admin.php @@ -7205,7 +7205,7 @@ function adminMannschaften(): void . "\n WHERE begegnung_historie_id IN (" . "\n SELECT MIN(begegnung_historie_id) AS historie_id FROM #__sportsmanager_begegnung_historie " . "\n WHERE aktion IN (0, 3) AND team_id in " - . "\n (SELECT team_id FROM #__sportsmanager_team WHERE veranstaltung_id = $veranstaltungid)" + . "\n (SELECT team_id FROM #__sportsmanager_team WHERE veranstaltung_id = $veranstaltungId)" . "\n GROUP BY begegnung_id" . "\n )" . "\n AND team_id = #__sportsmanager_team.team_id" 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 c3ed060..b9c1c7b 100644 --- a/src/structure/components/com_sportsmanager/views/sportsmanager/view_admin.php +++ b/src/structure/components/com_sportsmanager/views/sportsmanager/view_admin.php @@ -16,9 +16,11 @@ function formatTimediff( $timestamp1, $timestamp2, $verbose ) { if (empty($timestamp1) || empty($timestamp2)) { return ""; } else { - $hourdiff = ($timestamp2 - $timestamp1) / 3600.0; - if (abs($hourdiff) > 23) { - return sprintf($verbose ? "%+d d" : "%dd", round($hourdiff / 24.0)); + $daydiff = round(($timestamp2 - $timestamp1) / (3600.0 * 24.0)); + if ($verbose) { + return sprintf("%+d d", $daydiff); + } else if (abs($daydiff) > 0) { + return sprintf("%dd", $daydiff); } else { return "-"; } From 385bef075257a75d74c319b32c625259c6befe19 Mon Sep 17 00:00:00 2001 From: Wieland Hagen Date: Thu, 12 Jun 2025 17:52:52 +0200 Subject: [PATCH 4/4] Admin League Team View: add tooltip --- .../com_sportsmanager/views/sportsmanager/view_admin.php | 3 ++- src/structure/language/de-DE/de-DE.com_sportsmanager.ini | 1 + src/structure/language/en-GB/en-GB.com_sportsmanager.ini | 1 + 3 files changed, 4 insertions(+), 1 deletion(-) 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 b9c1c7b..72bcbbc 100644 --- a/src/structure/components/com_sportsmanager/views/sportsmanager/view_admin.php +++ b/src/structure/components/com_sportsmanager/views/sportsmanager/view_admin.php @@ -7415,7 +7415,8 @@ class HTML_sportsmanager_admin - + +