From e469e70b97405077b50c31f8583966ba617708d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=BCrgen=20Meyer?= Date: Mon, 9 Feb 2026 17:20:45 +0100 Subject: [PATCH] =?UTF-8?q?Formulare=20f=C3=BCr=20Tabelle=20Verbandsorgane?= =?UTF-8?q?=20erstellt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/com_sportsmanager/admin.php | 113 +++++++++++++ .../com_sportsmanager/sportsmanager.php | 12 ++ .../views/sportsmanager/view_admin.php | 156 ++++++++++++++++++ .../de-DE/de-DE.com_sportsmanager.ini | 8 +- .../en-GB/en-GB.com_sportsmanager.ini | 8 +- 5 files changed, 293 insertions(+), 4 deletions(-) diff --git a/src/structure/components/com_sportsmanager/admin.php b/src/structure/components/com_sportsmanager/admin.php index 9c46a5e..7c07d21 100644 --- a/src/structure/components/com_sportsmanager/admin.php +++ b/src/structure/components/com_sportsmanager/admin.php @@ -7334,6 +7334,119 @@ function adminEditOrdnungsstrafe(): void die(); } +function adminVerbandsorgane(): void +{ + $db = getDatabase(); + + if (!benutzerZugriff("organisationen_aendern")) + keinZugriff(true); + + $query = "SELECT t1.*, COUNT(t2.verbandsorgane_id) AS anzahl" + . "\n FROM #__sportsmanager_verbandsorgane t1" + . "\n LEFT JOIN #__sportsmanager_mitglied_von_verbandsorgan t2 ON t2.verbandsorgane_id = t1.verbandsorgane_id" + . "\n GROUP BY t1.verbandsorgane_id" + . "\n ORDER BY t1.reihenfolge;"; + $rows = loadObjectList($db, $query); + HTML_sportsmanager_admin::adminVerbandsorgane($rows); +} + +function adminEditVerbandsorgan(): void +{ + $db = getDatabase(); + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; + + if (!benutzerZugriff("organisationen_aendern")) + keinZugriff(true); + + $id = $jInput->get('id', 0, 'INT'); + if ($id == 0) + $row = null; + else { + $query = "SELECT * FROM #__sportsmanager_verbandsorgane WHERE verbandsorgane_id = $id"; + $rows = loadObjectList($db, $query); + if (count($rows) < 1) die("Wrong id!"); + $row = $rows[0]; + } + + $query = "SELECT nummer, bezeichnung FROM #__sportsmanager_kategorie WHERE typ = 7 ORDER BY nummer"; + $rows_kategorien = loadObjectList($db, $query); + $kategorien = array(); + foreach ($rows_kategorien as $kategorie) + $kategorien[$kategorie->nummer] = $kategorie->bezeichnung; + + HTML_sportsmanager_admin::adminEditVerbandsorgan($row,$kategorien); +} + +#[NoReturn] function adminSaveVerbandsorgan(): void +{ + $db = getDatabase(); + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; + + if (!benutzerZugriff("organisationen_aendern")) + keinZugriff(); + + if ($jInput->get('cancel', false, 'BOOL')) { + redirectSportsManagerURL('&task=admin_verbandsorgane'); + } + + $id = $jInput->get('id', 0, 'INT'); + $verbandsorgan = $db->escape(trim($jInput->get('verbandsorgan', '', 'RAW'))); + $kategorie = $db->escape(trim($jInput->get('kategorie', 0, 'INT'))); + $reihenfolge = $db->escape(trim($jInput->get('reihenfolge', 0, 'INT'))); + $email = $db->escape(trim($jInput->get('email', '', 'RAW'))); + $beschreibung = $db->escape(trim($jInput->get('beschreibung', '', 'RAW'))); + + if (strlen($verbandsorgan) < 3) { + redirectSportsManagerURL('&task=admin_verbandsorgane','Ungültiger Name für Verbandsorgan!'); + } + + if ($id == 0) + $query = "INSERT INTO #__sportsmanager_verbandsorgane" + . "\n (verbandsorgan,kategorie,reihenfolge,email,beschreibung) VALUES" + . "\n ('$verbandsorgan',$kategorie,$reihenfolge,'$email','$beschreibung');"; + else { + $query = "UPDATE #__sportsmanager_verbandsorgane" + . "\n SET verbandsorgan = '$verbandsorgan'" + . "\n , kategorie = $kategorie" + . "\n , reihenfolge = $reihenfolge" + . "\n , email = '$email'" + . "\n , beschreibung = '$beschreibung'" + . "\n WHERE verbandsorgane_id = $id"; + } + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + redirectSportsManagerURL('&task=admin_verbandsorgane'); +} + +#[NoReturn] function adminRemoveVerbandsorgan(): void +{ + $db = getDatabase(); + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; + + if (!benutzerZugriff("organisationen_aendern")) + keinZugriff(true); + + $id = $jInput->get('id', 0, 'INT'); + + $query = "DELETE FROM #__sportsmanager_verbandsorgane WHERE verbandsorgane_id = $id;"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + //Alle Mitglieder löschen + $query = "DELETE FROM #__sportsmanager_mitglied_von_verbandsorgan WHERE verbandsorgane_id = $id;"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + redirectSportsManagerURL('&task=admin_verbandsorgane'); +} + function adminRegelwerke(): void { $db = getDatabase(); diff --git a/src/structure/components/com_sportsmanager/sportsmanager.php b/src/structure/components/com_sportsmanager/sportsmanager.php index 367e16a..aaffe28 100644 --- a/src/structure/components/com_sportsmanager/sportsmanager.php +++ b/src/structure/components/com_sportsmanager/sportsmanager.php @@ -371,6 +371,18 @@ if ($task == "spielerbild") { case 'admin_joomla_mail_senden': sendJoomlaMail(); break; + case 'admin_verbandsorgane': + adminVerbandsorgane(); + break; + case 'admin_verbandsorgan_edit': + adminEditVerbandsorgan(); + break; + case 'admin_verbandsorgan_save': + adminSaveVerbandsorgan(); + break; + case 'admin_verbandsorgan_remove': + adminRemoveVerbandsorgan(); + break; case 'admin_regelwerke': adminRegelwerke(); break; 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 07ddea5..b50eaf7 100644 --- a/src/structure/components/com_sportsmanager/views/sportsmanager/view_admin.php +++ b/src/structure/components/com_sportsmanager/views/sportsmanager/view_admin.php @@ -101,6 +101,12 @@ class HTML_sportsmanager_admin + + + + @@ -7477,6 +7483,156 @@ class HTML_sportsmanager_admin +
+ :
+ + + + + + + +
+
+
+ 0) { + ?> + + + + + + + + + + + + +
+ + verbandsorgan)); ?> + + + anzahl; ?> + X +
+ +
+ :
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
  + +
+
+ + + + "/> +
+