From 1d9aa13300da996c45595182cc8d4906e2b4a71c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=BCrgen=20Meyer?= Date: Fri, 12 Sep 2025 10:56:25 +0200 Subject: [PATCH 1/3] =?UTF-8?q?=C3=9Cberarbeitung=20Anzeige=20Vereinsliste?= =?UTF-8?q?=20in=20Frontend=20(issue=20#178)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/com_sportsmanager/admin.php | 9 +++ .../com_sportsmanager/sportsmanager.php | 7 ++- .../views/sportsmanager/view.html.php | 17 ++++-- .../views/sportsmanager/view_admin.php | 58 ++++++++++++++++--- .../de-DE/de-DE.com_sportsmanager.ini | 5 +- .../en-GB/en-GB.com_sportsmanager.ini | 5 +- 6 files changed, 80 insertions(+), 21 deletions(-) diff --git a/src/structure/components/com_sportsmanager/admin.php b/src/structure/components/com_sportsmanager/admin.php index cab859e..e9042ed 100644 --- a/src/structure/components/com_sportsmanager/admin.php +++ b/src/structure/components/com_sportsmanager/admin.php @@ -658,6 +658,7 @@ function adminEinstellungen(): void $lizenz_anzeigen = $jInput->get('lizenz_anzeigen', 0, 'INT'); $anzahl_mitglieder_zeigen = $jInput->get('anzahl_mitglieder_zeigen', 0, 'INT'); $verband_anzeigen = $jInput->get('verband_anzeigen', 0, 'INT'); + $spalte_mitglieder_zeigen = $jInput->get('spalte_mitglieder_zeigen', 0, 'INT'); $turnierbaum_zeigen = $jInput->get('turnierbaum_zeigen', 0, 'INT'); $termine_beantragen = $jInput->get('termine_beantragen', 0, 'INT'); $spielerimport_persoenliche_daten_vorauswahl = $jInput->get('spielerimport_persoenliche_daten_vorauswahl', 0, 'INT'); @@ -717,6 +718,14 @@ function adminEinstellungen(): void die($db->stderr(true)); } + $query = "REPLACE #__sportsmanager_einstellungen" + . "\n SET name = 'spalte_mitglieder_zeigen'" + . ", wert = '$spalte_mitglieder_zeigen'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $query = "REPLACE #__sportsmanager_einstellungen" . "\n SET name = 'turnierbaum_zeigen'" . ", wert = '$turnierbaum_zeigen'"; diff --git a/src/structure/components/com_sportsmanager/sportsmanager.php b/src/structure/components/com_sportsmanager/sportsmanager.php index b1dcbc4..90c901b 100644 --- a/src/structure/components/com_sportsmanager/sportsmanager.php +++ b/src/structure/components/com_sportsmanager/sportsmanager.php @@ -3787,13 +3787,14 @@ function vereine($sort): void $db = getDatabase(); global $params; $organisationAnzeigen = einstellungswert('verband_anzeigen'); - + $spalteMitgliederAnzeigen = einstellungswert('spalte_mitglieder_zeigen'); + if (!$spalteMitgliederAnzeigen) $sort = "vereinsname"; $query = "SELECT t1.verein_id, t1.vereinsname, t1.vereinssitz," . "\n t2.veranstalterbezeichnung, COUNT(*) As mitglieder" . "\n FROM #__sportsmanager_verein AS t1" . "\n LEFT JOIN #__sportsmanager_veranstalter AS t2 USING (veranstalter_id)" . "\n LEFT JOIN #__sportsmanager_mitglied_von_verein AS t3 USING (verein_id)" - . "\n WHERE t1.ausgetreten = 0 AND verstecken = 0" + . "\n WHERE t1.ausgetreten = 0 AND t1.verstecken = 0 AND t3.ausgetreten = 0" . "\n GROUP BY t1.verein_id"; if ($sort == "mitglieder"){ $query .= "\n HAVING mitglieder >= " . einstellungswert('anzahl_mitglieder_zeigen'); @@ -3804,7 +3805,7 @@ function vereine($sort): void } $vereine = loadObjectList($db, $query); - HTML_sportsmanager::vereine($params->get('titel'), $params->get('beschreibung'), $vereine, $organisationAnzeigen); + HTML_sportsmanager::vereine($params->get('titel'), $params->get('beschreibung'), $vereine, $organisationAnzeigen, $spalteMitgliederAnzeigen); administrationFooter(); } 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 3fc8916..bad6dde 100644 --- a/src/structure/components/com_sportsmanager/views/sportsmanager/view.html.php +++ b/src/structure/components/com_sportsmanager/views/sportsmanager/view.html.php @@ -3082,7 +3082,7 @@ static function tabelleAnzeigen($veranstaltung, $modus, $teams, $spieltag, $spie } } - static function vereine($titel, $beschreibung, $rows, $organisationAnzeigen): void + static function vereine($titel, $beschreibung, $rows, $organisationAnzeigen, $spalteMitgliederAnzeigen): void { global $params; if (!empty($titel)) { ?> @@ -3115,17 +3115,20 @@ static function tabelleAnzeigen($veranstaltung, $modus, $teams, $spieltag, $spie - + - - + + + + @@ -3153,9 +3156,11 @@ static function tabelleAnzeigen($veranstaltung, $modus, $teams, $spieltag, $spie vereinsname)); ?> + + " . $row->veranstalterbezeichnung . ""; 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 6a01e20..87640e8 100644 --- a/src/structure/components/com_sportsmanager/views/sportsmanager/view_admin.php +++ b/src/structure/components/com_sportsmanager/views/sportsmanager/view_admin.php @@ -727,14 +727,9 @@ class HTML_sportsmanager_admin : @@ -755,6 +750,24 @@ class HTML_sportsmanager_admin + + + + @@ -945,7 +945,7 @@ class HTML_sportsmanager_admin }); } - enableNumberOnly(document.getElementById("anzahl_mitglieder_zeigen")); + enableNumberOnly(document.getElementById("show_member_count")); Date: Wed, 17 Sep 2025 19:17:30 +0200 Subject: [PATCH 3/3] Passive und inaktive Spieler werden im oeffentlichen Bereich nicht mehr gezeigt (issue #150) --- .../com_sportsmanager/sportsmanager.php | 19 +++++++++++++++---- .../views/sportsmanager/view.html.php | 9 ++++++++- .../views/sportsmanager/view.json.php | 1 + 3 files changed, 24 insertions(+), 5 deletions(-) diff --git a/src/structure/components/com_sportsmanager/sportsmanager.php b/src/structure/components/com_sportsmanager/sportsmanager.php index 90c901b..c1f96b0 100644 --- a/src/structure/components/com_sportsmanager/sportsmanager.php +++ b/src/structure/components/com_sportsmanager/sportsmanager.php @@ -2872,12 +2872,14 @@ function spieler(): void $query .= "\n INNER JOIN (SELECT spieler_id, teamname FROM #__sportsmanager_veranstaltung INNER JOIN #__sportsmanager_team USING (veranstaltung_id) INNER JOIN #__sportsmanager_mitglied_von_team USING (team_id) WHERE status > 0 AND veranstaltung_id = $veranstaltungid AND NOT ausgetreten GROUP BY spieler_id ORDER BY YEAR(letzter_tag) DESC, reihenfolge, letzter_tag DESC, bezeichnung, teamname) AS mannschaftsmitglied USING (spieler_id)"; $query .= "\n LEFT JOIN #__sportsmanager_verein ON aktueller_verein_id = verein_id" . "\n LEFT JOIN #__sportsmanager_veranstalter USING (veranstalter_id)" - . "\n WHERE NOT ISNULL(aktueller_verein_id)"; + . "\n LEFT JOIN #__sportsmanager_mitglied_von_verein USING (spieler_id)" + . "\n WHERE NOT ISNULL(aktueller_verein_id) AND #__sportsmanager_mitglied_von_verein.mitgliedsstatus IN (1,2)"; if (!empty($search)) $query .= "\n AND (CONCAT_WS(', ', nachname, vorname) LIKE '$searchEscapedWildcards' OR CONCAT_WS(' ', vorname, nachname) LIKE '$searchEscapedWildcards' OR spielernr = '$searchEscaped' OR lizenznr = '$searchEscaped')"; if ($einstufungid != 0) $query .= "\n AND (einstufung_allgemein_id = $einstufungid OR einstufung_einzel_id = $einstufungid OR einstufung_doppel_id = $einstufungid)"; - if (!empty($kategorie)) + $query .= "\n GROUP BY spieler_id"; + if (!empty($kategorie)) $query .= "\n HAVING kategorie = '" . $db->escape($kategorie) . "'"; $query .= "\n ORDER BY " . $sortierung_query . "\n LIMIT $beginn, 50"; @@ -2995,7 +2997,11 @@ function spielerDetails(): void $query = "SELECT vereinsname" . "\n FROM #__sportsmanager_mitglied_von_verein, #__sportsmanager_verein" . "\n LEFT JOIN #__sportsmanager_veranstalter USING (veranstalter_id)" - . "\n WHERE #__sportsmanager_mitglied_von_verein.spieler_id = $id AND NOT #__sportsmanager_verein.ausgetreten AND NOT #__sportsmanager_mitglied_von_verein.ausgetreten AND #__sportsmanager_verein.verein_id = #__sportsmanager_mitglied_von_verein.verein_id" + . "\n WHERE #__sportsmanager_mitglied_von_verein.spieler_id = $id " + . "\n AND NOT #__sportsmanager_verein.ausgetreten" + . "\n AND NOT #__sportsmanager_mitglied_von_verein.ausgetreten" + . "\n AND #__sportsmanager_mitglied_von_verein.mitgliedsstatus IN (1,2)" + . "\n AND #__sportsmanager_verein.verein_id = #__sportsmanager_mitglied_von_verein.verein_id" . "\n ORDER BY vereinsname"; $vereine = loadObjectList($db, $query); @@ -3003,7 +3009,12 @@ function spielerDetails(): void $query = "SELECT veranstalterbezeichnung" . "\n FROM #__sportsmanager_mitglied_von_verein, #__sportsmanager_verein" . "\n LEFT JOIN #__sportsmanager_veranstalter USING (veranstalter_id)" - . "\n WHERE #__sportsmanager_mitglied_von_verein.spieler_id = $id AND NOT #__sportsmanager_verein.ausgetreten AND NOT #__sportsmanager_mitglied_von_verein.ausgetreten AND #__sportsmanager_verein.verein_id = #__sportsmanager_mitglied_von_verein.verein_id" + . "\n WHERE #__sportsmanager_mitglied_von_verein.spieler_id = $id" + . "\n AND NOT #__sportsmanager_verein.ausgetreten" + . "\n AND NOT #__sportsmanager_mitglied_von_verein.ausgetreten" + . "\n AND #__sportsmanager_mitglied_von_verein.mitgliedsstatus IN (1,2)" + . "\n AND #__sportsmanager_verein.verein_id = #__sportsmanager_mitglied_von_verein.verein_id" + . "\n GROUP BY veranstalterbezeichnung" . "\n ORDER BY veranstalterbezeichnung"; $veranstalter = loadObjectList($db, $query); 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 bad6dde..d64d205 100644 --- a/src/structure/components/com_sportsmanager/views/sportsmanager/view.html.php +++ b/src/structure/components/com_sportsmanager/views/sportsmanager/view.html.php @@ -4282,9 +4282,16 @@ static function tabelleAnzeigen($veranstaltung, $modus, $teams, $spieltag, $spie } } - static function spielerDetails($spieler, $vereine, $veranstalter, $spieler_elo_verlauf_einzel, $spieler_elo_verlauf_doppel, $spielerNamen, $teamNamen, $veranstaltungBezeichnungen, $turnierdisziplinBezeichnungen, $individualwettbewerbBezeichnungen, $ranglistenplatzierungen, $turnierplatzierungen, $teams, $sortierung, $vorheriger_spieler_id, $naechster_spieler_id, $elo_detailliert, $statistik, $beginn, $kategorie, $einstufungen, $filter, $veranstaltungid, $veranstalterid, $einstufungid, $unabhaengige_ansicht, $details_anzeigen, $lizenz_anzeigen):void { + static function spielerDetails($spieler, $vereine, $veranstalter, $spieler_elo_verlauf_einzel, $spieler_elo_verlauf_doppel, + $spielerNamen, $teamNamen, $veranstaltungBezeichnungen, $turnierdisziplinBezeichnungen, + $individualwettbewerbBezeichnungen, $ranglistenplatzierungen, $turnierplatzierungen, + $teams, $sortierung, $vorheriger_spieler_id, $naechster_spieler_id, $elo_detailliert, + $statistik, $beginn, $kategorie, $einstufungen, $filter, $veranstaltungid, $veranstalterid, + $einstufungid, $unabhaengige_ansicht, $details_anzeigen, $lizenz_anzeigen):void { global $params; + if (count($vereine) == 0){echo "Sie haben keine Berechtigung auf diesen Datensatz!!!"; die;} + ?>
VereinslogoVereinslogo - - + + + Organisation mitglieder; ?> vereinssitz)) echo htmlentities_utf8($row->vereinssitz . (!empty($row->vereinssitz_ortsteil) ? ("-" . $row->vereinssitz_ortsteil) : "")); ?> - + + id="anzahl_mitglieder_zeigen" name="anzahl_mitglieder_zeigen" placeholder="Zahl eingeben">
+ + + +
- id="anzahl_mitglieder_zeigen" name="anzahl_mitglieder_zeigen" placeholder="Zahl eingeben"> + id="show_member_count" name="anzahl_mitglieder_zeigen" placeholder="Zahl eingeben">
diff --git a/src/structure/components/com_sportsmanager/views/sportsmanager/view.json.php b/src/structure/components/com_sportsmanager/views/sportsmanager/view.json.php index 5d7f3ed..c19377d 100644 --- a/src/structure/components/com_sportsmanager/views/sportsmanager/view.json.php +++ b/src/structure/components/com_sportsmanager/views/sportsmanager/view.json.php @@ -197,6 +197,7 @@ class JSON_sportsmanager #[NoReturn] static function spielerDetails($spieler, $vereine, $veranstalter, $spieler_elo_verlauf_einzel, $spieler_elo_verlauf_doppel, $spielerNamen, $teamNamen, $veranstaltungBezeichnungen, $turnierdisziplinBezeichnungen, $individualwettbewerbBezeichnungen, $ranglistenplatzierungen, $turnierplatzierungen, $teams, $elo_detailliert, $statistik, $einstufungen): void { + if (count($vereine) == 0){die;} $letzte_einzel = []; $spieler->bild = playerImage($spieler->spieler_id, $spieler->geschlecht); for ($i = sizeof($spieler_elo_verlauf_einzel) - 1; $i >= max(sizeof($spieler_elo_verlauf_einzel) - 10, 0); $i--) {