From a583131162c7da416a1f4a5d045ac56770c14fc6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=BCrgen=20Meyer?= Date: Thu, 12 Feb 2026 15:06:38 +0100 Subject: [PATCH] Exportfunktion und ein paar Korrekturen --- .../components/com_sportsmanager/admin.php | 120 +++++++++--------- .../com_sportsmanager/sportsmanager.php | 24 +++- .../views/sportsmanager/view.html.php | 19 ++- .../views/sportsmanager/view_admin.php | 14 +- 4 files changed, 109 insertions(+), 68 deletions(-) diff --git a/src/structure/components/com_sportsmanager/admin.php b/src/structure/components/com_sportsmanager/admin.php index 58050b5..775a8e7 100644 --- a/src/structure/components/com_sportsmanager/admin.php +++ b/src/structure/components/com_sportsmanager/admin.php @@ -7295,41 +7295,8 @@ function adminEditOrdnungsstrafe(): void $query .= "\n AND t8.id = '" . $filter['aussteller'] . "'"; $query .= "\n ORDER BY ordnungsstrafen_id"; $rows = loadObjectList($db, $query); - - $dateiname = "Ordnungsstrafen.csv"; - $dateiname = bereinigterDateiname($dateiname); - ob_end_clean(); // Wegen UTF-8-Zeichen, die in der ausgabe vorhanden sind - Header("Content-Type: text/x-csv"); - Header('Expires: ' . gmdate('D, d M Y H:i:s') . ' GMT'); - Header('Content-Disposition: attachment; filename="' . $dateiname . '"'); - Header("Pragma: no-cache"); - - $data = ""; - $trennzeichen = ";"; - $spalte = 0; - $header = ""; - - foreach ($rows[0] as $field => $value) { - if ($spalte != 0) { - $header .= $trennzeichen; - } - $header .= $field; - $spalte++; - } - foreach ($rows as $row) { - $line = ''; - $spalte = 0; - foreach ($row as $value) { - if ($spalte != 0) { - $line .= $trennzeichen; - } - $line .= $value; - $spalte++; - } - $data .= trim($line) . "\n"; - } - - echo $header . "\n" . utf8_decode($data); + + exportCSV($rows, "Ordnungsstrafen.csv"); die(); } @@ -7454,6 +7421,27 @@ function adminEditVerbandsorgan(): void redirectSportsManagerURL('&task=admin_verbandsorgane'); } +#[NoReturn] function adminExportVerbandsorgane(): void +{ + $db = getDatabase(); + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; + + if (!benutzerZugriff("organisationen_aendern")) + keinZugriff(true); + + $query = "SELECT t1.verbandsorgan AS Verbandsorgan, t2.funktion As Funktion, t2.zusatzinfo As Zusatzinfo, t3.spielernr AS Passnummer," + . "\n t2.nachname AS Nachname, t2.Vorname AS Vorname, t2.email AS 'E-Mail', t2.telefon AS Telefon, t2.mobil AS Mobil" + . "\n FROM #__sportsmanager_verbandsorgane t1" + . "\n LEFT JOIN #__sportsmanager_mitglied_von_verbandsorgan t2 ON t2.verbandsorgane_id = t1.verbandsorgane_id" + . "\n LEFT JOIN #__sportsmanager_spieler t3 ON t3.spieler_id = t2.spieler_id" + . "\n ORDER BY t1.reihenfolge, t2.reihenfolge, t2.nachname, t2.vorname;"; + $rows = loadObjectList($db, $query); + + exportCSV($rows, "Verbandsorgane.csv"); + + die(); +} + function adminVerbandsorganMitglieder(): void { $db = getDatabase(); @@ -7465,10 +7453,10 @@ function adminVerbandsorganMitglieder(): void $id = $jInput->get('id', 0, 'INT'); $query = "SELECT t2.*, t1.verbandsorgan" - . "\n FROM #__sportsmanager_verbandsorgane t1" - . "\n LEFT JOIN #__sportsmanager_mitglied_von_verbandsorgan t2 ON t2.verbandsorgane_id = t1.verbandsorgane_id" - . "\n WHERE t2.verbandsorgane_id = $id" - . "\n ORDER BY t2.reihenfolge, t2.nachname, t2.vorname;"; + . "\n FROM #__sportsmanager_verbandsorgane t1" + . "\n LEFT JOIN #__sportsmanager_mitglied_von_verbandsorgan t2 ON t2.verbandsorgane_id = t1.verbandsorgane_id" + . "\n WHERE t2.verbandsorgane_id = $id" + . "\n ORDER BY t2.reihenfolge, t2.nachname, t2.vorname;"; $rows = loadObjectList($db, $query); $query = "SELECT * FROM #__sportsmanager_verbandsorgane WHERE verbandsorgane_id = $id"; @@ -12370,30 +12358,42 @@ function adminBegegnungenExportForm(): void $Bestaetigt = []; $Bestaetigt = []; $Moderator = []; + $value->vorgeschlagen_um = ""; + $value->vorgeschlagen_von = ""; + $value->bestaetigt_um = ""; + $value->bestaetigt_von = ""; + $value->moderator_um = ""; + $value->moderator_von = ""; // Endergebnis vorgeschlagen $query = " - SELECT t1.eingetragen AS gespeichert_um, t2.name AS gespeichert_von + SELECT t1.eingetragen AS gespeichert_um, + t2.name AS gespeichert_von_user, + t3.teamname AS gespeichert_von_team FROM #__sportsmanager_begegnung_historie AS t1 LEFT JOIN #__users AS t2 ON t1.user_id = t2.id + LEFT JOIN #__sportsmanager_team AS t3 ON t1.team_id = t3.team_id WHERE begegnung_id = " . $value->ID . " AND aktion IN (6) ORDER BY eingetragen DESC LIMIT 1; "; - $Bestaetigt = loadObjectList($db, $query); - if (!empty($Bestaetigt)) { - $value->vorgeschlagen_um = $Bestaetigt[0]->gespeichert_um; - $value->vorgeschlagen_von = $Bestaetigt[0]->gespeichert_von; - } else { - $value->vorgeschlagen_um = $Bestaetigt[0]->gespeichert_um; - $value->vorgeschlagen_von = $Bestaetigt[0]->gespeichert_von; + $Vorgeschlagen = loadObjectList($db, $query); + if (!empty($Vorgeschlagen)) { + $value->vorgeschlagen_um = $Vorgeschlagen[0]->gespeichert_um; + if (!empty($Vorgeschlagen[0]->gespeichert_von_user)) + $value->vorgeschlagen_von = $Vorgeschlagen[0]->gespeichert_von_user; + if (!empty($Vorgeschlagen[0]->gespeichert_von_team)) + $value->vorgeschlagen_von = $Vorgeschlagen[0]->gespeichert_von_team; } // Endergebnis bestätigen Gegner $query = " - SELECT t1.eingetragen AS gespeichert_um, t2.name AS gespeichert_von + SELECT t1.eingetragen AS gespeichert_um, + t2.name AS gespeichert_von_user, + t3.teamname AS gespeichert_von_team FROM #__sportsmanager_begegnung_historie AS t1 LEFT JOIN #__users AS t2 ON t1.user_id = t2.id + LEFT JOIN #__sportsmanager_team AS t3 ON t1.team_id = t3.team_id WHERE begegnung_id = " . $value->ID . " AND aktion IN (7) ORDER BY eingetragen DESC LIMIT 1; @@ -12401,28 +12401,32 @@ function adminBegegnungenExportForm(): void $Bestaetigt = loadObjectList($db, $query); if (!empty($Bestaetigt)) { $value->bestaetigt_um = $Bestaetigt[0]->gespeichert_um; - $value->bestaetigt_von = $Bestaetigt[0]->gespeichert_von; - } else { - $value->bestaetigt_um = $Bestaetigt[0]->gespeichert_um; - $value->bestaetigt_von = $Bestaetigt[0]->gespeichert_von; + if (!empty($Bestaetigt[0]->gespeichert_von_user)) + $value->bestaetigt_von = $Bestaetigt[0]->gespeichert_von_user; + if (!empty($Bestaetigt[0]->gespeichert_von_team)) + $value->bestaetigt_von = $Bestaetigt[0]->gespeichert_von_team; } - + // Endergebnis bestätigen Moderator $query = " - SELECT t1.eingetragen AS gespeichert_um, t2.name AS gespeichert_von + SELECT t1.eingetragen AS gespeichert_um, + t2.name AS gespeichert_von_user, + t3.teamname AS gespeichert_von_team FROM #__sportsmanager_begegnung_historie AS t1 LEFT JOIN #__users AS t2 ON t1.user_id = t2.id + LEFT JOIN #__sportsmanager_team AS t3 ON t1.team_id = t3.team_id WHERE begegnung_id = " . $value->ID . " AND aktion IN (8) ORDER BY eingetragen DESC LIMIT 1; "; $Moderator = loadObjectList($db, $query); + $Bestaetigt = loadObjectList($db, $query); if (!empty($Moderator)) { $value->moderator_um = $Moderator[0]->gespeichert_um; - $value->moderator_von = $Moderator[0]->gespeichert_von; - } else { - $value->moderator_um = $Moderator[0]->gespeichert_um; - $value->moderator_von = $Moderator[0]->gespeichert_von; + if (!empty($Moderator[0]->gespeichert_von_user)) + $value->moderator_von = $Moderator[0]->gespeichert_von_user; + if (!empty($Moderator[0]->gespeichert_von_team)) + $value->moderator_von = $Moderator[0]->gespeichert_von_team; } // Spielbericht diff --git a/src/structure/components/com_sportsmanager/sportsmanager.php b/src/structure/components/com_sportsmanager/sportsmanager.php index dce344b..484d2a8 100644 --- a/src/structure/components/com_sportsmanager/sportsmanager.php +++ b/src/structure/components/com_sportsmanager/sportsmanager.php @@ -383,6 +383,9 @@ if ($task == "spielerbild") { case 'admin_verbandsorgan_remove': adminRemoveVerbandsorgan(); break; + case 'admin_verbandsorgane_export': + adminExportVerbandsorgane(); + break; case 'admin_verbandsorgan_mitglieder': adminVerbandsorganMitglieder(); break; @@ -4290,9 +4293,18 @@ function verbandsorgane(): void function verbandsorganeDetails($uebergabe_id = 0): void { $db = getDatabase(); + $app = Factory::getContainer()->get(SiteApplication::class); + $jInput = $app->input; + global $params; $jInput = Factory::getContainer()->get(SiteApplication::class)->input; + $user_id = isExternalDatabase() ? 0 : (isJson() ? getUserID() : $app->getIdentity()->id); + if ($user_id > 0) + $erweiterte_anzeige = true; + else + $erweiterte_anzeige = false; + if ($uebergabe_id == 0) $id = $jInput->get('id', 0, 'INT'); else @@ -4306,10 +4318,20 @@ function verbandsorganeDetails($uebergabe_id = 0): void . "\n ORDER BY reihenfolge, nachname, vorname"; $mitglieder = loadObjectList($db, $query); + $query = "SELECT zusatzinfo FROM #__sportsmanager_mitglied_von_verbandsorgan" + . "\n WHERE verbandsorgane_id = $id" + . "\n AND zusatzinfo IS NOT NULL AND TRIM(zusatzinfo) <> ''" + . "\n ORDER BY reihenfolge, nachname, vorname"; + $zusatzinfos = loadObjectList($db, $query); + if (count($zusatzinfos) > 0) + $zusatzinfos_vorhanden = true; + else + $zusatzinfos_vorhanden = false; + if (isJson()) { echo json_encode($mitglieder); } else { - HTML_sportsmanager::verbandsorganeDetails($params->get('titel'), $params->get('beschreibung'), $verbandsorgane[0], $mitglieder); + HTML_sportsmanager::verbandsorganeDetails($params->get('titel'), $params->get('beschreibung'), $verbandsorgane[0], $mitglieder, $erweiterte_anzeige, $zusatzinfos_vorhanden); } } 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 3891991..306a5d1 100644 --- a/src/structure/components/com_sportsmanager/views/sportsmanager/view.html.php +++ b/src/structure/components/com_sportsmanager/views/sportsmanager/view.html.php @@ -4069,7 +4069,7 @@ static function verbandsorgane($titel, $beschreibung, $rows, $organisation_zeige @@ -4095,7 +4095,7 @@ static function verbandsorganeDetails($titel, $beschreibung, $verbandsorgan, $ro if (count($rows) > 0) { ?>

Mitglieder

- - - - + + - + - - 0) { ?> @@ -7506,6 +7504,7 @@ class HTML_sportsmanager_admin if (count($rows) > 0) { ?> +
+ spieler_id, 45, 60, 0, 0, 'border="1"'); ?> + nachname . ", " . $row->vorname); ?> + + + email); ?> + funktion); ?> + + zusatzinfo); ?>
@@ -7538,6 +7537,15 @@ class HTML_sportsmanager_admin } ?>
+ +
+ + +
+