From d05f3c5d7f4c4d1209df8e880d21b7c399cc45db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=BCrgen=20Meyer?= Date: Thu, 9 Oct 2025 13:14:13 +0200 Subject: [PATCH] Vereinszuordnung Spieler korrigiert. --- .../com_sportsmanager/database/update.php | 13 +++++++ .../com_sportsmanager/sportsmanager.php | 37 ++++++++++++++----- 2 files changed, 41 insertions(+), 9 deletions(-) diff --git a/src/structure/components/com_sportsmanager/database/update.php b/src/structure/components/com_sportsmanager/database/update.php index ad54812..736cb95 100644 --- a/src/structure/components/com_sportsmanager/database/update.php +++ b/src/structure/components/com_sportsmanager/database/update.php @@ -5364,6 +5364,19 @@ function updateDatabase(): void die($db->stderr(true)); } } + + if ($datenbank_version < 110) { + + $aktueller_verein_aktualisieren = true; + + $query = "UPDATE #__sportsmanager_einstellungen" + . "\n SET wert = '110'" + . "\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" diff --git a/src/structure/components/com_sportsmanager/sportsmanager.php b/src/structure/components/com_sportsmanager/sportsmanager.php index a5c7ea8..6b82667 100644 --- a/src/structure/components/com_sportsmanager/sportsmanager.php +++ b/src/structure/components/com_sportsmanager/sportsmanager.php @@ -2870,14 +2870,27 @@ function spieler(): void $query .= ", teamname"; $query .= ", vereinsname, veranstalterbezeichnung" . "\n FROM #__sportsmanager_spieler"; - if (!empty($kategorieFilter) || !empty($veranstalterFilter)) - $query .= "\n INNER JOIN (SELECT spieler_id FROM #__sportsmanager_mitglied_von_verein INNER JOIN #__sportsmanager_verein USING (verein_id) INNER JOIN #__sportsmanager_veranstalter USING (veranstalter_id) WHERE NOT #__sportsmanager_mitglied_von_verein.ausgetreten AND NOT #__sportsmanager_verein.ausgetreten" . $veranstalterFilter . $kategorieFilter . "GROUP BY spieler_id ORDER BY spieler_id, verein_id) AS mitgliedschaft USING (spieler_id)"; - if ($veranstaltungid != 0) - $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)"; + if (!empty($kategorieFilter) || !empty($veranstalterFilter)){ + $query .= "\n INNER JOIN (SELECT spieler_id FROM #__sportsmanager_mitglied_von_verein" + . "\n INNER JOIN #__sportsmanager_verein USING (verein_id)" + . "\n INNER JOIN #__sportsmanager_veranstalter USING (veranstalter_id)" + . "\n WHERE NOT #__sportsmanager_mitglied_von_verein.ausgetreten" + . "\n AND NOT #__sportsmanager_verein.ausgetreten" . $veranstalterFilter . $kategorieFilter + . "\n GROUP BY spieler_id ORDER BY spieler_id, verein_id) AS mitgliedschaft USING (spieler_id)"; + } + if ($veranstaltungid != 0){ + $query .= "\n INNER JOIN (SELECT spieler_id, teamname FROM #__sportsmanager_veranstaltung" + . "\n INNER JOIN #__sportsmanager_team USING (veranstaltung_id)" + . "\n INNER JOIN #__sportsmanager_mitglied_von_team USING (team_id)" + . "\n WHERE status > 0 AND veranstaltung_id = $veranstaltungid AND NOT ausgetreten" + . "\n GROUP BY spieler_id" + . "\n ORDER BY YEAR(letzter_tag) DESC, reihenfolge, letzter_tag DESC, bezeichnung, teamname) AS mannschaftsmitglied" + . "\n USING (spieler_id)"; + } $query .= "\n LEFT JOIN #__sportsmanager_verein ON aktueller_verein_id = verein_id" - . "\n LEFT JOIN #__sportsmanager_veranstalter USING (veranstalter_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)"; + . "\n LEFT JOIN #__sportsmanager_veranstalter USING (veranstalter_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) @@ -5585,8 +5598,14 @@ function aktuellerVereinAktualisieren($spieler_id = 0): void $db = getDatabase(); $query = "UPDATE #__sportsmanager_spieler" - . "\n LEFT JOIN (SELECT spieler_id, verein_id FROM #__sportsmanager_mitglied_von_verein INNER JOIN #__sportsmanager_verein USING (verein_id) WHERE NOT #__sportsmanager_mitglied_von_verein.ausgetreten AND NOT #__sportsmanager_verein.ausgetreten GROUP BY spieler_id ORDER BY spieler_id, verein_id) AS mitgliedschaft USING (spieler_id)" - . "\n SET aktueller_verein_id = mitgliedschaft.verein_id"; + . "\n LEFT JOIN (SELECT spieler_id, verein_id FROM #__sportsmanager_mitglied_von_verein" + . "\n INNER JOIN #__sportsmanager_verein USING (verein_id)" + . "\n WHERE NOT #__sportsmanager_mitglied_von_verein.ausgetreten" + . "\n AND #__sportsmanager_mitglied_von_verein.mitgliedsstatus IN (1,2)" + . "\n AND NOT #__sportsmanager_verein.ausgetreten" + . "\n GROUP BY spieler_id" + . "\n ORDER BY spieler_id, verein_id) AS mitgliedschaft USING (spieler_id)" + . "\n SET aktueller_verein_id = mitgliedschaft.verein_id"; if ($spieler_id != 0) $query .= "\n WHERE spieler_id = $spieler_id"; $db->setQuery($query);