Compare commits

...

157 Commits

Author SHA1 Message Date
MarvinF 287dcb0074 Merge pull request #224 from Deutscher-Tischfussballbund/sportsmanager2-stage
stage to prod
2025-11-17 17:16:48 +01:00
MarvinF 2e596dfcaa Merge branch 'sportsmanager2-prod' into sportsmanager2-stage 2025-11-17 17:16:28 +01:00
MarvinF 6c96125da4 Merge pull request #223 from Deutscher-Tischfussballbund/sportsmanager2-dev
dev to stage merge
2025-11-17 17:15:39 +01:00
MarvinF 01c7e5bb63 Merge branch 'sportsmanager2-stage' into sportsmanager2-dev 2025-11-17 17:15:00 +01:00
MarvinF 0116fd0860 Merge pull request #222 from Deutscher-Tischfussballbund/sportsmanager2-v230
Small design fixes
2025-11-16 20:17:39 +01:00
Jürgen Meyer ec61daa5c7 Kleine kosmetsiche Korrekturen 2025-11-15 11:28:53 +01:00
MarvinF e692edcb99 Merge pull request #220 from Deutscher-Tischfussballbund/sportsmanager2-issue217
Sportsmanager2 issue217
2025-11-14 11:25:37 +01:00
Marvin Flock c1196c9fd9 Merge branch 'sportsmanager2-dev' into sportsmanager2-issue217
# Conflicts:
#	src/structure/components/com_sportsmanager/database/update.php
2025-11-14 11:25:01 +01:00
MarvinF 4cc403536e Merge pull request #219 from Deutscher-Tischfussballbund/sportsmanager2-issue192
Playoffs optimization: KO games with game number and matchday title
2025-11-14 11:20:19 +01:00
Jürgen Meyer 1032af51f5 Kleine Korrektur 2025-11-14 07:28:36 +01:00
Jürgen Meyer 33d748303d Bei eintägiger Veranstaltung wird Datum in Formular Disziplin versteckt 2025-11-14 07:18:06 +01:00
Jürgen Meyer 331d4cfd85 Kleine Korrektur 2025-11-14 06:38:07 +01:00
Jürgen Meyer 6b1aa25c1b Comments in Review abgearbeitet 2025-11-14 06:33:11 +01:00
MarvinF 6b9f81f1c7 Merge pull request #221 from Deutscher-Tischfussballbund/sportsmanager2-issue218
MonsterDYP imports throw error
2025-11-13 21:52:06 +01:00
Jürgen Meyer e498981bc4 Datumsabgleich zwischen Turnier und Turnierdisziplin optimiert. 2025-11-13 17:13:43 +01:00
Jürgen Meyer 54d73a61e0 Hilfsausgabe gelöscht 2025-11-13 10:55:15 +01:00
Jürgen Meyer bd491add2e Unterdrückung der Speicherung von Turnierspielen bei Monstr-DYP 2025-11-13 10:51:11 +01:00
Jürgen Meyer 30c8ba9bfa Erweiterter Export für STFV 2025-11-12 11:56:35 +01:00
Jürgen Meyer 555f1de1b5 Verbandskürzel zu Einstellungen hinzugefügt 2025-11-12 11:17:21 +01:00
Jürgen Meyer a823e029d0 Live-Ticker angepasst 2025-11-10 16:32:19 +01:00
Jürgen Meyer 5627282a53 Vorbelegung Spielnummer entfernt. 2025-11-10 15:39:11 +01:00
Jürgen Meyer d73d081780 Ansicht Begegnungen im Frontend überarbeitet 2025-11-05 16:44:32 +01:00
Jürgen Meyer e3bd06257d Kleinen Programmierfehler beseitigt. 2025-11-05 12:43:32 +01:00
Jürgen Meyer 2a87c93c17 Anischt Begegnungen im admin-Bereich überarbeitet 2025-11-05 12:36:29 +01:00
Jürgen Meyer 5fafcace6b Überarbeitung Teamsport Spieltag erzeugen 2025-11-04 21:30:58 +01:00
MarvinF 12fd3a3ff0 Merge pull request #215 from Deutscher-Tischfussballbund/sportsmanager2-issue214
Add background color on hover for tournament trees
2025-11-04 18:47:30 +01:00
Jürgen Meyer 885d6a3191 Überarbeitung Begegnung hinzufügen bzw. editieren 2025-11-04 18:39:08 +01:00
MarvinF c50833ebe4 Merge pull request #216 from Deutscher-Tischfussballbund/sportsmanager2-issue213
Anzahl Kategorein auf 100 erhöht.
2025-11-04 00:05:18 +01:00
Jürgen Meyer 8242bd09cc Anzahl Kategorien Spielerstatistiken auf 100 erhöht 2025-11-03 15:32:14 +01:00
Jürgen Meyer 3886cc88d3 Anzahl Sortierreihenfolge Team Veranstaltungen auf 100 gesetzt. 2025-11-03 12:25:34 +01:00
Jürgen Meyer 96eff9f189 Anzahl Kategorein auf 100 erhöht. 2025-11-03 12:18:31 +01:00
Jürgen Meyer 1c2a0abcc2 Hintergrundfarbe bei Mouseover in Turnierbaum 2025-11-03 11:42:34 +01:00
MarvinF 24f4195403 Merge pull request #212 from Deutscher-Tischfussballbund/sportsmanager2-stage
stage to prod
2025-10-14 20:25:23 +02:00
MarvinF c1b7cb1e8c Merge pull request #211 from Deutscher-Tischfussballbund/sportsmanager2-dev
dev to stage merge
2025-10-14 20:23:35 +02:00
MarvinF 878cacd8cd Merge pull request #210 from Deutscher-Tischfussballbund/sportsmanager2-issue207
Sportsmanager2 issue207
2025-10-13 15:51:55 +02:00
MarvinF 5f830602ef Merge pull request #209 from Deutscher-Tischfussballbund/sportsmanager2-issue208
Vereinszuordnung Spieler korrigiert.
2025-10-12 23:31:46 +02:00
Jürgen Meyer eef105895b Spieleliste in Verein Details auskommentiert 2025-10-10 11:56:01 +02:00
Jürgen Meyer c0bdbb4bde Fehlerhaften Link Sortierung Vereine korrigiert. 2025-10-10 10:36:24 +02:00
Jürgen Meyer d05f3c5d7f Vereinszuordnung Spieler korrigiert. 2025-10-09 13:14:13 +02:00
MarvinF 0c334d897d Merge pull request #204 from Deutscher-Tischfussballbund/sportsmanager2-stage
downward merge stage to dev
2025-10-06 23:18:12 +02:00
MarvinF 79efed156b Merge pull request #203 from Deutscher-Tischfussballbund/sportsmanager2-prod
downward merge prod to stage
2025-10-06 23:17:24 +02:00
MarvinF 7984ea73aa Merge pull request #202 from Deutscher-Tischfussballbund/sportsmanager2-issue201
Zeileneinrückung in view.html.php korrigiert
2025-09-28 03:31:42 +02:00
Jürgen Meyer 7d07aee916 Zeileneinrückung in view.html.php korrigiert 2025-09-27 12:19:59 +02:00
MarvinF 43acc01861 Merge pull request #200 from Deutscher-Tischfussballbund/sportsmanager2-stage
stage to prod
2025-09-26 17:01:25 +02:00
MarvinF fa374986ca Merge pull request #199 from Deutscher-Tischfussballbund/sportsmanager2-dev
dev to stage
2025-09-26 17:00:10 +02:00
MarvinF aa68992d45 Merge pull request #197 from Deutscher-Tischfussballbund/fix/ranking_bug
website freezing up indefinitely
2025-09-26 16:52:53 +02:00
MarvinF 0d4381fc7f Merge pull request #84 from Deutscher-Tischfussballbund/feature/auto-email-missing-results
email reminder for tournament results
2025-09-26 16:51:54 +02:00
Marvin Flock 9b4eb13d52 feat: prevent email flood on new created tournaments when email reminder are turned on in later stages 2025-09-25 23:43:11 +02:00
Marvin Flock cfe4f871f7 Merge branch 'sportsmanager2-dev' into feature/auto-email-missing-results
# Conflicts:
#	src/structure/components/com_sportsmanager/database/update.php
#	src/structure/components/com_sportsmanager/views/sportsmanager/view_admin.php
2025-09-25 18:16:42 +02:00
Marvin Flock bbe786a075 fix: update regarding code review 2025-09-25 18:13:58 +02:00
Marvin Flock 64ce39a59f feat: add email reminder functionality 2025-09-25 02:53:50 +02:00
Jürgen Meyer d0258d967d Optimierung Inserts fuer Aktualisierung Ranglisten 2025-09-24 09:44:11 +02:00
MarvinF bf99d459fb Merge pull request #189 from Deutscher-Tischfussballbund/fix/183_long-discipline-names-break-layout
Long list of disciplines break tournament view
2025-09-23 20:18:30 +02:00
MarvinF bc91be9382 Merge pull request #195 from Deutscher-Tischfussballbund/sportsmanager2-issue193
change styling/sizing of tables
2025-09-23 20:14:24 +02:00
MarvinF 5c09a35485 Merge pull request #196 from Deutscher-Tischfussballbund/sportsmanager2-issue194
date formats break in group game import
2025-09-23 20:12:18 +02:00
MarvinF f14d5a1e8c Merge pull request #191 from Deutscher-Tischfussballbund/sportsmanager2-issue190
some live results will show up twice
2025-09-23 20:04:18 +02:00
MarvinF 26fd06afef Update view.html.php 2025-09-23 19:48:03 +02:00
Marvin Flock 1f147081e1 fix: add removed part back to sportsmanager 2025-09-23 18:18:24 +02:00
Jürgen Meyer 4f89abc630 Leerzeilen in Importdatei werden ignoriert. 2025-09-22 11:34:27 +02:00
Jürgen Meyer d84c2eefcf Kleine Korrektur 2025-09-22 06:37:27 +02:00
Jürgen Meyer ba73036b02 Import Gruppenspiele optimiert (issue #194) 2025-09-22 06:32:08 +02:00
Jürgen Meyer 29a108d88c Style Manuelle Tabelle an andere Tabellen angepasst (issue #193) 2025-09-22 04:52:40 +02:00
Jürgen Meyer 11e42c2374 tfvhh durch #_ ersetzt 2025-09-18 17:10:24 +02:00
Jürgen Meyer 56776c01f0 Doppelte Live-Ergebnisse eines Spiels (issue #190) 2025-09-18 16:54:22 +02:00
Marvin Flock 6187456e31 Merge branch 'sportsmanager2-dev' into feature/auto-email-missing-results
# Conflicts:
#	src/structure/components/com_sportsmanager/sportsmanager.php
2025-09-17 21:42:29 +02:00
Marvin Flock 49e3bde816 fix: display disciplines under each other in admin and public tournament view 2025-09-17 21:23:51 +02:00
MarvinF 15347b3ab7 Merge pull request #181 from Deutscher-Tischfussballbund/sportsmanager2-issue180
Überarbeitung Pokalauslosung (issue #180)
2025-09-17 20:37:19 +02:00
MarvinF 3363ec1a77 Merge pull request #182 from Deutscher-Tischfussballbund/sportsmanager2-issue178
Überarbeitung Anzeige Vereinsliste in Frontend (issue #178)
2025-09-17 20:36:49 +02:00
MarvinF 751c1919d4 Merge pull request #188 from Deutscher-Tischfussballbund/sportsmanager2-issue179
Initialisierung neuer Einstellungen (issue #179)
2025-09-17 20:36:08 +02:00
Jürgen Meyer 9babcec39e Passive und inaktive Spieler werden im oeffentlichen Bereich nicht mehr gezeigt (issue #150) 2025-09-17 19:17:30 +02:00
Jürgen Meyer e8c4ab2d1d Korrektur Dropdown Spielorte 2025-09-17 10:41:59 +02:00
Jürgen Meyer 53ff7ab566 Initialisierung neuer Einstellungen 2025-09-17 08:54:22 +02:00
Jürgen Meyer ac8bafaa9e Label für show_member_count angepasst 2025-09-17 08:08:36 +02:00
MarvinF 4f6edb0acb Merge pull request #187 from Deutscher-Tischfussballbund/sportsmanager2-stage
stage to prod
2025-09-16 20:37:44 +02:00
MarvinF 822708356b Merge pull request #186 from Deutscher-Tischfussballbund/sportsmanager2-dev
dev to stage
2025-09-16 20:36:49 +02:00
MarvinF 7c302d4ded Merge pull request #185 from Deutscher-Tischfussballbund/fix/live-encounters
live encounters missing in live ticker
2025-09-16 20:35:45 +02:00
Marvin Flock 1e63f2b542 fix: add live encounters to live ticker 2025-09-16 19:50:34 +02:00
Jürgen Meyer 1d9aa13300 Überarbeitung Anzeige Vereinsliste in Frontend (issue #178) 2025-09-12 10:56:25 +02:00
Jürgen Meyer ea85f102a5 Änderungen nach issue #180 2025-09-11 10:22:52 +02:00
MarvinF ebfd6ee4e9 Merge pull request #177 from Deutscher-Tischfussballbund/sportsmanager2-stage
stage to prod
2025-09-04 22:24:49 +02:00
MarvinF a503325ca4 Merge pull request #176 from Deutscher-Tischfussballbund/sportsmanager2-dev
dev to stage
2025-09-04 22:23:53 +02:00
MarvinF 218dc138fb Update build_release.yml 2025-09-04 22:22:18 +02:00
MarvinF eed53841cf Merge pull request #175 from Deutscher-Tischfussballbund/sportsmanager2-stage
stage to prod
2025-09-04 22:05:16 +02:00
MarvinF dbc79096d4 Merge pull request #174 from Deutscher-Tischfussballbund/sportsmanager2-dev
dev to stage
2025-09-04 22:04:25 +02:00
Marvin Flock 3e93e27f72 chore: add notification to teams 2025-09-04 22:02:39 +02:00
MarvinF 8c022f831a Merge pull request #173 from Deutscher-Tischfussballbund/sportsmanager2-stage
stage to prod
2025-09-04 21:56:02 +02:00
MarvinF 2ab429f949 Merge pull request #172 from Deutscher-Tischfussballbund/sportsmanager2-dev
dev to stage
2025-09-04 21:55:00 +02:00
MarvinF 6e53017158 Create teams_integration.yml 2025-09-04 21:40:02 +02:00
MarvinF 8764b0a337 Merge pull request #171 from Deutscher-Tischfussballbund/sportsmanager2-stage
stage to prod
2025-09-04 21:13:28 +02:00
MarvinF 07611a0087 Merge pull request #170 from Deutscher-Tischfussballbund/sportsmanager2-dev
dev to stage
2025-09-04 21:11:56 +02:00
MarvinF bc57da1eff Merge pull request #169 from Deutscher-Tischfussballbund/sportsmanager2-issue165
issue #165 gefixt. Tabelle wird falsch gespeichert bei Direkter Vergl…
2025-09-04 21:08:11 +02:00
MarvinF 1c380928f0 Merge branch 'sportsmanager2-dev' into sportsmanager2-issue165 2025-09-04 21:07:37 +02:00
Jürgen Meyer 1ddcfd87db issue #165 gefixt. Tabelle wird falsch gespeichert bei Direkter Vergleich. 2025-09-03 02:51:40 +02:00
Marvin Flock cb1493954f chore: update release date in manifest file on release build 2025-09-02 23:36:20 +02:00
MarvinF 9637f2a92a Merge pull request #168 from Deutscher-Tischfussballbund/sportsmanager2-issue166
issue #166 gefixt (Filter Land in Termine)
2025-09-02 23:21:33 +02:00
MarvinF a977343544 Merge branch 'sportsmanager2-dev' into sportsmanager2-issue166 2025-09-02 23:19:17 +02:00
MarvinF 1f5593d3e8 Merge pull request #167 from Deutscher-Tischfussballbund/sportsmanager2-issue164
Issue #164 - Fehler Export Spielberichte
2025-09-02 23:15:54 +02:00
Jürgen Meyer fff5f97971 issue #166 gefixt (Filter Land in Termine) 2025-09-02 16:01:09 +02:00
Jürgen Meyer 546b9c3af9 Issue #164 - Fehler Export Spielberichte 2025-09-02 13:23:54 +02:00
MarvinF 4ad93a8cf6 Merge pull request #162 from Deutscher-Tischfussballbund/sportsmanager2-stage
stage 2 prod pr
2025-09-02 01:48:44 +02:00
MarvinF 1b5e070026 Merge pull request #161 from Deutscher-Tischfussballbund/sportsmanager2-dev
dev 2 stage pr
2025-09-02 01:47:42 +02:00
MarvinF 114eba3a9c Merge pull request #160 from Deutscher-Tischfussballbund/temp_releasenotes
resize parameters of images are not working
2025-09-02 01:45:51 +02:00
Marvin Flock 9fb592ccbc chore: dummy commit for release notes 2025-09-02 01:44:07 +02:00
MarvinF f76ab18d4b Merge pull request #159 from Deutscher-Tischfussballbund/temp_releasenotes
optimize club details page for mobile
2025-09-02 01:43:08 +02:00
Marvin Flock 02e27d7747 chore: dummy commit for release notes 2025-09-02 01:41:00 +02:00
MarvinF 5375950049 Merge pull request #158 from Deutscher-Tischfussballbund/temp_releasenotes
locations can be reused for event creation
2025-09-02 01:39:52 +02:00
Marvin Flock 050b246fef chore: dummy commit for release notes 2025-09-02 01:38:18 +02:00
MarvinF 55b8cc52c7 Merge pull request #157 from Deutscher-Tischfussballbund/temp_releasenotes
improved the list of clubs with sorting and more configuration options
2025-09-02 01:37:19 +02:00
Marvin Flock aad70e5ab2 chore: dummy commit for release notes 2025-09-02 01:32:45 +02:00
MarvinF 37a98edbad Merge pull request #156 from Deutscher-Tischfussballbund/temp_releasenotes
while generating group games, the second encounter for two teams was ordered the same (home/guest) as the first encounter
2025-09-02 01:28:06 +02:00
Marvin Flock 228f68f90c chore: dummy commit for release notes 2025-09-02 01:22:03 +02:00
MarvinF 4f9df2ce89 Merge pull request #155 from Deutscher-Tischfussballbund/temp_releasenotes
team dropdown while generating group games shows a team twice
2025-09-02 01:20:56 +02:00
Marvin Flock 1a364a4e30 chore: dummy commit for release notes 2025-09-02 01:16:26 +02:00
MarvinF f3bf69c9ca Merge pull request #154 from Deutscher-Tischfussballbund/temp_releasenotes
When using direct comparison, if there are no encounters yet, an error is thrown
2025-09-02 01:13:58 +02:00
Marvin Flock cc81b97569 chore: dummy commit for release notes 2025-09-02 01:09:54 +02:00
MarvinF aaa5aaac1d Merge pull request #153 from Deutscher-Tischfussballbund/temp_releasenotes
Import options improvement: calendar week, matchday title, match number
2025-09-02 01:08:09 +02:00
Marvin Flock f9f9e58881 chore: dummy commit for release notes 2025-09-02 01:04:53 +02:00
MarvinF 671dfb7e8d Merge pull request #145 from Deutscher-Tischfussballbund/sportsmanager2-issue052
Änderungen für issue #52, issue #131 und issue #143
2025-09-02 00:23:13 +02:00
Marvin Flock 3ae15e2e70 Merge branch 'sportsmanager2-dev' into sportsmanager2-issue052
# Conflicts:
#	src/structure/components/com_sportsmanager/admin.php
#	src/structure/components/com_sportsmanager/database/update.php
#	src/structure/components/com_sportsmanager/views/sportsmanager/view.html.php
#	src/structure/components/com_sportsmanager/views/sportsmanager/view_admin.php
#	src/structure/language/de-DE/de-DE.com_sportsmanager.ini
#	src/structure/language/en-GB/en-GB.com_sportsmanager.ini
#	src/structure/script.php
2025-09-02 00:21:11 +02:00
MarvinF ee0c19efe3 Merge pull request #147 from Deutscher-Tischfussballbund/sportsmanager2-issue125
Änderungen für issue #125, issue #116 und issue #117
2025-09-02 00:06:41 +02:00
MarvinF 87c9ec82fd Merge branch 'sportsmanager2-dev' into sportsmanager2-issue125 2025-09-02 00:06:05 +02:00
Jürgen Meyer 71d8460cd6 Entscheidung ob Verband angezeigt wird liegt allein bei Web Admin. 2025-09-01 20:56:57 +02:00
Jürgen Meyer d97713e73d Fehler bei Erstellung Spieleplen mit 4 Mannschaften mit Setzliste behoben. 2025-09-01 20:34:14 +02:00
Marvin Flock b16638ed47 fix: code review changes 2025-09-01 18:02:20 +02:00
MarvinF b511badad2 Merge pull request #144 from Deutscher-Tischfussballbund/fix/bayern-missing-argument
missing parameter in player details with ELO runs into error
2025-08-30 13:18:19 +02:00
Jürgen Meyer 42ff1155f3 Probleme mit Sonderzeichen in Turnierbaum gefixt. 2025-08-29 16:28:06 +02:00
Jürgen Meyer 17a9bfdd2e issue #151 2025-08-29 12:00:08 +02:00
Jürgen Meyer 3aa20036dc Issue #152 Heimrechtwechsel in Rückrunde 2025-08-29 11:22:13 +02:00
Jürgen Meyer fc1ce3bdd6 Alle offenen Mängel beseitigt. 2025-08-29 10:34:31 +02:00
Marvin Flock cf52c718e8 chore: some review fixes 2025-08-28 22:24:13 +02:00
Marvin Flock 8b29c8eba6 chore: some review fixes 2025-08-28 22:19:11 +02:00
Marvin Flock e9460ef8cc Merge branch 'sportsmanager2-dev' into sportsmanager2-issue052
# Conflicts:
#	src/structure/components/com_sportsmanager/admin.php
#	src/structure/components/com_sportsmanager/sportsmanager.php
#	src/structure/components/com_sportsmanager/views/sportsmanager/view_admin.php
2025-08-28 21:58:43 +02:00
Marvin Flock 3ac38abb92 chore: some review fixes 2025-08-28 21:42:52 +02:00
Marvin Flock 19ff8ebd08 chore: some review fixes 2025-08-28 21:20:20 +02:00
Marvin Flock 3ab2ae9206 chore: some review fixes 2025-08-28 21:18:23 +02:00
Marvin Flock 4820f82253 chore: some review fixes 2025-08-28 21:16:34 +02:00
Marvin Flock 0a06321a72 chore: remove unused style tag 2025-08-28 20:31:42 +02:00
Marvin Flock 60232d95b3 chore: remove empty class attributes, fix label for input 2025-08-28 20:18:52 +02:00
Marvin Flock f27b87a0d8 chore: add return types to methods 2025-08-28 20:01:58 +02:00
Jürgen Meyer bc6c44e82a Eingeschränkte Spieler erscheinen jetzt auch in Vereinsdetails. 2025-08-27 06:41:25 +02:00
Jürgen Meyer 01ac642de5 Passive Vereinsmitglieder werden in Vereinsdetails nicht mehr angezeigt. 2025-08-26 06:27:43 +02:00
Jürgen Meyer 825a072ace Änderungen zu issue #149 (Resize in yoothemeBild) 2025-08-19 10:07:12 +02:00
Jürgen Meyer 1aa9b924d7 Noch ein paar kleine Änderungen 2025-08-17 18:11:46 +02:00
Jürgen Meyer 4a96d9f0a9 Fehler in script.php und update.php behoben 2025-08-16 18:05:35 +02:00
Jürgen Meyer 7a59020e64 Änderungen für issue #125, issue #116 und issue #117 2025-08-16 17:48:14 +02:00
Jürgen Meyer 3f816235c8 Änderungen für issue #52, issue #131 und issue #143 2025-08-15 13:54:04 +02:00
Marvin Flock 4f264ed72d fix: add previously deleted parameter back into sprintf again with reference to $spieler 2025-08-14 22:34:33 +02:00
MarvinF a6f302cb63 Merge pull request #142 from Deutscher-Tischfussballbund/chore/automatic-version-update-in-manifest-xml
chore: update manifest xml sportsmanager version with pipeline
2025-08-12 20:44:48 +02:00
Marvin Flock 22c50e688a chore: update manifest xml sportsmanager version with pipeline 2025-08-12 01:44:13 +02:00
MarvinF fbd7e05abb Merge pull request #141 from Deutscher-Tischfussballbund/chore/add-release-process-to-readme
chore: update readme with more details to release process
2025-08-12 01:18:15 +02:00
MarvinF a36edeedca Merge branch 'sportsmanager2-dev' into chore/add-release-process-to-readme 2025-08-12 01:17:56 +02:00
Marvin Flock ea9fd038f3 chore: update readme with more details to release process 2025-08-12 01:17:00 +02:00
MarvinF e55d925034 Merge pull request #140 from Deutscher-Tischfussballbund/chore/add-release-process-to-readme
chore: add release process to readme
2025-08-12 01:14:05 +02:00
Marvin Flock 48d0bca1c6 chore: add release process to readme 2025-08-12 01:12:57 +02:00
Tim 56679669c0 feat: extend tournament result upload window to 14 days for uploaders 2025-06-24 13:58:02 +00:00
Tim 1e8a7a3ae0 chore: add migration script for tournament reminder fields 2025-06-24 13:53:11 +00:00
Tim 269af499c8 feat: add auto-email reminder script for missing tournament results 2025-06-24 13:48:13 +00:00
16 changed files with 7766 additions and 5575 deletions
+28
View File
@@ -28,6 +28,9 @@ jobs:
- name: Get version from git tag - name: Get version from git tag
run: echo "VERSION=${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV run: echo "VERSION=${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV
- name: Set DATE
run: echo "DATE=$(date +'%Y-%m-%d')" >> $GITHUB_ENV
- name: Update version.php - name: Update version.php
run: | run: |
echo "<?php" > src/structure/components/com_sportsmanager/util/version.php echo "<?php" > src/structure/components/com_sportsmanager/util/version.php
@@ -36,6 +39,10 @@ jobs:
echo " 'version' => '${{ env.VERSION }}'," >> src/structure/components/com_sportsmanager/util/version.php echo " 'version' => '${{ env.VERSION }}'," >> src/structure/components/com_sportsmanager/util/version.php
echo " 'date' => '$(date +%F)'," >> src/structure/components/com_sportsmanager/util/version.php echo " 'date' => '$(date +%F)'," >> src/structure/components/com_sportsmanager/util/version.php
echo "];" >> src/structure/components/com_sportsmanager/util/version.php echo "];" >> src/structure/components/com_sportsmanager/util/version.php
echo "Updating version to $VERSION in sportsmanager.xml"
sed -i "s#<version>.*</version>#<version>$VERSION</version>#" src/structure/sportsmanager.xml
echo "Updating Date to $DATE in sportsmanager.xml"
sed -i "s#<creationDate>.*</creationDate>#<creationDate>$DATE</creationDate>#" src/structure/sportsmanager.xml
- name: Generate release notes - name: Generate release notes
id: release_notes_extension id: release_notes_extension
@@ -91,3 +98,24 @@ jobs:
else else
echo "No draft releases found" echo "No draft releases found"
fi fi
- name: Send notification to Teams
run: |
curl -H 'Content-Type: application/json' \
-d "{
\"@type\": \"MessageCard\",
\"@context\": \"http://schema.org/extensions\",
\"summary\": \"New Release\",
\"themeColor\": \"0076D7\",
\"title\": \"🚀 New Release: ${{ github.ref_name }}\",
\"sections\": [{
\"activityTitle\": \"Repository: ${{ github.repository }}\",
\"text\": \"${{ steps.release_notes_github.outputs.body }}\"
}],
\"potentialAction\": [{
\"@type\": \"OpenUri\",
\"name\": \"View Release\",
\"targets\": [{ \"os\": \"default\", \"uri\": \"https://github.com/${{ github.repository }}/releases/tag/${{ github.ref_name }}\" }]
}]
}" \
${{ secrets.TEAMS_WEBHOOK_URL }}
+22
View File
@@ -83,3 +83,25 @@ JConfig: `./data/joomla_data/configuration.php`
7. Click on "Start Listening for PHP Debug Connections" in the top row of intellij 7. Click on "Start Listening for PHP Debug Connections" in the top row of intellij
8. (Not sure if optional) Install a browser extension by Jetbrains 8. (Not sure if optional) Install a browser extension by Jetbrains
https://chromewebstore.google.com/detail/xdebug-helper-by-jetbrain/aoelhdemabeimdhedkidlnbkfhnhgnhm https://chromewebstore.google.com/detail/xdebug-helper-by-jetbrain/aoelhdemabeimdhedkidlnbkfhnhgnhm
### How to release
Hint: for technical details regarding the release process have a look into .github/...
To create a release these steps need to be followed
1. make sure all needed code changes are merged from dev -> stage -> prod, since releases may only be build on prod branch
2. give pull requests meaningful names and label them enhancement/bug/chore since labels and names are used for release note generation
Hint: if a specific pull request should be ignored, add the label changelog-ignore
3. tag a commit (recommended is the latest merge on prod). The pipeline is listening for any tag fitting `v[0-9]+.[0-9]+.[0-9]+`
```shell
git tag -a v1.2.3 1a2b3c4 -m "Release version 1.2.3"
```
4. push the tag
```shell
git push origin --tags
```
5. the tag push will trigger the pipeline, and it will create the release and store in GitHub
A release can be created again anytime by deleting the release from GitHub, deleting the tag (from GitHub and additionally from git)
and repeating step 3 and 4
Further: merges from dev to stage and from stage to prod can only be done by creating pull requests. These pull requests will be automatically labeled as changelog-ignore
File diff suppressed because it is too large Load Diff
@@ -5245,6 +5245,175 @@ function updateDatabase(): void
} }
} }
if ($datenbank_version < 105) {
$query = "ALTER TABLE `#__sportsmanager_begegnung` ADD `spieltag_titel` VARCHAR(32) NOT NULL DEFAULT '' AFTER `spieltag`;";
$db->setQuery($query);
if (!$db->execute()) {
die($db->stderr(true));
}
$query = "ALTER TABLE `#__sportsmanager_veranstaltung` ADD `spieltag_titel_zeigen` INT(4) NOT NULL DEFAULT '0' AFTER `unterteilung`;";
$db->setQuery($query);
if (!$db->execute()) {
die($db->stderr(true));
}
$query = "ALTER TABLE `#__sportsmanager_team` ADD `teamname_kurz` VARCHAR(24) NOT NULL DEFAULT '' AFTER `teamname`;";
$db->setQuery($query);
if (!$db->execute()) {
die($db->stderr(true));
}
$query = "UPDATE #__sportsmanager_einstellungen"
. "\n SET wert = '105'"
. "\n WHERE name = 'datenbank_version'";
$db->setQuery($query);
if (!$db->execute()) {
die($db->stderr(true));
}
}
if ($datenbank_version < 106) {
$query = "ALTER TABLE `#__sportsmanager_verein` ADD `verstecken` INT(4) NOT NULL DEFAULT '0' AFTER `ausgetreten`;";
$db->setQuery($query);
if (!$db->execute()) {
die($db->stderr(true));
}
$query = "UPDATE #__sportsmanager_einstellungen"
. "\n SET wert = '106'"
. "\n WHERE name = 'datenbank_version'";
$db->setQuery($query);
if (!$db->execute()) {
die($db->stderr(true));
}
}
if ($datenbank_version < 107) {
$query = "INSERT IGNORE #__sportsmanager_einstellungen SET name = 'anzahl_mitglieder_zeigen', wert = '0';";
$db->setQuery( $query );
if (!$db->execute()) { die($db->stderr(true)); }
$query = "INSERT IGNORE #__sportsmanager_einstellungen SET name = 'verband_anzeigen', wert = '1';";
$db->setQuery( $query );
if (!$db->execute()) { die($db->stderr(true)); }
$query = "INSERT IGNORE #__sportsmanager_einstellungen SET name = 'turnierbaum_zeigen', wert = '0';";
$db->setQuery( $query );
if (!$db->execute()) { die($db->stderr(true)); }
$query = "INSERT IGNORE #__sportsmanager_einstellungen SET name = 'spalte_mitglieder_zeigen', wert = '1';";
$db->setQuery( $query );
if (!$db->execute()) { die($db->stderr(true)); }
$query = "UPDATE #__sportsmanager_einstellungen"
. "\n SET wert = '107'"
. "\n WHERE name = 'datenbank_version'";
$db->setQuery($query);
if (!$db->execute()) {
die($db->stderr(true));
}
}
if ($datenbank_version < 108) {
$query = "DELETE t1 FROM #__sportsmanager_unbestaetigtes_ergebnis t1"
. "\n INNER JOIN #__sportsmanager_unbestaetigtes_ergebnis t2"
. "\n ON t1.begegnung_id = t2.begegnung_id"
. "\n AND t1.unbestaetigtes_ergebnis_id < t2.unbestaetigtes_ergebnis_id;";
$db->setQuery( $query );
if (!$db->execute()) { die($db->stderr(true)); }
$query = " ALTER TABLE `#__sportsmanager_unbestaetigtes_ergebnis`"
. "\n DROP INDEX `begegnung_id`, ADD UNIQUE `begegnung_id` (`begegnung_id`) USING BTREE;";
$db->setQuery( $query );
if (!$db->execute()) { die($db->stderr(true)); }
$query = "UPDATE #__sportsmanager_einstellungen"
. "\n SET wert = '108'"
. "\n WHERE name = 'datenbank_version'";
$db->setQuery($query);
if (!$db->execute()) {
die($db->stderr(true));
}
}
if ($datenbank_version < 109) {
$query = "ALTER TABLE #__sportsmanager_turnier ADD COLUMN `reminder_count` TINYINT DEFAULT '0'";
$db->setQuery($query);
if (!$db->execute()) { die($db->stderr(true)); }
// set all existing tournaments to 3 to prevent email flooding
$query = "UPDATE #__sportsmanager_turnier SET `reminder_count` = '3'";
$db->setQuery($query);
if (!$db->execute()) { die($db->stderr(true)); }
// 3: prevent email flood for past tournaments
$query = "INSERT IGNORE #__sportsmanager_einstellungen SET name = 'enable_email_reminders', wert = '0';";
$db->setQuery( $query );
if (!$db->execute()) { die($db->stderr(true)); }
$query = "UPDATE #__sportsmanager_einstellungen"
. "\n SET wert = '109'"
. "\n WHERE name = 'datenbank_version'";
$db->setQuery($query);
if (!$db->execute()) {
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 ($datenbank_version < 111) {
$query = "INSERT IGNORE #__sportsmanager_einstellungen SET name = 'verbands_kuerzel', wert = 'tbe.';";
$db->setQuery( $query );
if (!$db->execute()) { die($db->stderr(true)); }
$query = "UPDATE #__sportsmanager_einstellungen"
. "\n SET wert = '111'"
. "\n WHERE name = 'datenbank_version'";
$db->setQuery($query);
if (!$db->execute()) {
die($db->stderr(true));
}
}
if ($datenbank_version < 112) {
// Korrektur Startuhrzeit in sportsmanager_turnierdisziplin bei eintägigen Veranstaltungen
$query = "UPDATE #__sportsmanager_turnierdisziplin td"
. "\n JOIN #__sportsmanager_turnier t ON td.turnier_id = t.turnier_id"
. "\n SET td.beginn = CONCAT(t.erster_tag, ' ', TIME(td.beginn))"
. "\n WHERE t.erster_tag = t.letzter_tag;";
$db->setQuery($query);
if (!$db->execute()) {
die($db->stderr(true));
}
$query = "UPDATE #__sportsmanager_einstellungen"
. "\n SET wert = '112'"
. "\n WHERE name = 'datenbank_version'";
$db->setQuery($query);
if (!$db->execute()) {
die($db->stderr(true));
}
}
if ($termin_aktionen_email_setzen) { if ($termin_aktionen_email_setzen) {
$query = "SELECT aktion_user_id, termin_aktion_id" $query = "SELECT aktion_user_id, termin_aktion_id"
. "\n FROM #__sportsmanager_termin_aktion"; . "\n FROM #__sportsmanager_termin_aktion";
@@ -42,11 +42,14 @@ require_once JPATH_SITE . '/components/com_sportsmanager/views/sportsmanager/vie
require_once JPATH_SITE . '/components/com_sportsmanager/views/sportsmanager/view_admin.php'; require_once JPATH_SITE . '/components/com_sportsmanager/views/sportsmanager/view_admin.php';
require_once JPATH_SITE . '/components/com_sportsmanager/views/sportsmanager/view_ticker.php'; require_once JPATH_SITE . '/components/com_sportsmanager/views/sportsmanager/view_ticker.php';
require_once JPATH_SITE . '/components/com_sportsmanager/util/image.php'; require_once JPATH_SITE . '/components/com_sportsmanager/util/image.php';
require_once JPATH_SITE . '/components/com_sportsmanager/util/email.php';
require_once JPATH_SITE . '/components/com_sportsmanager/database/update.php'; // will also include init.php and util.php require_once JPATH_SITE . '/components/com_sportsmanager/database/update.php'; // will also include init.php and util.php
initDatabase(); initDatabase();
updateDatabase(); updateDatabase();
sentEmailReminders();
if (isset($_POST['filter_saison_id'])) if (isset($_POST['filter_saison_id']))
setcookie('sportsmanager_filter_saison_id', $_POST['filter_saison_id'], time() + (60 * 60 * 24)); setcookie('sportsmanager_filter_saison_id', $_POST['filter_saison_id'], time() + (60 * 60 * 24));
else if (isset($_REQUEST['filter_saison_id'])) else if (isset($_REQUEST['filter_saison_id']))
@@ -458,9 +461,18 @@ if ($task == "spielerbild") {
case 'admin_begegnungen_runde_erzeugen_form': case 'admin_begegnungen_runde_erzeugen_form':
adminBegegnungenRundeErzeugenForm(); adminBegegnungenRundeErzeugenForm();
break; break;
case 'admin_begegnungen_pokalrunde_auslosen_form':
adminBegegnungenPokalrundeAuslosenForm();
break;
case 'admin_begegnungen_runde_erzeugen': case 'admin_begegnungen_runde_erzeugen':
adminBegegnungenRundeErzeugen(); adminBegegnungenRundeErzeugen();
break; break;
case 'admin_begegnungen_pokalrunde_auslosen':
adminBegegnungenPokalrundeAuslosen();
break;
case 'admin_begegnungen_pokalrunde_setzliste':
adminBegegnungenPokalrundeSetzliste();
break;
case 'admin_begegnungen_alle_entfernen': case 'admin_begegnungen_alle_entfernen':
adminBegegnungenAlleEntfernen(); adminBegegnungenAlleEntfernen();
break; break;
@@ -724,8 +736,12 @@ if ($task == "spielerbild") {
break; break;
case 'verein_begegnungen_ical': case 'verein_begegnungen_ical':
vereinBegegnungeniCal(); vereinBegegnungeniCal();
break;
case 'sort_by_vereinsname':
vereine("vereinsname");
break;
default: default:
vereine(); vereine("mitglieder");
break; break;
} }
} else if ($content == "turniervoranmeldungen") { } else if ($content == "turniervoranmeldungen") {
@@ -1173,7 +1189,7 @@ function benutzerVeranstaltungModerator($veranstaltung_id = NULL): bool
return false; return false;
$user_id = Factory::getContainer()->get(SiteApplication::class)->getIdentity()->id; $user_id = Factory::getContainer()->get(SiteApplication::class)->getIdentity()->id;
$query = "SELECT * FROM #__sportsmanager_berechtigt_fuer_veranstaltung INNER JOIN #__sportsmanager_veranstaltung ON veranstaltung_id = berechtigt_veranstaltung_id WHERE berechtigt_user_id = $user_id AND DATEDIFF(letzter_tag, NOW()) >= -14"; $query = "SELECT * FROM #__sportsmanager_berechtigt_fuer_veranstaltung INNER JOIN #__sportsmanager_veranstaltung ON veranstaltung_id = berechtigt_veranstaltung_id WHERE berechtigt_user_id = $user_id AND DATEDIFF(letzter_tag, NOW()) >= -21";
if ($veranstaltung_id != NULL) if ($veranstaltung_id != NULL)
$query .= " AND berechtigt_veranstaltung_id = $veranstaltung_id"; $query .= " AND berechtigt_veranstaltung_id = $veranstaltung_id";
$rows = loadObjectList($db, $query); $rows = loadObjectList($db, $query);
@@ -1191,7 +1207,7 @@ function benutzerVeranstaltungIdsModerator(): array
return array(); return array();
$user_id = Factory::getContainer()->get(SiteApplication::class)->getIdentity()->id; $user_id = Factory::getContainer()->get(SiteApplication::class)->getIdentity()->id;
$query = "SELECT DISTINCT veranstaltung_id FROM #__sportsmanager_berechtigt_fuer_veranstaltung INNER JOIN #__sportsmanager_veranstaltung ON veranstaltung_id = berechtigt_veranstaltung_id WHERE berechtigt_user_id = $user_id AND DATEDIFF(letzter_tag, NOW()) >= -14"; $query = "SELECT DISTINCT veranstaltung_id FROM #__sportsmanager_berechtigt_fuer_veranstaltung INNER JOIN #__sportsmanager_veranstaltung ON veranstaltung_id = berechtigt_veranstaltung_id WHERE berechtigt_user_id = $user_id AND DATEDIFF(letzter_tag, NOW()) >= -21";
$rows = loadObjectList($db, $query); $rows = loadObjectList($db, $query);
$ids = array(); $ids = array();
@@ -1209,7 +1225,7 @@ function benutzerTurnierModerator($turnier_id = NULL): bool
return false; return false;
$user_id = Factory::getContainer()->get(SiteApplication::class)->getIdentity()->id; $user_id = Factory::getContainer()->get(SiteApplication::class)->getIdentity()->id;
$query = "SELECT * FROM #__sportsmanager_berechtigt_fuer_turnier INNER JOIN #__sportsmanager_turnier ON turnier_id = berechtigt_turnier_id WHERE berechtigt_user_id = $user_id AND DATEDIFF(letzter_tag, NOW()) >= -14"; $query = "SELECT * FROM #__sportsmanager_berechtigt_fuer_turnier INNER JOIN #__sportsmanager_turnier ON turnier_id = berechtigt_turnier_id WHERE berechtigt_user_id = $user_id AND DATEDIFF(letzter_tag, NOW()) >= -21";
if ($turnier_id != NULL) if ($turnier_id != NULL)
$query .= " AND berechtigt_turnier_id = $turnier_id"; $query .= " AND berechtigt_turnier_id = $turnier_id";
$rows = loadObjectList($db, $query); $rows = loadObjectList($db, $query);
@@ -1372,6 +1388,7 @@ function aktuelleBegegnungen($pineingabe = FALSE): void
HTML_sportsmanager::aktuelleBegegnungenHeader($params->get('titel'), $params->get('beschreibung'), $ticker_anzeigen, $pineingabe_anzeigen); HTML_sportsmanager::aktuelleBegegnungenHeader($params->get('titel'), $params->get('beschreibung'), $ticker_anzeigen, $pineingabe_anzeigen);
if ($praesentation == 0) { if ($praesentation == 0) {
begegnungenAnzeigen(NULL, NULL, NULL, 7, true, true, false, Text::_('COM_SPORTSMANAGER_RUNNING_MATCHES'), true, true);
begegnungenAnzeigen(NULL, NULL, NULL, 7, false, true, true, Text::_('COM_SPORTSMANAGER_MATCHES_THE_LAST_7_DAYS'), true, true); begegnungenAnzeigen(NULL, NULL, NULL, 7, false, true, true, Text::_('COM_SPORTSMANAGER_MATCHES_THE_LAST_7_DAYS'), true, true);
begegnungenAnzeigen(NULL, NULL, NULL, 14, true, false, true, Text::_('COM_SPORTSMANAGER_MATCHES_THE_NEXT_14_DAYS'), false, true); begegnungenAnzeigen(NULL, NULL, NULL, 14, true, false, true, Text::_('COM_SPORTSMANAGER_MATCHES_THE_NEXT_14_DAYS'), false, true);
administrationFooter(); administrationFooter();
@@ -1457,7 +1474,7 @@ function veranstaltungen(): void
'begegnungen' => begegnungenAnzeigen($veranstaltung, NULL, NULL, 0), 'begegnungen' => begegnungenAnzeigen($veranstaltung, NULL, NULL, 0),
'tabelle' => NULL 'tabelle' => NULL
]; ];
if ($veranstaltung->tabellenwertung != 0) { if (!in_array($veranstaltung->tabellenwertung, [0, -1, -3, -4]) || !$veranstaltung->platzierung_offen) {
$spieltag = null; // TODO: spieltag was not defined before, not sure what it should be $spieltag = null; // TODO: spieltag was not defined before, not sure what it should be
$competition['tabelle'] = tabelle($veranstaltung, $spieltag, true); $competition['tabelle'] = tabelle($veranstaltung, $spieltag, true);
} }
@@ -1471,7 +1488,7 @@ function veranstaltungen(): void
foreach ($veranstaltungen as $veranstaltung) { foreach ($veranstaltungen as $veranstaltung) {
if ($praesentation == 1 || $praesentation == 2) if ($praesentation == 1 || $praesentation == 2)
echo "<td>\r\n"; echo "<td>\r\n";
if ($veranstaltung->tabellenwertung != 0 && ($veranstaltung->tabellenwertung != -1 || !$veranstaltung->platzierung_offen)) { if (!in_array($veranstaltung->tabellenwertung, [0, -1, -3, -4]) || !$veranstaltung->platzierung_offen) {
HTML_sportsmanager::tabelleHeader($veranstaltung); HTML_sportsmanager::tabelleHeader($veranstaltung);
tabelle($veranstaltung, 0, false, $praesentation); tabelle($veranstaltung, 0, false, $praesentation);
} else { } else {
@@ -1516,7 +1533,8 @@ function veranstaltung(): void
$query = "SELECT saison_id, saisonbezeichnung" $query = "SELECT saison_id, saisonbezeichnung"
. "\n FROM #__sportsmanager_veranstaltung" . "\n FROM #__sportsmanager_veranstaltung"
. "\n INNER JOIN #__sportsmanager_saison USING (saison_id)" . "\n INNER JOIN #__sportsmanager_saison USING (saison_id)"
. "\n WHERE status > 0 AND EXISTS(SELECT * FROM #__sportsmanager_team INNER JOIN #__sportsmanager_begegnung ON heim_team_id = team_id WHERE #__sportsmanager_team.veranstaltung_id = #__sportsmanager_veranstaltung.veranstaltung_id)" . kategorieFilter("AND #__sportsmanager_veranstaltung.kategorie IN") . "\n WHERE status > 0 AND EXISTS(SELECT * FROM #__sportsmanager_team INNER JOIN #__sportsmanager_begegnung ON heim_team_id = team_id"
. "\n WHERE #__sportsmanager_team.veranstaltung_id = #__sportsmanager_veranstaltung.veranstaltung_id)" . kategorieFilter("AND #__sportsmanager_veranstaltung.kategorie IN")
. "\n GROUP BY saison_id" . "\n GROUP BY saison_id"
. "\n ORDER BY saisonbezeichnung DESC"; . "\n ORDER BY saisonbezeichnung DESC";
$saisons = loadObjectList($db, $query); $saisons = loadObjectList($db, $query);
@@ -1540,7 +1558,10 @@ function veranstaltung(): void
$spieltag = $jInput->get('spieltag', 0, 'INT'); $spieltag = $jInput->get('spieltag', 0, 'INT');
// Veranstaltung ermitteln // Veranstaltung ermitteln
$query = "SELECT * FROM #__sportsmanager_veranstaltung WHERE veranstaltung_id = $id AND status > 0 AND EXISTS(SELECT * FROM #__sportsmanager_team INNER JOIN #__sportsmanager_begegnung ON heim_team_id = team_id WHERE #__sportsmanager_team.veranstaltung_id = #__sportsmanager_veranstaltung.veranstaltung_id)"; $query = "SELECT * FROM #__sportsmanager_veranstaltung"
. "\n WHERE veranstaltung_id = $id AND status > 0"
. "\n AND EXISTS(SELECT * FROM #__sportsmanager_team INNER JOIN #__sportsmanager_begegnung ON heim_team_id = team_id"
. "\n WHERE #__sportsmanager_team.veranstaltung_id = #__sportsmanager_veranstaltung.veranstaltung_id)";
$rows = loadObjectList($db, $query); $rows = loadObjectList($db, $query);
if (count($rows) < 1) if (count($rows) < 1)
die("Wrong id!"); die("Wrong id!");
@@ -1551,7 +1572,7 @@ function veranstaltung(): void
'veranstaltung' => $veranstaltung, 'veranstaltung' => $veranstaltung,
'begegnungen' => begegnungenAnzeigen($veranstaltung, NULL, NULL, 0) 'begegnungen' => begegnungenAnzeigen($veranstaltung, NULL, NULL, 0)
]; ];
if ($veranstaltung->tabellenwertung != 0) { if (!in_array($veranstaltung->tabellenwertung, [0, -1, -3, -4])) {
$table = tabelle($veranstaltung, $spieltag, true); $table = tabelle($veranstaltung, $spieltag, true);
$json['tabelle'] = $table['tabelle']; $json['tabelle'] = $table['tabelle'];
$json['modus'] = $table['modus']; $json['modus'] = $table['modus'];
@@ -1586,9 +1607,13 @@ function veranstaltung(): void
// Anzeigen // Anzeigen
HTML_sportsmanager::veranstaltungHeaderAlone($veranstaltung, $vorherige_veranstaltung_id, $naechste_veranstaltung_id, $showSeasons, $saisons, $filter_saison_id); HTML_sportsmanager::veranstaltungHeaderAlone($veranstaltung, $vorherige_veranstaltung_id, $naechste_veranstaltung_id, $showSeasons, $saisons, $filter_saison_id);
if ($veranstaltung->tabellenwertung != 0)
if (!in_array($veranstaltung->tabellenwertung, [0, -1, -3, -4]))
tabelle($veranstaltung, $spieltag, true); tabelle($veranstaltung, $spieltag, true);
if (einstellungswert("turnierbaum_zeigen") && $veranstaltung->tabellenwertung == -4)
turnierbaumAnzeigen($veranstaltung);
begegnungenAnzeigen($veranstaltung, NULL, NULL, 0); begegnungenAnzeigen($veranstaltung, NULL, NULL, 0);
HTML_sportsmanager::iCalBegegnungen(SportsManagerURL('&task=veranstaltung_begegnungen_ical&id=' . $veranstaltung->veranstaltung_id)); HTML_sportsmanager::iCalBegegnungen(SportsManagerURL('&task=veranstaltung_begegnungen_ical&id=' . $veranstaltung->veranstaltung_id));
} }
@@ -1631,7 +1656,7 @@ function tabelle($veranstaltung, $spieltag, $alleine_angezeigt, $praesentation =
$teams = getTabelleAktuellerSpieltag($veranstaltung); $teams = getTabelleAktuellerSpieltag($veranstaltung);
} else { } else {
$teams = getTabelleSpieltag($veranstaltung,$spieltag); $teams = getTabelleSpieltag($veranstaltung,$spieltag);
if ($veranstaltung->direktervergleich AND $spieltag >= $anzahl_spieltage_komplett/2){ if ($veranstaltung->direktervergleich && $spieltag >= $anzahl_spieltage_komplett/2 && $anzahl_spieltage_komplett >= 3){
$teams = getTabelleDirekterVergleich($teams,$veranstaltung,$spieltag); $teams = getTabelleDirekterVergleich($teams,$veranstaltung,$spieltag);
} }
} }
@@ -2079,6 +2104,300 @@ function getTabelleSpieltag($veranstaltung,$spieltag,$mannschaften = "",$offset_
jexit(); jexit();
} }
function erstelleSetzliste($teams): array
{
$seedingPairs[4] = [[1, 4], [2, 3]];
$seedingPairs[8] = [[1, 8], [4, 5], [3, 6], [2, 7]];
$seedingPairs[16] = [[1, 16], [8, 9], [5, 12], [4, 13],
[3, 14], [6, 11], [7, 10], [2, 15]];
$seedingPairs[32] = [[1, 32], [16, 17], [9, 24], [8, 25],
[5, 28], [12, 21], [13, 20], [4, 29],
[3, 30], [14, 19], [11, 22], [6, 27],
[7, 26], [10, 23], [15, 18], [2, 31]];
$seedingPairs[64] = [[1, 64], [32, 33], [17, 48], [16, 49],
[9, 56], [24, 41], [25, 40], [8, 57],
[5, 60], [28, 37], [21, 44], [12, 53],
[13, 52], [20, 45], [29, 36], [4, 61],
[3, 62], [30, 35], [19, 46], [14, 51],
[11, 54], [22, 43], [27, 38], [6, 59],
[7, 58], [26, 39], [23, 42], [10, 55],
[15, 50], [18, 47], [31, 34], [2, 63]];
$seedingPairs[128]= [[1,128], [64,65], [33,96], [32,97], [17,112], [48,81], [49,80], [16,113],
[9,120], [56,73], [41,88], [24,105], [25,104], [40,89], [57,72], [8,121],
[5,124], [60,69], [37,92], [28,101], [21,108], [44,85], [53,76], [12,117],
[13,116], [52,77], [45,84], [20,109], [29,100], [36,93], [61,68], [4,125],
[3,126], [62,67], [35,94], [30,99], [19,110], [46,83], [51,78], [14,115],
[11,118], [54,75], [43,86], [22,107], [27,102], [38,91], [59,70], [6,123],
[7,122], [58,71], [39,90], [26,103], [23,106], [42,87], [55,74], [10,119],
[15,114], [50,79], [47,82], [18,111], [31,98], [34,95], [63,66], [2,127]];
$matches = [];
// Teams durchschütteln
$keys = array_keys($teams);
shuffle($keys);
$mannschaften = [];
$nr = 0;
foreach ($keys as $key) {
$mannschaften[++$nr] = $teams[$key];
}
$anzahlTeams = count($mannschaften);
if ($anzahlTeams >= 1 && $anzahlTeams <= 4) {
$setzliste = $seedingPairs[4];
$runden = 2;
} else if ($anzahlTeams >= 5 && $anzahlTeams <= 8){
$setzliste = $seedingPairs[8];
$runden = 3;
} else if ($anzahlTeams >= 9 && $anzahlTeams <= 16){
$setzliste = $seedingPairs[16];
$runden = 4;
} else if ($anzahlTeams >= 17 && $anzahlTeams <= 32){
$setzliste = $seedingPairs[32];
$runden = 5;
} else if ($anzahlTeams >= 33 && $anzahlTeams <= 64){
$setzliste = $seedingPairs[64];
$runden = 6;
} else if ($anzahlTeams >= 65 && $anzahlTeams <= 128){
$setzliste = $seedingPairs[128];
$runden = 7;
} else {
$setzliste = [];
$runden = 0;
}
$turnier = [];
if ($runden > 1)
{
$nr = 0;
foreach($setzliste as $paarung){
$matches[1][++$nr]['heim'] = $mannschaften[$paarung[0]] ?? 'freilos';
$matches[1][$nr]['gast'] = $mannschaften[$paarung[1]] ?? 'freilos';
}
$turnier['runden'] = $runden;
$turnier['matches'] = $matches;
}
return $turnier;
}
function getSetzliste($anzahlRunden)
{
$maxTeams = pow(2, $anzahlRunden);
$seedingPairs[4] = [[1, 4], [2, 3]];
$seedingPairs[8] = [[1, 8], [4, 5], [3, 6], [2, 7]];
$seedingPairs[16] = [[1, 16], [8, 9], [5, 12], [4, 13],
[3, 14], [6, 11], [7, 10], [2, 15]];
$seedingPairs[32] = [[1, 32], [16, 17], [9, 24], [8, 25],
[5, 28], [12, 21], [13, 20], [4, 29],
[3, 30], [14, 19], [11, 22], [6, 27],
[7, 26], [10, 23], [15, 18], [2, 31]];
$seedingPairs[64] = [[1, 64], [32, 33], [17, 48], [16, 49],
[9, 56], [24, 41], [25, 40], [8, 57],
[5, 60], [28, 37], [21, 44], [12, 53],
[13, 52], [20, 45], [29, 36], [4, 61],
[3, 62], [30, 35], [19, 46], [14, 51],
[11, 54], [22, 43], [27, 38], [6, 59],
[7, 58], [26, 39], [23, 42], [10, 55],
[15, 50], [18, 47], [31, 34], [2, 63]];
$seedingPairs[128]= [[1,128], [64,65], [33,96], [32,97], [17,112], [48,81], [49,80], [16,113],
[9,120], [56,73], [41,88], [24,105], [25,104], [40,89], [57,72], [8,121],
[5,124], [60,69], [37,92], [28,101], [21,108], [44,85], [53,76], [12,117],
[13,116], [52,77], [45,84], [20,109], [29,100], [36,93], [61,68], [4,125],
[3,126], [62,67], [35,94], [30,99], [19,110], [46,83], [51,78], [14,115],
[11,118], [54,75], [43,86], [22,107], [27,102], [38,91], [59,70], [6,123],
[7,122], [58,71], [39,90], [26,103], [23,106], [42,87], [55,74], [10,119],
[15,114], [50,79], [47,82], [18,111], [31,98], [34,95], [63,66], [2,127]];
return $seedingPairs[$maxTeams];
}
function getAnzahlRunden($anzahlTeams)
{
if ($anzahlTeams >= 1 && $anzahlTeams <= 4) {
return 2;
} else if ($anzahlTeams >= 5 && $anzahlTeams <= 8){
return 3;
} else if ($anzahlTeams >= 9 && $anzahlTeams <= 16){
return 4;
} else if ($anzahlTeams >= 17 && $anzahlTeams <= 32){
return 5;
} else if ($anzahlTeams >= 33 && $anzahlTeams <= 64){
return 6;
} else if ($anzahlTeams >= 65 && $anzahlTeams <= 128){
return 7;
}
}
function getRundenTitel($anzahlTeams): string
{
if ($anzahlTeams >= 1 && $anzahlTeams <= 2)
return Text::_('COM_SPORTSMANAGER_FINAL');
if ($anzahlTeams >= 3 && $anzahlTeams <= 4)
return Text::_('COM_SPORTSMANAGER_HALF_FINAL');
if ($anzahlTeams >= 5 && $anzahlTeams <= 8)
return Text::_('COM_SPORTSMANAGER_QUARTER_FINAL');
if ($anzahlTeams >= 9 && $anzahlTeams <= 16)
return Text::_('COM_SPORTSMANAGER_ROUND_OF_16');
if ($anzahlTeams >= 17 && $anzahlTeams <= 32)
return Text::_('COM_SPORTSMANAGER_ROUND_OF_32_ALT');
if ($anzahlTeams >= 33 && $anzahlTeams <= 64)
return Text::_('COM_SPORTSMANAGER_ROUND_OF_64_ALT');;
if ($anzahlTeams >= 65 && $anzahlTeams <= 128)
return Text::_('COM_SPORTSMANAGER_ROUND_OF_128_ALT');
return "";
}
function turnierbaumAnzeigen($veranstaltung): void
{
$db = getDatabase();
$veranstaltungId = $veranstaltung->veranstaltung_id;
if ($veranstaltungId == 0) die("Missing id!");
//Infos Veranstaltung
$query = "SELECT * FROM #__sportsmanager_veranstaltung WHERE veranstaltung_id = $veranstaltungId";
$rows = loadObjectList($db, $query);
if (count($rows) < 1) die("Wrong id!");
$veranstaltung = $rows[0];
//Alle Teams
$query = "SELECT *"
. "\n FROM #__sportsmanager_team"
. "\n WHERE veranstaltung_id = $veranstaltungId"
. "\n ORDER BY setzliste_nr;";
$teams_unformatiert = json_decode(json_encode(loadObjectList($db, $query)), true);
foreach($teams_unformatiert AS $team){
$teams[$team['setzliste_nr']] = $team;
}
$anzahlTeams = count($teams);
$anzahlRunden = getAnzahlRunden($anzahlTeams);
//Alle Begegnungen vorbelegen
$anzahlSpiele = pow(2, $anzahlRunden - 1);
for($runde_nr = 1; $runde_nr <= $anzahlRunden; $runde_nr++)
{
for($spiel_nr = 1; $spiel_nr <= $anzahlSpiele; $spiel_nr++)
{
$begegnungen[$runde_nr][$spiel_nr]['heim'] = "";
$begegnungen[$runde_nr][$spiel_nr]['gast'] = "";
$begegnungen[$runde_nr][$spiel_nr]['sieger'] = 0;
$begegnungen[$runde_nr][$spiel_nr]['link'] = "";
$begegnungen[$runde_nr][$spiel_nr]['id'] = "";
$begegnungen[$runde_nr][$spiel_nr]['erg_heim'] = "";
$begegnungen[$runde_nr][$spiel_nr]['erg_gast'] = "";
$begegnungen[$runde_nr][$spiel_nr]['tooltiptext'] = "";
}
$anzahlSpiele = $anzahlSpiele / 2;
}
//Alle Begegnungen aus der Setzliste
$setzliste = getSetzliste($anzahlRunden);
$spiel_nr = 0;
foreach($setzliste AS $setzung){
$spiel_nr++;
$begegnungen[1][$spiel_nr]['sieger'] = 0;
if ($setzung[0] <= $anzahlTeams) {
$begegnungen[1][$spiel_nr]['heim'] = htmlentities($teams[$setzung[0]]['teamname_kurz']) ?: htmlentities($teams[$setzung[0]]['teamname']);
} else {
$begegnungen[1][$spiel_nr]['heim'] = "freilos";
$begegnungen[1][$spiel_nr]['sieger'] = 2;
if ($spiel_nr %2)
$begegnungen[2][round($spiel_nr/2)]['heim'] = htmlentities($teams[$setzung[1]]['teamname_kurz']) ?: htmlentities($teams[$setzung[1]]['teamname']);
else
$begegnungen[2][round($spiel_nr/2)]['gast'] = htmlentities($teams[$setzung[1]]['teamname_kurz']) ?: htmlentities($teams[$setzung[1]]['teamname']);
}
if ($setzung[1] <= $anzahlTeams) {
$begegnungen[1][$spiel_nr]['gast'] = htmlentities($teams[$setzung[1]]['teamname_kurz']) ?: htmlentities($teams[$setzung[1]]['teamname']);
} else {
$begegnungen[1][$spiel_nr]['gast'] = "freilos";
$begegnungen[1][$spiel_nr]['sieger'] = 1;
if ($spiel_nr %2)
$begegnungen[2][round($spiel_nr/2)]['heim'] = htmlentities($teams[$setzung[0]]['teamname_kurz']) ?: htmlentities($teams[$setzung[0]]['teamname']);
else
$begegnungen[2][round($spiel_nr/2)]['gast'] = htmlentities($teams[$setzung[0]]['teamname_kurz']) ?: htmlentities($teams[$setzung[0]]['teamname']);
}
}
//Alle Begegnungen aus Datenbank
$query = "SELECT t4.bezeichnung AS Liga, t1.zeitpunkt AS Spielstart,"
. "\n if(t2.teamname_kurz <> '',t2.teamname_kurz, t2.teamname) AS Heim,"
. "\n if(t3.teamname_kurz <> '',t3.teamname_kurz, t3.teamname) AS Gast,"
. "\n t1.heim_team_id, t1.gast_team_id, t1.spieltag_titel AS Runde, t1.spieltag AS Spieltag_Nr,"
. "\n t1.spiel_nr AS Spiel_Nr, t1.heim_punkte AS Heim_Tore, t1.gast_punkte AS Gast_Tore,"
. "\n t1.heim_spielpunkte AS Heim_Satzpunkte, t1.gast_spielpunkte AS Gast_Satzpunkte, t1.begegnung_id"
. "\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"
. "\n LEFT JOIN #__sportsmanager_veranstaltung AS t4 ON t2.veranstaltung_id = t4.veranstaltung_id"
. "\n WHERE t4.veranstaltung_id = $veranstaltungId"
. "\n ORDER BY t4.veranstaltung_id, t1.spieltag, t1.spiel_nr;";
$begegnungen_unformatiert = json_decode(json_encode(loadObjectList($db, $query)), true);
foreach($begegnungen_unformatiert as $begegnung)
{
$begegnungen[$begegnung['Spieltag_Nr']][$begegnung['Spiel_Nr']]['Id'] = $begegnung['begegnung_id'];
$begegnungen[$begegnung['Spieltag_Nr']][$begegnung['Spiel_Nr']]['heim'] = htmlentities($begegnung['Heim']);
$begegnungen[$begegnung['Spieltag_Nr']][$begegnung['Spiel_Nr']]['gast'] = htmlentities($begegnung['Gast']);
$begegnungen[$begegnung['Spieltag_Nr']][$begegnung['Spiel_Nr']]['erg_heim'] = $begegnung['Heim_Satzpunkte'];
$begegnungen[$begegnung['Spieltag_Nr']][$begegnung['Spiel_Nr']]['erg_gast'] = $begegnung['Gast_Satzpunkte'];
$begegnungen[$begegnung['Spieltag_Nr']][$begegnung['Spiel_Nr']]['link'] = SportsManagerURL('&task=begegnung_spielplan&veranstaltungid=' . $veranstaltungId . '&id=' . $begegnung['begegnung_id']);
$tooltiptext = $begegnung['Runde'] . ": " . htmlentities($begegnung['Heim']) . " vs. " . htmlentities($begegnung['Gast']);
if ($begegnung['Heim_Satzpunkte'] > 0 || $begegnung['Gast_Satzpunkte'] > 0)
$tooltiptext .= " - " . $begegnung['Heim_Satzpunkte'] . " : " . $begegnung['Gast_Satzpunkte'];
$begegnungen[$begegnung['Spieltag_Nr']][$begegnung['Spiel_Nr']]['tooltiptext'] = $tooltiptext;
if ($begegnung['Heim_Satzpunkte'] > $begegnung['Gast_Satzpunkte']) {
$begegnungen[$begegnung['Spieltag_Nr']][$begegnung['Spiel_Nr']]['sieger'] = 1;
if ($begegnung['Spieltag_Nr'] < $anzahlRunden){
if (round($begegnung['Spiel_Nr'] % 2))
$begegnungen[$begegnung['Spieltag_Nr'] + 1][round($begegnung['Spiel_Nr'] / 2)]['heim'] = htmlentities($begegnung['Heim']);
else
$begegnungen[$begegnung['Spieltag_Nr'] + 1][round($begegnung['Spiel_Nr'] / 2)]['gast'] = htmlentities($begegnung['Heim']);
}
} else
if ($begegnung['Heim_Satzpunkte'] < $begegnung['Gast_Satzpunkte']) {
$begegnungen[$begegnung['Spieltag_Nr']][$begegnung['Spiel_Nr']]['sieger'] = 2;
if ($begegnung['Spieltag_Nr'] < $anzahlRunden){
if (round($begegnung['Spiel_Nr'] % 2))
$begegnungen[$begegnung['Spieltag_Nr'] + 1][round($begegnung['Spiel_Nr'] / 2)]['heim'] = htmlentities($begegnung['Gast']);
else
$begegnungen[$begegnung['Spieltag_Nr'] + 1][round($begegnung['Spiel_Nr'] / 2)]['gast'] = htmlentities($begegnung['Gast']);
}
} else {
$begegnungen[$begegnung['Spieltag_Nr']][$begegnung['Spiel_Nr']]['sieger'] = 0;
}
}
$veranstaltung->anzahlRunden = $anzahlRunden;
HTML_sportsmanager::turnierbaumAnzeigen($veranstaltung,$begegnungen);
}
function begegnungenAnzeigen($veranstaltung, $verein_id, $spielort_id, $zeitfenster, $ausgetragene_filtern = false, $auszutragende_filtern = false, $zwischenergebnisse_filtern = false, $titel = "", $umgekehrte_reihenfolge = false, $aus_uebersicht = false, $praesentation = 0, $year = NULL, $month = NULL) function begegnungenAnzeigen($veranstaltung, $verein_id, $spielort_id, $zeitfenster, $ausgetragene_filtern = false, $auszutragende_filtern = false, $zwischenergebnisse_filtern = false, $titel = "", $umgekehrte_reihenfolge = false, $aus_uebersicht = false, $praesentation = 0, $year = NULL, $month = NULL)
{ {
$db = getDatabase(); $db = getDatabase();
@@ -2168,7 +2487,8 @@ function begegnungenAnzeigen($veranstaltung, $verein_id, $spielort_id, $zeitfens
. "\n LEFT JOIN #__sportsmanager_veranstaltung AS t5 ON t2.veranstaltung_id = t5.veranstaltung_id" . "\n LEFT JOIN #__sportsmanager_veranstaltung AS t5 ON t2.veranstaltung_id = t5.veranstaltung_id"
. "\n LEFT JOIN #__sportsmanager_verschieberegel AS t6 ON t5.verschieberegel_id = t6.verschieberegel_id" . "\n LEFT JOIN #__sportsmanager_verschieberegel AS t6 ON t5.verschieberegel_id = t6.verschieberegel_id"
. "\n WHERE t5.status > 0" . kategorieFilter("AND t5.kategorie IN") . " AND t2.veranstaltung_id = $veranstaltung->veranstaltung_id" . ($zeitfenster > 0 ? " AND (ABS(DATEDIFF(zeitpunkt, CURDATE())) <= $zeitfenster OR (heim_punkte = 0 AND gast_punkte = 0 AND (SELECT IF(aktion NOT IN (0, 3, 4), 0, 1) FROM #__sportsmanager_begegnung_historie AS tt1 USE INDEX (begegnung_id) WHERE tt1.begegnung_id = t1.begegnung_id ORDER BY begegnung_historie_id DESC LIMIT 1) = 1))" : "") . ($ausgetragene_filtern ? " AND ISNULL(heim_punkte) AND ISNULL(gast_punkte)" : "") . ($auszutragende_filtern ? " AND (heim_punkte != 0 OR gast_punkte != 0)" : "") . "\n WHERE t5.status > 0" . kategorieFilter("AND t5.kategorie IN") . " AND t2.veranstaltung_id = $veranstaltung->veranstaltung_id" . ($zeitfenster > 0 ? " AND (ABS(DATEDIFF(zeitpunkt, CURDATE())) <= $zeitfenster OR (heim_punkte = 0 AND gast_punkte = 0 AND (SELECT IF(aktion NOT IN (0, 3, 4), 0, 1) FROM #__sportsmanager_begegnung_historie AS tt1 USE INDEX (begegnung_id) WHERE tt1.begegnung_id = t1.begegnung_id ORDER BY begegnung_historie_id DESC LIMIT 1) = 1))" : "") . ($ausgetragene_filtern ? " AND ISNULL(heim_punkte) AND ISNULL(gast_punkte)" : "") . ($auszutragende_filtern ? " AND (heim_punkte != 0 OR gast_punkte != 0)" : "")
. "\n ORDER BY " . ((($veranstaltung->unterteilung == 0 || $veranstaltung->unterteilung == 1) && $zeitfenster == 0) ? ("t1.spieltag" . ($umgekehrte_reihenfolge ? " DESC" : "") . ", s1.name, ") : "") . "t1.zeitpunkt" . ($umgekehrte_reihenfolge ? " DESC" : "") . ", heim_name"; . "\n ORDER BY " . ((($veranstaltung->unterteilung == 0 || $veranstaltung->unterteilung == 1) && $zeitfenster == 0) ? ("t1.spieltag" . ($umgekehrte_reihenfolge ? " DESC" : "") . ", t1.spiel_nr, s1.name, ") : "") . "t1.zeitpunkt" . ($umgekehrte_reihenfolge ? " DESC" : "") . ", heim_name";
$begegnungen = loadObjectList($db, $query); $begegnungen = loadObjectList($db, $query);
$modus_id = $veranstaltung->modus_id; $modus_id = $veranstaltung->modus_id;
@@ -2550,17 +2870,32 @@ function spieler(): void
$query .= ", teamname"; $query .= ", teamname";
$query .= ", vereinsname, veranstalterbezeichnung" $query .= ", vereinsname, veranstalterbezeichnung"
. "\n FROM #__sportsmanager_spieler"; . "\n FROM #__sportsmanager_spieler";
if (!empty($kategorieFilter) || !empty($veranstalterFilter)) 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)"; $query .= "\n INNER JOIN (SELECT spieler_id FROM #__sportsmanager_mitglied_von_verein"
if ($veranstaltungid != 0) . "\n INNER JOIN #__sportsmanager_verein USING (verein_id)"
$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)"; . "\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" $query .= "\n LEFT JOIN #__sportsmanager_verein ON aktueller_verein_id = verein_id"
. "\n LEFT JOIN #__sportsmanager_veranstalter USING (veranstalter_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)) 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')"; $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) if ($einstufungid != 0)
$query .= "\n AND (einstufung_allgemein_id = $einstufungid OR einstufung_einzel_id = $einstufungid OR einstufung_doppel_id = $einstufungid)"; $query .= "\n AND (einstufung_allgemein_id = $einstufungid OR einstufung_einzel_id = $einstufungid OR einstufung_doppel_id = $einstufungid)";
$query .= "\n GROUP BY spieler_id";
if (!empty($kategorie)) if (!empty($kategorie))
$query .= "\n HAVING kategorie = '" . $db->escape($kategorie) . "'"; $query .= "\n HAVING kategorie = '" . $db->escape($kategorie) . "'";
$query .= "\n ORDER BY " . $sortierung_query $query .= "\n ORDER BY " . $sortierung_query
@@ -2679,7 +3014,11 @@ function spielerDetails(): void
$query = "SELECT vereinsname" $query = "SELECT vereinsname"
. "\n FROM #__sportsmanager_mitglied_von_verein, #__sportsmanager_verein" . "\n FROM #__sportsmanager_mitglied_von_verein, #__sportsmanager_verein"
. "\n LEFT JOIN #__sportsmanager_veranstalter USING (veranstalter_id)" . "\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"; . "\n ORDER BY vereinsname";
$vereine = loadObjectList($db, $query); $vereine = loadObjectList($db, $query);
@@ -2687,7 +3026,12 @@ function spielerDetails(): void
$query = "SELECT veranstalterbezeichnung" $query = "SELECT veranstalterbezeichnung"
. "\n FROM #__sportsmanager_mitglied_von_verein, #__sportsmanager_verein" . "\n FROM #__sportsmanager_mitglied_von_verein, #__sportsmanager_verein"
. "\n LEFT JOIN #__sportsmanager_veranstalter USING (veranstalter_id)" . "\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"; . "\n ORDER BY veranstalterbezeichnung";
$veranstalter = loadObjectList($db, $query); $veranstalter = loadObjectList($db, $query);
@@ -3466,23 +3810,30 @@ function mannschaftDetails($ansicht_vereinigt, $unabhaengige_ansicht = false): v
die(); die();
} }
function vereine(): void function vereine($sort): void
{ {
$db = getDatabase(); $db = getDatabase();
global $params; 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 t1.verstecken = 0 AND t3.ausgetreten = 0"
. "\n GROUP BY t1.verein_id";
if ($sort == "mitglieder"){
$query .= "\n HAVING mitglieder >= " . einstellungswert('anzahl_mitglieder_zeigen');
$query .= "\n ORDER BY mitglieder DESC;";
}
if ($sort == "vereinsname"){
$query .= "\n ORDER BY t1.vereinsname;";
}
$query = "SELECT COUNT(DISTINCT veranstalter_id) FROM #__sportsmanager_verein WHERE NOT ausgetreten";
$organisationAnzeigen = loadResult($db, $query) > 1;
$query = "SELECT *, veranstalterbezeichnung"
. "\n FROM #__sportsmanager_verein"
. "\n LEFT JOIN #__sportsmanager_veranstalter USING (veranstalter_id)"
. "\n WHERE NOT ausgetreten" . kategorieFilter("AND #__sportsmanager_veranstalter.kategorie IN")
. "\n ORDER BY IF(ISNULL(#__sportsmanager_veranstalter.veranstalter_id), 1, 0), veranstalterbezeichnung, vereinsname";
$vereine = loadObjectList($db, $query); $vereine = loadObjectList($db, $query);
HTML_sportsmanager::vereine($params->get('titel'), $params->get('beschreibung'), $vereine, $organisationAnzeigen, $spalteMitgliederAnzeigen);
HTML_sportsmanager::vereine($params->get('titel'), $params->get('beschreibung'), $vereine, $organisationAnzeigen);
administrationFooter(); administrationFooter();
} }
@@ -3510,7 +3861,12 @@ function vereinDetails(): void
$verein = $rows[0]; $verein = $rows[0];
// Mitglieder ermitteln // Mitglieder ermitteln
$query = "SELECT * FROM #__sportsmanager_mitglied_von_verein LEFT JOIN #__sportsmanager_spieler ON #__sportsmanager_mitglied_von_verein.spieler_id = #__sportsmanager_spieler.spieler_id WHERE #__sportsmanager_mitglied_von_verein.verein_id = $verein->verein_id AND NOT #__sportsmanager_mitglied_von_verein.ausgetreten ORDER BY nachname, vorname"; $query = "SELECT * FROM #__sportsmanager_mitglied_von_verein"
. "\n LEFT JOIN #__sportsmanager_spieler ON #__sportsmanager_mitglied_von_verein.spieler_id = #__sportsmanager_spieler.spieler_id"
. "\n WHERE #__sportsmanager_mitglied_von_verein.verein_id = $verein->verein_id"
. "\n AND NOT #__sportsmanager_mitglied_von_verein.ausgetreten"
. "\n AND #__sportsmanager_mitglied_von_verein.mitgliedsstatus IN (1,2)"
. "\n ORDER BY nachname, vorname;";
$mitglieder = loadObjectList($db, $query); $mitglieder = loadObjectList($db, $query);
$query = "SELECT vorname, nachname, email" $query = "SELECT vorname, nachname, email"
@@ -3520,6 +3876,7 @@ function vereinDetails(): void
. "\n ORDER BY vorname, nachname, email"; . "\n ORDER BY vorname, nachname, email";
$rows = loadObjectList($db, $query); $rows = loadObjectList($db, $query);
// Mailverteiler ermitteln
$mailverteiler = array(); $mailverteiler = array();
$mailverteiler["u"] = ""; $mailverteiler["u"] = "";
$mailverteiler["p"] = ""; $mailverteiler["p"] = "";
@@ -3575,10 +3932,11 @@ function vereinDetails(): void
$fruehere_teams = loadObjectList($db, $query); $fruehere_teams = loadObjectList($db, $query);
HTML_sportsmanager::vereinDetails($verein, $mitglieder, $vereinsansprechpartner, $aktuelle_teams, $vorheriger_verein_id, $naechster_verein_id, $vereins_moderator, $details_anzeigen, $ansprechpartner_anzeigen); HTML_sportsmanager::vereinDetails($verein, $mitglieder, $vereinsansprechpartner, $aktuelle_teams, $vorheriger_verein_id, $naechster_verein_id, $vereins_moderator, $details_anzeigen, $ansprechpartner_anzeigen);
begegnungenAnzeigen(NULL, $id, NULL, 92, true, true, false, Text::_('COM_SPORTSMANAGER_RUNNING_MATCHES'), true, true); // Links in Begegnungen sind fehlerhaft bei Aufruf aus vereinDetails (Jürgen Meyer, 10.10.2025)
begegnungenAnzeigen(NULL, $id, NULL, 62, true, false, true, "Begegnungen der kommenden zwei Monate", false, true); // begegnungenAnzeigen(NULL, $id, NULL, 92, true, true, false, Text::_('COM_SPORTSMANAGER_RUNNING_MATCHES'), true, true);
begegnungenAnzeigen(NULL, $id, NULL, 366, false, true, true, "Begegnungen des vergangenen Jahres", true, true); // begegnungenAnzeigen(NULL, $id, NULL, 62, true, false, true, "Begegnungen der kommenden zwei Monate", false, true);
HTML_sportsmanager::iCalBegegnungen(SportsManagerURL('&task=verein_begegnungen_ical&id=' . $verein->verein_id)); // begegnungenAnzeigen(NULL, $id, NULL, 366, false, true, true, "Begegnungen des vergangenen Jahres", true, true);
// HTML_sportsmanager::iCalBegegnungen(SportsManagerURL('&task=verein_begegnungen_ical&id=' . $verein->verein_id));
HTML_sportsmanager::vereinDetailsErgaenzung($mailverteiler, $fruehere_teams, $vereins_moderator); HTML_sportsmanager::vereinDetailsErgaenzung($mailverteiler, $fruehere_teams, $vereins_moderator);
} }
@@ -4349,8 +4707,15 @@ function teamstatistikAktualisieren($geaenderte_veranstaltung_id = 0, $geaendert
$anzahl_spieltage_gespielt = loadResult($db, $query); $anzahl_spieltage_gespielt = loadResult($db, $query);
$aktueller_spieltag = count($spieltage) > 0 ? $spieltage[0]->spieltag : 0; $aktueller_spieltag = count($spieltage) > 0 ? $spieltage[0]->spieltag : 0;
//Platzierung ueberschreiben. Jetzige Platzierung kommt aus Tabelle und koennte falsch sein.
$platz = 0;
foreach($teams AS $team)
{
$team->platz = ++$platz;
}
// Direkter Vergleich, wenn mindestens die Hälfte der Spieltage gespielt sind. // Direkter Vergleich, wenn mindestens die Hälfte der Spieltage gespielt sind.
if ($veranstaltung->direktervergleich AND $anzahl_spieltage_gespielt >= $anzahl_spieltage_komplett/2){ if ($veranstaltung->direktervergleich && $anzahl_spieltage_gespielt >= $anzahl_spieltage_komplett/2 && $anzahl_spieltage_komplett >= 3){
$teams = getTabelleDirekterVergleich($teams,$veranstaltung,$aktueller_spieltag); $teams = getTabelleDirekterVergleich($teams,$veranstaltung,$aktueller_spieltag);
} }
@@ -4474,7 +4839,6 @@ function teamstatistikAktualisieren($geaenderte_veranstaltung_id = 0, $geaendert
function ranglisteAktualisieren($geaenderte_rangliste_id = 0, $geaenderte_turnierdisziplin_id = 0, $geaenderte_spieler_id = 0, $berechnungen_auswerten = FALSE): void function ranglisteAktualisieren($geaenderte_rangliste_id = 0, $geaenderte_turnierdisziplin_id = 0, $geaenderte_spieler_id = 0, $berechnungen_auswerten = FALSE): void
{ {
$db = getDatabase(); $db = getDatabase();
if ($geaenderte_spieler_id != 0) { if ($geaenderte_spieler_id != 0) {
$query = "SELECT DISTINCT #__sportsmanager_rangliste.*" $query = "SELECT DISTINCT #__sportsmanager_rangliste.*"
. "\n FROM #__sportsmanager_turniermeldung_spieler" . "\n FROM #__sportsmanager_turniermeldung_spieler"
@@ -4483,6 +4847,12 @@ function ranglisteAktualisieren($geaenderte_rangliste_id = 0, $geaenderte_turnie
. "\n INNER JOIN #__sportsmanager_rangliste_turnierdisziplin USING (turnierdisziplin_id)" . "\n INNER JOIN #__sportsmanager_rangliste_turnierdisziplin USING (turnierdisziplin_id)"
. "\n INNER JOIN #__sportsmanager_rangliste USING (rangliste_id)" . "\n INNER JOIN #__sportsmanager_rangliste USING (rangliste_id)"
. "\n WHERE spieler_id = $geaenderte_spieler_id AND rundenstufe = 0"; . "\n WHERE spieler_id = $geaenderte_spieler_id AND rundenstufe = 0";
} else if ($berechnungen_auswerten) {
$session_id = redirectRequestGetSessionId();
$query = "SELECT DISTINCT #__sportsmanager_rangliste.*"
. "\n FROM #__sportsmanager_berechnung"
. "\n INNER JOIN #__sportsmanager_rangliste ON id = rangliste_id"
. "\n WHERE typ = 'rangliste' AND " . (empty($session_id) ? ("session_id < SUBTIME(NOW(), '00:10:00')") : ("session_id = '" . $session_id . "'"));
} else if ($geaenderte_rangliste_id != 0) { } else if ($geaenderte_rangliste_id != 0) {
$query = "SELECT * FROM #__sportsmanager_rangliste" $query = "SELECT * FROM #__sportsmanager_rangliste"
. "\n WHERE rangliste_id = $geaenderte_rangliste_id"; . "\n WHERE rangliste_id = $geaenderte_rangliste_id";
@@ -4584,6 +4954,8 @@ function ranglisteAktualisieren($geaenderte_rangliste_id = 0, $geaenderte_turnie
$db->transactionStart(); $db->transactionStart();
$meldungen = array(); $meldungen = array();
$Anzahl = 0;
$query = "INSERT INTO #__sportsmanager_rangliste_turnierdisziplin_punkte (rangliste_id, spieler_id, turnierdisziplin_id, platz, punkte) VALUES ";
foreach ($turnierplatzierungen as $index => $turnierplatzierung) { foreach ($turnierplatzierungen as $index => $turnierplatzierung) {
if (empty($turnierplatzierung->spieler_id)) if (empty($turnierplatzierung->spieler_id))
continue; continue;
@@ -4675,7 +5047,12 @@ function ranglisteAktualisieren($geaenderte_rangliste_id = 0, $geaenderte_turnie
} }
} }
$punkte[$turnierplatzierung->spieler_id][] = $p; $punkte[$turnierplatzierung->spieler_id][] = $p;
$query = "INSERT INTO #__sportsmanager_rangliste_turnierdisziplin_punkte (rangliste_id, spieler_id, turnierdisziplin_id, platz, punkte) VALUES ('$rangliste_id', '$turnierplatzierung->spieler_id', '$turnierdisziplin->turnierdisziplin_id', '$turnierplatzierung->platz', '$p') ON DUPLICATE KEY UPDATE punkte = punkte + VALUES(punkte);"; if ($Anzahl > 0) $query .= ",";
$query .= "('$rangliste_id', '$turnierplatzierung->spieler_id', '$turnierdisziplin->turnierdisziplin_id', '$turnierplatzierung->platz', '$p')";
$Anzahl++;
}
$query .= " ON DUPLICATE KEY UPDATE punkte = punkte + VALUES(punkte);";
if ($Anzahl > 0){
$db->setQuery($query); $db->setQuery($query);
if (!$db->execute()) { if (!$db->execute()) {
die($db->stderr(true)); die($db->stderr(true));
@@ -4701,21 +5078,25 @@ function ranglisteAktualisieren($geaenderte_rangliste_id = 0, $geaenderte_turnie
$platz = 1; $platz = 1;
$tatsaechlicher_platz = 1; $tatsaechlicher_platz = 1;
$spieler_punkte = 0; $spieler_punkte = 0;
$Anzahl = 0;
$db->transactionStart(); $db->transactionStart();
$query = "INSERT INTO #__sportsmanager_rangliste_punkte(rangliste_id, spieler_id, punkte, teilnahmen, platz) VALUES ";
foreach ($punkte_summe as $spieler_id => $spieler_punkte_summe) { foreach ($punkte_summe as $spieler_id => $spieler_punkte_summe) {
$spieler_teilnahmen = $teilnahmen[$spieler_id]; $spieler_teilnahmen = $teilnahmen[$spieler_id];
if ($platz == 1 || $spieler_punkte != $spieler_punkte_summe) if ($platz == 1 || $spieler_punkte != $spieler_punkte_summe)
$tatsaechlicher_platz = $platz; $tatsaechlicher_platz = $platz;
if ($Anzahl > 0) $query .= ",";
$query = "INSERT INTO #__sportsmanager_rangliste_punkte (rangliste_id, spieler_id, punkte, teilnahmen, platz) VALUES ('$rangliste_id', '$spieler_id', '$spieler_punkte_summe', '$spieler_teilnahmen', '$tatsaechlicher_platz') ON DUPLICATE KEY UPDATE punkte = VALUES(punkte), teilnahmen = VALUES(teilnahmen), platz = VALUES(platz);"; $query .= "('$rangliste_id', '$spieler_id', '$spieler_punkte_summe', '$spieler_teilnahmen', '$tatsaechlicher_platz') ";
$Anzahl++;
$spieler_punkte = $spieler_punkte_summe;
$platz++;
}
$query .= " ON DUPLICATE KEY UPDATE punkte = VALUES(punkte), teilnahmen = VALUES(teilnahmen), platz = VALUES(platz);";
if ($Anzahl > 0){
$db->setQuery($query); $db->setQuery($query);
if (!$db->execute()) { if (!$db->execute()) {
die($db->stderr(true)); die($db->stderr(true));
} }
$spieler_punkte = $spieler_punkte_summe;
$platz++;
} }
$db->transactionCommit(); $db->transactionCommit();
@@ -5218,7 +5599,13 @@ function aktuellerVereinAktualisieren($spieler_id = 0): void
$db = getDatabase(); $db = getDatabase();
$query = "UPDATE #__sportsmanager_spieler" $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 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"; . "\n SET aktueller_verein_id = mitgliedschaft.verein_id";
if ($spieler_id != 0) if ($spieler_id != 0)
$query .= "\n WHERE spieler_id = $spieler_id"; $query .= "\n WHERE spieler_id = $spieler_id";
@@ -201,7 +201,7 @@ function kategorieFilter($prefix, $suffix = ""): string
function turnierFilter($prefix): string function turnierFilter($prefix): string
{ {
$user_id = isExternalDatabase() ? 0 : Factory::getContainer()->get(SiteApplication::class)->getIdentity()->id; $user_id = isExternalDatabase() ? 0 : Factory::getContainer()->get(SiteApplication::class)->getIdentity()->id;
return " " . $prefix . " (SELECT berechtigt_turnier_id FROM #__sportsmanager_berechtigt_fuer_turnier WHERE berechtigt_user_id = $user_id AND DATEDIFF(letzter_tag, NOW()) >= -14) "; return " " . $prefix . " (SELECT berechtigt_turnier_id FROM #__sportsmanager_berechtigt_fuer_turnier WHERE berechtigt_user_id = $user_id AND DATEDIFF(letzter_tag, NOW()) >= -21) ";
} }
function vereinFilter($prefix): string function vereinFilter($prefix): string
@@ -219,7 +219,7 @@ function veranstalterFilter($prefix): string
function veranstaltungFilter($prefix): string function veranstaltungFilter($prefix): string
{ {
$user_id = isExternalDatabase() ? 0 : Factory::getContainer()->get(SiteApplication::class)->getIdentity()->id; $user_id = isExternalDatabase() ? 0 : Factory::getContainer()->get(SiteApplication::class)->getIdentity()->id;
return " " . $prefix . " (SELECT berechtigt_veranstaltung_id FROM #__sportsmanager_berechtigt_fuer_veranstaltung INNER JOIN #__sportsmanager_veranstaltung ON veranstaltung_id = berechtigt_veranstaltung_id WHERE berechtigt_user_id = $user_id AND DATEDIFF(letzter_tag, NOW()) >= -14) "; return " " . $prefix . " (SELECT berechtigt_veranstaltung_id FROM #__sportsmanager_berechtigt_fuer_veranstaltung INNER JOIN #__sportsmanager_veranstaltung ON veranstaltung_id = berechtigt_veranstaltung_id WHERE berechtigt_user_id = $user_id AND DATEDIFF(letzter_tag, NOW()) >= -21) ";
} }
// Berechnet Datum zum Montag der ersten Kalenderwoche eines Jahres // Berechnet Datum zum Montag der ersten Kalenderwoche eines Jahres
@@ -0,0 +1,125 @@
<?php
use Joomla\CMS\Factory;
use Joomla\CMS\Log\Log;
use Joomla\CMS\Mail\MailerFactoryInterface;
use Joomla\CMS\Application\SiteApplication;
/**
* @since 2.2
* @throws Exception
*/
function sentEmailReminders(): void
{
$app = Factory::getContainer()->get(SiteApplication::class);
$db = getDatabase();
$query = $db->getQuery(true)
->select('wert')
->from('#__sportsmanager_einstellungen')
->where('name = ' . $db->quote('enable_email_reminders'));
$row = loadResult($db, $query);
if (!$row) {
return; // quit when email reminders are disabled
}
$query = $db->getQuery(true)
->select('tournament.turnier_id, tournament.turnierbezeichnung, tournament.letzter_tag, tournament.reminder_count, GROUP_CONCAT(user.email SEPARATOR ", ") as emails')
->from($db->quoteName('#__sportsmanager_turnier', 'tournament'))
->join('INNER', $db->quoteName('#__sportsmanager_berechtigt_fuer_turnier', 'entitled') . ' ON tournament.turnier_id = entitled.berechtigt_turnier_id')
->join('INNER', $db->quoteName('#__users', 'user') . ' ON entitled.berechtigt_user_id = user.id')
->where('tournament.reminder_count < 3')
->group('tournament.turnier_id, tournament.turnierbezeichnung');
$rows = loadObjectList($db, $query);
if(!empty($rows)) {
$mailFrom = $app->getCfg('mailfrom');
$fromName = $app->getCfg('fromname');
$mailer = Factory::getContainer()->get(MailerFactoryInterface::class)->createMailer();
$mailer->setSender($mailFrom, $fromName);
foreach ($rows as $row) {
$currentReminder = $row->reminder_count + 1;
if (hasResultsAlready($db, $row)) {
updateDBReminders($db, $row, 3); // do not sent any more reminders
continue;
}
if (!isset($row->emails) || $row->emails == "" || $row->emails == NULL) {
Log::add('can\'t sent ' . $currentReminder .'. email reminder for tournament ' . $row->turnierbezeichnung . ': no recipient set', Log::WARNING, 'com_sportsmanager');
continue;
}
$now = new DateTime();
$last_day = new DateTime($row->letzter_tag);
$last_day->modify('+1 day'); // start to count at the end of the day, not at the beginning
$diff = $now->getTimestamp() - $last_day->getTimestamp();
$reminderDelays = [
1 => 24*60*60, // 24h
2 => 3*24*60*60, // 3d
3 => 13*24*60*60 // 13d
];
foreach ($reminderDelays as $count => $delay) {
if ($diff >= $delay && $row->reminder_count < $count) {
$subject = ($row->reminder_count == 2 ? "Letzte " : "") . "Erinnerung: " . $row->turnierbezeichnung . " Ergebnisse einreichen!";
$body = "Hi,"
. "\n\nDies ist die " . $currentReminder . ". " . ($row->reminder_count == 2 ? "*und damit letzte* " : "") . "Erinnerung die Turnierergebnisse einzureichen."
. "\n\nTurnier: " . $row->turnierbezeichnung
. "\nTurnierende: " . FormatiertesDatum($row->letzter_tag, false, false)
. "\n\nLaut Turnierordnung müssen die Ergebnisse spätestens 24 Stunden nach Turnierende eingetragen werden. Bitte reich die Ergebnisse umgehend nach."
. "\n\nDu erhältst diese Mail, weil du als Berechtigter für das Turnier eingetragen wurdest. Falls du nicht der Veranstalter bist, leite diese Email bitte entsprechend weiter."
. "\n\nHochladen der Ergebnisse über " . SportsManagerURL('&task=admin_turnierdisziplinen&turnierid=' . $row->turnier_id, -1) . ".";
$mailer->setSubject($subject);
$mailer->setBody($body);
$emailArray = explode(", ", $row->emails);
foreach ($emailArray as $email) {
$mailer->addBcc($email);
}
$mailer->send();
updateDBReminders($db, $currentReminder, $row->turnier_id);
}
}
}
}
}
function updateDBReminders($db, $reminder, $tournamentId): void
{
$query = $db->getQuery(true)
->update($db->quoteName('#__sportsmanager_turnier'))
->set($db->quoteName('reminder_count') . ' = ' . $db->quote($reminder))
->where($db->quoteName('turnier_id') . ' = ' . $db->quote($tournamentId));
$db->setQuery($query);
$db->execute();
}
/**
* checks if a tournament has at least one result entry for a discipline
* @param $db
* @param $row mixed tournament entry
* @return bool true if at least one result is given, else false
* @since 2.2
*/
function hasResultsAlready($db, mixed $row): bool
{
$subQuery = $db->getQuery(true)
->select($db->quoteName('turnierdisziplin_id'))
->from($db->quoteName('#__sportsmanager_turnierdisziplin'))
->where($db->quoteName('turnier_id') . ' = ' . $db->quote($row->turnier_id));
$query = $db->getQuery(true)
->select('COUNT(*) AS count')
->from($db->quoteName('#__sportsmanager_turniermeldung', 'tm'))
->where($db->quoteName('tm.turnierdisziplin_id') . ' IN (' . $subQuery . ')');
$result = loadResult($db, $query);
return $result && $result[0]->count > 0;
}
@@ -356,7 +356,7 @@ function bildURL($typ, $id, $fixed_width = 0, $fixed_height = 0, $max_width = 0,
#crop=250,250,left #crop=250,250,left
#crop=250,250,right #crop=250,250,right
*/ */
function yoothemeBild($typ, $id, $alternativ, $resize = '', $zusatz = ""): ?string function yoothemeBild($typ, $id, $alternativ, $zusatz = ""): ?string
{ {
$typ_exploded = explode("/", $typ); $typ_exploded = explode("/", $typ);
$typ = $typ_exploded[0]; $typ = $typ_exploded[0];
@@ -382,7 +382,7 @@ function yoothemeBild($typ, $id, $alternativ, $resize = '', $zusatz = ""): ?stri
$bildpfad = SPORTSMANAGER_JOOMLA_URL . "images/sportsmanager/" . $typ . "/" . $typ_prefix . $id . "." . $ext; $bildpfad = SPORTSMANAGER_JOOMLA_URL . "images/sportsmanager/" . $typ . "/" . $typ_prefix . $id . "." . $ext;
return '<img class="el-image" data-src="' . $bildpfad . $resize . '" ' . $zusatz . ' uk-img />'; return '<img class="el-image" data-src="' . $bildpfad . '" ' . $zusatz . ' uk-img />';
} }
function bildHTML($typ, $id, $fixed_width = 0, $fixed_height = 0, $max_width = 0, $max_height = 0, $zusatz = "", $alternativ = ""): ?string function bildHTML($typ, $id, $fixed_width = 0, $fixed_height = 0, $max_width = 0, $max_height = 0, $zusatz = "", $alternativ = ""): ?string
File diff suppressed because it is too large Load Diff
@@ -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 #[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 = []; $letzte_einzel = [];
$spieler->bild = playerImage($spieler->spieler_id, $spieler->geschlecht); $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--) { for ($i = sizeof($spieler_elo_verlauf_einzel) - 1; $i >= max(sizeof($spieler_elo_verlauf_einzel) - 10, 0); $i--) {
File diff suppressed because it is too large Load Diff
@@ -40,6 +40,9 @@ class HTML_sportsmanager_ticker
continue; continue;
else else
$status = 'upcoming'; $status = 'upcoming';
if ($begegnung->spieltag_titel)
$spieltag = $begegnung->spieltag_titel;
else
$spieltag = Rundenbezeichnung($begegnung->spieltag, $begegnung->unterteilung == 0, false, true); $spieltag = Rundenbezeichnung($begegnung->spieltag, $begegnung->unterteilung == 0, false, true);
$gewinner = $begegnung->heim_spielpunkte > $begegnung->gast_spielpunkte ? 1 : ($begegnung->heim_spielpunkte < $begegnung->gast_spielpunkte ? 2 : 0); $gewinner = $begegnung->heim_spielpunkte > $begegnung->gast_spielpunkte ? 1 : ($begegnung->heim_spielpunkte < $begegnung->gast_spielpunkte ? 2 : 0);
$heim_name = $begegnung->heim_name; $heim_name = $begegnung->heim_name;
@@ -21,6 +21,7 @@ COM_SPORTSMANAGER_LOCATIONS="Spielorte"
COM_SPORTSMANAGER_SEASONS="Saisons" COM_SPORTSMANAGER_SEASONS="Saisons"
COM_SPORTSMANAGER_TEAM_PLANS="Mannschaftsspielpl&auml;ne" COM_SPORTSMANAGER_TEAM_PLANS="Mannschaftsspielpl&auml;ne"
COM_SPORTSMANAGER_TEAM_NAME="Mannschaftsname" COM_SPORTSMANAGER_TEAM_NAME="Mannschaftsname"
COM_SPORTSMANAGER_TEAM_NAME_SHORT="Mannschaftsname kurz (max 24)"
COM_SPORTSMANAGER_TEAM_NAME2="Vereinsname" COM_SPORTSMANAGER_TEAM_NAME2="Vereinsname"
COM_SPORTSMANAGER_TEAM_SEAT="Vereinssitz" COM_SPORTSMANAGER_TEAM_SEAT="Vereinssitz"
COM_SPORTSMANAGER_POSTPONE_RULES="Verschieberegeln" COM_SPORTSMANAGER_POSTPONE_RULES="Verschieberegeln"
@@ -38,6 +39,7 @@ COM_SPORTSMANAGER_ORGANISATION="Organisation"
COM_SPORTSMANAGER_TEAM_MEMBERS="Mannschaftsmitglieder" COM_SPORTSMANAGER_TEAM_MEMBERS="Mannschaftsmitglieder"
COM_SPORTSMANAGER_TEAM_MEMBERS2=Vereinsmitglieder COM_SPORTSMANAGER_TEAM_MEMBERS2=Vereinsmitglieder
COM_SPORTSMANAGER_MEMBERS="Mitglieder" COM_SPORTSMANAGER_MEMBERS="Mitglieder"
COM_SPORTSMANAGER_ACTIVE_MEMBERS="Aktive Mitglieder"
COM_SPORTSMANAGER_TEAMS="Mannschaften" COM_SPORTSMANAGER_TEAMS="Mannschaften"
COM_SPORTSMANAGER_CURRENT_TEAMS="Aktuelle Mannschaften" COM_SPORTSMANAGER_CURRENT_TEAMS="Aktuelle Mannschaften"
COM_SPORTSMANAGER_PREVIOUS_TEAMS="Fr&uuml;here Mannschaften" COM_SPORTSMANAGER_PREVIOUS_TEAMS="Fr&uuml;here Mannschaften"
@@ -130,10 +132,13 @@ COM_SPORTSMANAGER_QUARTER_FINAL_SHORTCUT="1/4"
COM_SPORTSMANAGER_ROUND_OF_16="Achtelfinale" COM_SPORTSMANAGER_ROUND_OF_16="Achtelfinale"
COM_SPORTSMANAGER_ROUND_OF_16_SHORTCUT="1/8" COM_SPORTSMANAGER_ROUND_OF_16_SHORTCUT="1/8"
COM_SPORTSMANAGER_ROUND_OF_32="Sechzehntelfinale" COM_SPORTSMANAGER_ROUND_OF_32="Sechzehntelfinale"
COM_SPORTSMANAGER_ROUND_OF_32_ALT="16-tel-Finale"
COM_SPORTSMANAGER_ROUND_OF_32_SHORTCUT="1/16" COM_SPORTSMANAGER_ROUND_OF_32_SHORTCUT="1/16"
COM_SPORTSMANAGER_ROUND_OF_64="Zweiunddreißigstelfinale" COM_SPORTSMANAGER_ROUND_OF_64="Zweiunddreißigstelfinale"
COM_SPORTSMANAGER_ROUND_OF_64_ALT="32-tel-Finale"
COM_SPORTSMANAGER_ROUND_OF_64_SHORTCUT="1/32" COM_SPORTSMANAGER_ROUND_OF_64_SHORTCUT="1/32"
COM_SPORTSMANAGER_ROUND_OF_128="Vierundsechzigstelfinale" COM_SPORTSMANAGER_ROUND_OF_128="Vierundsechzigstelfinale"
COM_SPORTSMANAGER_ROUND_OF_128_ALT="64-tel-Finale"
COM_SPORTSMANAGER_ROUND_OF_128_SHORTCUT="1/64" COM_SPORTSMANAGER_ROUND_OF_128_SHORTCUT="1/64"
COM_SPORTSMANAGER_DAY_0_SHORTCUT="So." COM_SPORTSMANAGER_DAY_0_SHORTCUT="So."
COM_SPORTSMANAGER_DAY_1_SHORTCUT="Mo." COM_SPORTSMANAGER_DAY_1_SHORTCUT="Mo."
@@ -260,6 +265,7 @@ COM_SPORTSMANAGER_IN="in"
COM_SPORTSMANAGER_NATIONAL="Nationale" COM_SPORTSMANAGER_NATIONAL="Nationale"
COM_SPORTSMANAGER_INTERNATIONAL="Internationale" COM_SPORTSMANAGER_INTERNATIONAL="Internationale"
COM_SPORTSMANAGER_PLAYER_NUMBER_SHORT="Spielernr." COM_SPORTSMANAGER_PLAYER_NUMBER_SHORT="Spielernr."
COM_SPORTSMANAGER_ASSOCIATION_SHORT_NAME="Verbands-Kürzel"
COM_SPORTSMANAGER_BASIC_PLAYER_NUMBER_SHORT="Basis-Spielernr." COM_SPORTSMANAGER_BASIC_PLAYER_NUMBER_SHORT="Basis-Spielernr."
COM_SPORTSMANAGER_MESSAGES="Meldungen" COM_SPORTSMANAGER_MESSAGES="Meldungen"
COM_SPORTSMANAGER_TOURNAMENT_PLACEMENT="Turnierplatzierungen" COM_SPORTSMANAGER_TOURNAMENT_PLACEMENT="Turnierplatzierungen"
@@ -311,6 +317,10 @@ COM_SPORTSMANAGER_FOR_OTHER_CONTACT="F&uuml;r andere Ansprechpartner"
COM_SPORTSMANAGER_DATES_REGISTERED_USERS="Termine beantragten durch angemeldete Benutzer" COM_SPORTSMANAGER_DATES_REGISTERED_USERS="Termine beantragten durch angemeldete Benutzer"
COM_SPORTSMANAGER_VIEW_ELO_RATING="Elo-Wertung anzeigen" COM_SPORTSMANAGER_VIEW_ELO_RATING="Elo-Wertung anzeigen"
COM_SPORTSMANAGER_VIEW_SPORTSMANAGER_LIZENZ="Lizenz anzeigen" COM_SPORTSMANAGER_VIEW_SPORTSMANAGER_LIZENZ="Lizenz anzeigen"
COM_SPORTSMANAGER_VIEW_LEAST_MEMBER_COUNT="Mindest Mitgliederzahl zeigen (Vereine)"
COM_SPORTSMANAGER_SHOW_ORGANISATION="Spalte Verband zeigen (Vereine)"
COM_SPORTSMANAGER_SHOW_MEMBER_COUNT="Spalte Mitglieder Zeigen (Vereine)"
COM_SPORTSMANAGER_SHOW_TOURNAMENT_BRACKET="Turnierbaum anzeigen"
COM_SPORTSMANAGER_PLAYER_DETAILS="Spielerdetails" COM_SPORTSMANAGER_PLAYER_DETAILS="Spielerdetails"
COM_SPORTSMANAGER_PLAYER_LIST_DETAILS="Spielerliste/-details" COM_SPORTSMANAGER_PLAYER_LIST_DETAILS="Spielerliste/-details"
COM_SPORTSMANAGER_PLAYER_EDIT="Spielerdaten durch Organisations-/Vereinsansprechpartner bearbeiten" COM_SPORTSMANAGER_PLAYER_EDIT="Spielerdaten durch Organisations-/Vereinsansprechpartner bearbeiten"
@@ -380,6 +390,7 @@ COM_SPORTSMANAGER_MEMBER_STATUS="Mitgliedsstatus"
COM_SPORTSMANAGER_ACTIVE="Aktiv" COM_SPORTSMANAGER_ACTIVE="Aktiv"
COM_SPORTSMANAGER_RESTRICTED="Eingeschränkt" COM_SPORTSMANAGER_RESTRICTED="Eingeschränkt"
COM_SPORTSMANAGER_BEATEN="Ausgetreten" COM_SPORTSMANAGER_BEATEN="Ausgetreten"
COM_SPORTSMANAGER_HIDE="Verstecken"
COM_SPORTSMANAGER_PASSIVE="Passiv" COM_SPORTSMANAGER_PASSIVE="Passiv"
COM_SPORTSMANAGER_BEATEN_CLUB="Verein ausgetreten" COM_SPORTSMANAGER_BEATEN_CLUB="Verein ausgetreten"
COM_SPORTSMANAGER_SINGLE_SEED="Elo-Startwert Einzel" COM_SPORTSMANAGER_SINGLE_SEED="Elo-Startwert Einzel"
@@ -606,7 +617,10 @@ COM_SPORTSMANAGER_ONLY_DETAILED_RATING_POINT_DIFFERENCE="Nur Detailwertung nach
COM_SPORTSMANAGER_ONLY_DETAILED_POINTS_AFTER_POINTSRATE="Nur Detailwertung nach Punktequote" COM_SPORTSMANAGER_ONLY_DETAILED_POINTS_AFTER_POINTSRATE="Nur Detailwertung nach Punktequote"
COM_SPORTSMANAGER_KO_SIMPLE_FULL="K.O. (einfach oder vollstaendige Ausspielung aller Plaetze)" COM_SPORTSMANAGER_KO_SIMPLE_FULL="K.O. (einfach oder vollstaendige Ausspielung aller Plaetze)"
COM_SPORTSMANAGER_MANUAL_PRO_TEAMS="Manuell (pro Mannschaft)" COM_SPORTSMANAGER_MANUAL_PRO_TEAMS="Manuell (pro Mannschaft)"
COM_SPORTSMANAGER_CUP_DRAW_EVERY_ROUND="Pokal: Jede Runde wird neu gelost"
COM_SPORTSMANAGER_CUP_USING_SEEDING_LIST="Pokal: Losen einer Setzliste"
COM_SPORTSMANAGER_SUBDIVISION="Unterteilung" COM_SPORTSMANAGER_SUBDIVISION="Unterteilung"
COM_SPORTSMANAGER_SHOW_MATCHDAY_TITLE="Titel von Spieltag zeigen"
COM_SPORTSMANAGER_ELO_RATING="ELO-Wertung" COM_SPORTSMANAGER_ELO_RATING="ELO-Wertung"
COM_SPORTSMANAGER_ELIGIBLE_FOR_EVENT="Berechtigte f&uuml;r Veranstaltung" COM_SPORTSMANAGER_ELIGIBLE_FOR_EVENT="Berechtigte f&uuml;r Veranstaltung"
COM_SPORTSMANAGER_TITLE_LOGO="Titel-Logo" COM_SPORTSMANAGER_TITLE_LOGO="Titel-Logo"
@@ -634,6 +648,9 @@ COM_SPORTSMANAGER_GAMEDAY="Spieltag"
COM_SPORTSMANAGER_GAMEDAYS="Spieltage" COM_SPORTSMANAGER_GAMEDAYS="Spieltage"
COM_SPORTSMANAGER_ROUND="Runde" COM_SPORTSMANAGER_ROUND="Runde"
COM_SPORTSMANAGER_ROUNDS="Runden" COM_SPORTSMANAGER_ROUNDS="Runden"
COM_SPORTSMANAGER_ROUND_TITLE="Runde Bezeichnung"
COM_SPORTSMANAGER_DRAW_FOR_HOME="Heimrecht auslosen"
COM_SPORTSMANAGER_MATCH_PLACE3="Spiel um Platz 3"
COM_SPORTSMANAGER_MONTH="Monat" COM_SPORTSMANAGER_MONTH="Monat"
COM_SPORTSMANAGER_MONTHS="Monate" COM_SPORTSMANAGER_MONTHS="Monate"
COM_SPORTSMANAGER_PLAYER_FROM_TEAM="Spieler von Mannschaft" COM_SPORTSMANAGER_PLAYER_FROM_TEAM="Spieler von Mannschaft"
@@ -649,7 +666,9 @@ COM_SPORTSMANAGER_SO_FAR="bisher"
COM_SPORTSMANAGER_PLACEMENT_AREA="Platzierungsbereich" COM_SPORTSMANAGER_PLACEMENT_AREA="Platzierungsbereich"
COM_SPORTSMANAGER_IMAGE_WITHIN_TEAM="Bild innerhalb Mannschaft" COM_SPORTSMANAGER_IMAGE_WITHIN_TEAM="Bild innerhalb Mannschaft"
COM_SPORTSMANAGER_ADD_MEETING="Begegnung hinzuf&uuml;gen" COM_SPORTSMANAGER_ADD_MEETING="Begegnung hinzuf&uuml;gen"
COM_SPORTSMANAGER_GAMEDAY_GENERATION="Spieltag erzeugen"
COM_SPORTSMANAGER_ROUND_GENERATION="Runde erzeugen" COM_SPORTSMANAGER_ROUND_GENERATION="Runde erzeugen"
COM_SPORTSMANAGER_CUP_ROUND_GENERATION="Pokalrunde auslosen"
COM_SPORTSMANAGER_GENERATE_GROUP_GAME="Gruppenspiele erzeugen" COM_SPORTSMANAGER_GENERATE_GROUP_GAME="Gruppenspiele erzeugen"
COM_SPORTSMANAGER_IMPORT_GROUP_GAME="Gruppenspiele importieren" COM_SPORTSMANAGER_IMPORT_GROUP_GAME="Gruppenspiele importieren"
COM_SPORTSMANAGER_IMPORT_GROUP_GAME2="Gruppenspiele: Importieren" COM_SPORTSMANAGER_IMPORT_GROUP_GAME2="Gruppenspiele: Importieren"
@@ -777,6 +796,7 @@ COM_SPORTSMANAGER_FEDERAL_STATES="Bundesl&auml;nder"
COM_SPORTSMANAGER_STATES="L&auml;nder" COM_SPORTSMANAGER_STATES="L&auml;nder"
COM_SPORTSMANAGER_YEAR="Jahr" COM_SPORTSMANAGER_YEAR="Jahr"
COM_SPORTSMANAGER_ADDITION="Zusatz" COM_SPORTSMANAGER_ADDITION="Zusatz"
COM_SPORTSMANAGER_LOCATION="Ort"
COM_SPORTSMANAGER_STATE="Land" COM_SPORTSMANAGER_STATE="Land"
COM_SPORTSMANAGER_FEDERAL_="Bundes-" COM_SPORTSMANAGER_FEDERAL_="Bundes-"
COM_SPORTSMANAGER_INFO="Info" COM_SPORTSMANAGER_INFO="Info"
@@ -875,6 +895,8 @@ COM_SPORTSMANAGER_OPTIONAL_BUT_SAME_IN_DOUBLES="Optional, aber im Doppel keiner
COM_SPORTSMANAGER_REQUIRED="Erforderlich" COM_SPORTSMANAGER_REQUIRED="Erforderlich"
COM_SPORTSMANAGER_RESULT_ONLY="Nur Ergebnis" COM_SPORTSMANAGER_RESULT_ONLY="Nur Ergebnis"
COM_SPORTSMANAGER_GAME_NUMBER="Spiel %d" COM_SPORTSMANAGER_GAME_NUMBER="Spiel %d"
COM_SPORTSMANAGER_LABEL_GAME_NUMBER="Spiel Nr"
COM_SPORTSMANAGER_LABEL_GAME_TITLE="Spieltag Titel"
COM_SPORTSMANAGER_EMAIL_SHIFT_GAME_APPOINTMENT_SUBJECT="%s vs %s: Spieltermin verlegen" COM_SPORTSMANAGER_EMAIL_SHIFT_GAME_APPOINTMENT_SUBJECT="%s vs %s: Spieltermin verlegen"
COM_SPORTSMANAGER_EMAIL_SHIFT_GAME_APPOINTMENT_BODY="Zur Begegnung %s gegen %s am %s in %s wird von %s der Spieltermin verschoben.\n\nAlternative Termine:\n\n" COM_SPORTSMANAGER_EMAIL_SHIFT_GAME_APPOINTMENT_BODY="Zur Begegnung %s gegen %s am %s in %s wird von %s der Spieltermin verschoben.\n\nAlternative Termine:\n\n"
COM_SPORTSMANAGER_EMAIL_SHIFT_GAME_APPOINTMENT_REQUESTED_BODY="Zur Begegnung %s gegen %s am %s in %s wird von %s der Spieltermin verschoben.\n\nBitte alternative Termine vorschlagen unter %s" COM_SPORTSMANAGER_EMAIL_SHIFT_GAME_APPOINTMENT_REQUESTED_BODY="Zur Begegnung %s gegen %s am %s in %s wird von %s der Spieltermin verschoben.\n\nBitte alternative Termine vorschlagen unter %s"
@@ -995,3 +1017,4 @@ COM_SPORTSMANAGER_ARIA_LABEL_CLUB="Verein"
COM_SPORTSMANAGER_NUM_REQUESTED_SHIFTS="Verschiebungen" COM_SPORTSMANAGER_NUM_REQUESTED_SHIFTS="Verschiebungen"
COM_SPORTSMANAGER_NUM_REQUESTED_SHFITS_TOOLTIP="Spielverschiebungen durch diese Mannschaft" COM_SPORTSMANAGER_NUM_REQUESTED_SHFITS_TOOLTIP="Spielverschiebungen durch diese Mannschaft"
COM_SPORTSMANAGER_GAME_RESULT_DELAYS="Verzögerung" COM_SPORTSMANAGER_GAME_RESULT_DELAYS="Verzögerung"
COM_SPORTSMANAGER_USE_EMAIL_REMINDERS="Verwende Email Erinnerungen"
@@ -21,6 +21,7 @@ COM_SPORTSMANAGER_LOCATIONS="Locations"
COM_SPORTSMANAGER_SEASONS="Seasons" COM_SPORTSMANAGER_SEASONS="Seasons"
COM_SPORTSMANAGER_TEAM_PLANS="Team plans" COM_SPORTSMANAGER_TEAM_PLANS="Team plans"
COM_SPORTSMANAGER_TEAM_NAME="Team name" COM_SPORTSMANAGER_TEAM_NAME="Team name"
COM_SPORTSMANAGER_TEAM_NAME_SHORT="Team name short (max 24)"
COM_SPORTSMANAGER_TEAM_NAME2="Club name" COM_SPORTSMANAGER_TEAM_NAME2="Club name"
COM_SPORTSMANAGER_TEAM_SEAT="Club location" COM_SPORTSMANAGER_TEAM_SEAT="Club location"
COM_SPORTSMANAGER_POSTPONE_RULES="Postpone rules" COM_SPORTSMANAGER_POSTPONE_RULES="Postpone rules"
@@ -38,6 +39,7 @@ COM_SPORTSMANAGER_ORGANISATION="Organisation"
COM_SPORTSMANAGER_TEAM_MEMBERS="Team members" COM_SPORTSMANAGER_TEAM_MEMBERS="Team members"
COM_SPORTSMANAGER_TEAM_MEMBERS2="Club members" COM_SPORTSMANAGER_TEAM_MEMBERS2="Club members"
COM_SPORTSMANAGER_MEMBERS="Members" COM_SPORTSMANAGER_MEMBERS="Members"
COM_SPORTSMANAGER_ACTIVE_MEMBERS="Active members"
COM_SPORTSMANAGER_TEAMS="Teams" COM_SPORTSMANAGER_TEAMS="Teams"
COM_SPORTSMANAGER_CURRENT_TEAMS="Current teams" COM_SPORTSMANAGER_CURRENT_TEAMS="Current teams"
COM_SPORTSMANAGER_PREVIOUS_TEAMS="Previous teams" COM_SPORTSMANAGER_PREVIOUS_TEAMS="Previous teams"
@@ -129,11 +131,14 @@ COM_SPORTSMANAGER_QUARTER_FINAL="Quarter final"
COM_SPORTSMANAGER_QUARTER_FINAL_SHORTCUT="1/4" COM_SPORTSMANAGER_QUARTER_FINAL_SHORTCUT="1/4"
COM_SPORTSMANAGER_ROUND_OF_16="Round of sixteen" COM_SPORTSMANAGER_ROUND_OF_16="Round of sixteen"
COM_SPORTSMANAGER_ROUND_OF_16_SHORTCUT="1/8" COM_SPORTSMANAGER_ROUND_OF_16_SHORTCUT="1/8"
COM_SPORTSMANAGER_ROUND_OF_32="Round of thiry-two" COM_SPORTSMANAGER_ROUND_OF_32="Round of thirty-two"
COM_SPORTSMANAGER_ROUND_OF_32_ALT="Round of thirty-two"
COM_SPORTSMANAGER_ROUND_OF_32_SHORTCUT="1/16" COM_SPORTSMANAGER_ROUND_OF_32_SHORTCUT="1/16"
COM_SPORTSMANAGER_ROUND_OF_64="Round of sixty-four" COM_SPORTSMANAGER_ROUND_OF_64="Round of sixty-four"
COM_SPORTSMANAGER_ROUND_OF_64_ALT="Round of sixty-four"
COM_SPORTSMANAGER_ROUND_OF_64_SHORTCUT="1/32" COM_SPORTSMANAGER_ROUND_OF_64_SHORTCUT="1/32"
COM_SPORTSMANAGER_ROUND_OF_128="Round of 128" COM_SPORTSMANAGER_ROUND_OF_128="Round of 128"
COM_SPORTSMANAGER_ROUND_OF_128_ALT="Round of 128"
COM_SPORTSMANAGER_ROUND_OF_128_SHORTCUT="1/64" COM_SPORTSMANAGER_ROUND_OF_128_SHORTCUT="1/64"
COM_SPORTSMANAGER_DAY_0_SHORTCUT="Su." COM_SPORTSMANAGER_DAY_0_SHORTCUT="Su."
COM_SPORTSMANAGER_DAY_1_SHORTCUT="Mo." COM_SPORTSMANAGER_DAY_1_SHORTCUT="Mo."
@@ -260,6 +265,7 @@ COM_SPORTSMANAGER_IN="in"
COM_SPORTSMANAGER_NATIONAL="National" COM_SPORTSMANAGER_NATIONAL="National"
COM_SPORTSMANAGER_INTERNATIONAL="International" COM_SPORTSMANAGER_INTERNATIONAL="International"
COM_SPORTSMANAGER_PLAYER_NUMBER_SHORT="Player number" COM_SPORTSMANAGER_PLAYER_NUMBER_SHORT="Player number"
COM_SPORTSMANAGER_ASSOCIATION_SHORT_NAME="Association short name"
COM_SPORTSMANAGER_BASIC_PLAYER_NUMBER_SHORT="Player number base" COM_SPORTSMANAGER_BASIC_PLAYER_NUMBER_SHORT="Player number base"
COM_SPORTSMANAGER_MESSAGES="Registrations" COM_SPORTSMANAGER_MESSAGES="Registrations"
COM_SPORTSMANAGER_TOURNAMENT_PLACEMENT="Tournament placements" COM_SPORTSMANAGER_TOURNAMENT_PLACEMENT="Tournament placements"
@@ -311,6 +317,10 @@ COM_SPORTSMANAGER_FOR_OTHER_CONTACT="For other contact"
COM_SPORTSMANAGER_DATES_REGISTERED_USERS="Apply dates by registered users" COM_SPORTSMANAGER_DATES_REGISTERED_USERS="Apply dates by registered users"
COM_SPORTSMANAGER_VIEW_ELO_RATING="View Elo rating" COM_SPORTSMANAGER_VIEW_ELO_RATING="View Elo rating"
COM_SPORTSMANAGER_VIEW_SPORTSMANAGER_LIZENZ="Show License" COM_SPORTSMANAGER_VIEW_SPORTSMANAGER_LIZENZ="Show License"
COM_SPORTSMANAGER_VIEW_LEAST_MEMBER_COUNT="Show least member count (teams)"
COM_SPORTSMANAGER_SHOW_ORGANISATION="Show organisation (teams)"
COM_SPORTSMANAGER_SHOW_MEMBER_COUNT="Show member column (teams)"
COM_SPORTSMANAGER_SHOW_TOURNAMENT_BRACKET="Show Tournament Bracket"
COM_SPORTSMANAGER_PLAYER_DETAILS="Player details" COM_SPORTSMANAGER_PLAYER_DETAILS="Player details"
COM_SPORTSMANAGER_PLAYER_LIST_DETAILS="Player list details" COM_SPORTSMANAGER_PLAYER_LIST_DETAILS="Player list details"
COM_SPORTSMANAGER_PLAYER_EDIT="Edit player data by organisation/club contacts" COM_SPORTSMANAGER_PLAYER_EDIT="Edit player data by organisation/club contacts"
@@ -380,6 +390,7 @@ COM_SPORTSMANAGER_MEMBER_STATUS="Member status"
COM_SPORTSMANAGER_ACTIVE="Active" COM_SPORTSMANAGER_ACTIVE="Active"
COM_SPORTSMANAGER_RESTRICTED="Restricted" COM_SPORTSMANAGER_RESTRICTED="Restricted"
COM_SPORTSMANAGER_BEATEN="Excreted" COM_SPORTSMANAGER_BEATEN="Excreted"
COM_SPORTSMANAGER_HIDE="Hide"
COM_SPORTSMANAGER_PASSIVE="Passive" COM_SPORTSMANAGER_PASSIVE="Passive"
COM_SPORTSMANAGER_BEATEN_CLUB="Club excreted" COM_SPORTSMANAGER_BEATEN_CLUB="Club excreted"
COM_SPORTSMANAGER_SINGLE_SEED="Elo starting value singles" COM_SPORTSMANAGER_SINGLE_SEED="Elo starting value singles"
@@ -606,7 +617,10 @@ COM_SPORTSMANAGER_ONLY_DETAILED_RATING_POINT_DIFFERENCE="Only detailed ranking b
COM_SPORTSMANAGER_ONLY_DETAILED_POINTS_AFTER_POINTSRATE="Only detailed ranking by points rate" COM_SPORTSMANAGER_ONLY_DETAILED_POINTS_AFTER_POINTSRATE="Only detailed ranking by points rate"
COM_SPORTSMANAGER_KO_SIMPLE_FULL="K.O. (singles or full playout of all places)" COM_SPORTSMANAGER_KO_SIMPLE_FULL="K.O. (singles or full playout of all places)"
COM_SPORTSMANAGER_MANUAL_PRO_TEAMS="Manual (per team)" COM_SPORTSMANAGER_MANUAL_PRO_TEAMS="Manual (per team)"
COM_SPORTSMANAGER_CUP_DRAW_EVERY_ROUND="Cup: draw every round"
COM_SPORTSMANAGER_CUP_USING_SEEDING_LIST="Cup: draw seeding list"
COM_SPORTSMANAGER_SUBDIVISION="Subdivision" COM_SPORTSMANAGER_SUBDIVISION="Subdivision"
COM_SPORTSMANAGER_SHOW_MATCHDAY_TITLE="Show title matchday"
COM_SPORTSMANAGER_ELO_RATING="Elo rating" COM_SPORTSMANAGER_ELO_RATING="Elo rating"
COM_SPORTSMANAGER_ELIGIBLE_FOR_EVENT="Eligibles for competition" COM_SPORTSMANAGER_ELIGIBLE_FOR_EVENT="Eligibles for competition"
COM_SPORTSMANAGER_TITLE_LOGO="Title logo" COM_SPORTSMANAGER_TITLE_LOGO="Title logo"
@@ -634,6 +648,9 @@ COM_SPORTSMANAGER_GAMEDAY="Gameday"
COM_SPORTSMANAGER_GAMEDAYS="Gamedays" COM_SPORTSMANAGER_GAMEDAYS="Gamedays"
COM_SPORTSMANAGER_ROUND="Round" COM_SPORTSMANAGER_ROUND="Round"
COM_SPORTSMANAGER_ROUNDS="Rounds" COM_SPORTSMANAGER_ROUNDS="Rounds"
COM_SPORTSMANAGER_ROUND_TITLE="Round Title"
COM_SPORTSMANAGER_DRAW_FOR_HOME="Draw for home"
COM_SPORTSMANAGER_MATCH_PLACE3="Match for place 3"
COM_SPORTSMANAGER_MONTH="Month" COM_SPORTSMANAGER_MONTH="Month"
COM_SPORTSMANAGER_MONTHS="Months" COM_SPORTSMANAGER_MONTHS="Months"
COM_SPORTSMANAGER_PLAYER_FROM_TEAM="Player of team" COM_SPORTSMANAGER_PLAYER_FROM_TEAM="Player of team"
@@ -649,7 +666,9 @@ COM_SPORTSMANAGER_SO_FAR="so far"
COM_SPORTSMANAGER_PLACEMENT_AREA="Placement area" COM_SPORTSMANAGER_PLACEMENT_AREA="Placement area"
COM_SPORTSMANAGER_IMAGE_WITHIN_TEAM="Image within team" COM_SPORTSMANAGER_IMAGE_WITHIN_TEAM="Image within team"
COM_SPORTSMANAGER_ADD_MEETING="Add match" COM_SPORTSMANAGER_ADD_MEETING="Add match"
COM_SPORTSMANAGER_GAMEDAY_GENERATION="Generate gameday"
COM_SPORTSMANAGER_ROUND_GENERATION="Generate round" COM_SPORTSMANAGER_ROUND_GENERATION="Generate round"
COM_SPORTSMANAGER_CUP_ROUND_GENERATION="Generate cup round"
COM_SPORTSMANAGER_GENERATE_GROUP_GAME="Generate group games" COM_SPORTSMANAGER_GENERATE_GROUP_GAME="Generate group games"
COM_SPORTSMANAGER_Import_GROUP_GAME="Import group games" COM_SPORTSMANAGER_Import_GROUP_GAME="Import group games"
COM_SPORTSMANAGER_Import_GROUP_GAME2="Group games: Import" COM_SPORTSMANAGER_Import_GROUP_GAME2="Group games: Import"
@@ -777,6 +796,7 @@ COM_SPORTSMANAGER_FEDERAL_STATES="State"
COM_SPORTSMANAGER_STATES="Countries" COM_SPORTSMANAGER_STATES="Countries"
COM_SPORTSMANAGER_YEAR="Year" COM_SPORTSMANAGER_YEAR="Year"
COM_SPORTSMANAGER_ADDITION="Addition" COM_SPORTSMANAGER_ADDITION="Addition"
COM_SPORTSMANAGER_LOCATION="Location"
COM_SPORTSMANAGER_STATE="Germany" COM_SPORTSMANAGER_STATE="Germany"
COM_SPORTSMANAGER_FEDERAL_="Federal " COM_SPORTSMANAGER_FEDERAL_="Federal "
COM_SPORTSMANAGER_INFO="Info" COM_SPORTSMANAGER_INFO="Info"
@@ -875,6 +895,8 @@ COM_SPORTSMANAGER_OPTIONAL_BUT_SAME_IN_DOUBLES="Optional but both or none in dou
COM_SPORTSMANAGER_REQUIRED="Required" COM_SPORTSMANAGER_REQUIRED="Required"
COM_SPORTSMANAGER_RESULT_ONLY="Result only" COM_SPORTSMANAGER_RESULT_ONLY="Result only"
COM_SPORTSMANAGER_GAME_NUMBER="Game %d" COM_SPORTSMANAGER_GAME_NUMBER="Game %d"
COM_SPORTSMANAGER_LABEL_GAME_NUMBER="Game nr"
COM_SPORTSMANAGER_LABEL_GAME_TITLE="Gameday title"
COM_SPORTSMANAGER_EMAIL_SHIFT_GAME_APPOINTMENT_SUBJECT="%s vs %s: Shift game appointment" COM_SPORTSMANAGER_EMAIL_SHIFT_GAME_APPOINTMENT_SUBJECT="%s vs %s: Shift game appointment"
COM_SPORTSMANAGER_EMAIL_SHIFT_GAME_APPOINTMENT_BODY="For match %s versus %s on %s in %s the game appointment is shifted by %s.\n\nAlternative appointments:\n\n" COM_SPORTSMANAGER_EMAIL_SHIFT_GAME_APPOINTMENT_BODY="For match %s versus %s on %s in %s the game appointment is shifted by %s.\n\nAlternative appointments:\n\n"
COM_SPORTSMANAGER_EMAIL_SHIFT_GAME_APPOINTMENT_REQUESTED_BODY="For match %s on %s in %s the game appointment is shifted by %s.\n\nPlease propose alternative appointments under %s" COM_SPORTSMANAGER_EMAIL_SHIFT_GAME_APPOINTMENT_REQUESTED_BODY="For match %s on %s in %s the game appointment is shifted by %s.\n\nPlease propose alternative appointments under %s"
@@ -993,3 +1015,4 @@ COM_SPORTSMANAGER_ARIA_LABEL_CLUB="Club"
COM_SPORTSMANAGER_NUM_REQUESTED_SHIFTS="Shifts" COM_SPORTSMANAGER_NUM_REQUESTED_SHIFTS="Shifts"
COM_SPORTSMANAGER_NUM_REQUESTED_SHFITS_TOOLTIP="Game shifts caused by this team" COM_SPORTSMANAGER_NUM_REQUESTED_SHFITS_TOOLTIP="Game shifts caused by this team"
COM_SPORTSMANAGER_GAME_RESULT_DELAYS="Delay" COM_SPORTSMANAGER_GAME_RESULT_DELAYS="Delay"
COM_SPORTSMANAGER_USE_EMAIL_REMINDERS="Use email reminders"
+28 -3
View File
@@ -137,6 +137,7 @@ return new class () implements InstallerScriptInterface
. "\n `tisch` tinytext DEFAULT NULL," . "\n `tisch` tinytext DEFAULT NULL,"
. "\n `zeitpunkt` datetime DEFAULT NULL," . "\n `zeitpunkt` datetime DEFAULT NULL,"
. "\n `spieltag` smallint(6) DEFAULT NULL," . "\n `spieltag` smallint(6) DEFAULT NULL,"
. "\n `spieltag_titel` VARCHAR(32) NOT NULL DEFAULT '',"
. "\n `spiel_nr` tinyint(4) DEFAULT NULL," . "\n `spiel_nr` tinyint(4) DEFAULT NULL,"
. "\n `heim_punkte` smallint(6) DEFAULT NULL," . "\n `heim_punkte` smallint(6) DEFAULT NULL,"
. "\n `gast_punkte` smallint(6) DEFAULT NULL," . "\n `gast_punkte` smallint(6) DEFAULT NULL,"
@@ -682,7 +683,8 @@ return new class () implements InstallerScriptInterface
. "\n `verein_id` int(11) DEFAULT NULL," . "\n `verein_id` int(11) DEFAULT NULL,"
. "\n `veranstaltung_id` int(11) NOT NULL DEFAULT '0'," . "\n `veranstaltung_id` int(11) NOT NULL DEFAULT '0',"
. "\n `setzliste_nr` tinyint(4) DEFAULT NULL," . "\n `setzliste_nr` tinyint(4) DEFAULT NULL,"
. "\n `teamname` varchar(50) NOT NULL," . "\n `teamname` varchar(50) NOT NULL DEFAULT '',"
. "\n `teamname_kurz` VARCHAR(24) NOT NULL DEFAULT '',"
. "\n `tischtyp` varchar(200) DEFAULT NULL," . "\n `tischtyp` varchar(200) DEFAULT NULL,"
. "\n `tischeigenschaften` varchar(200) DEFAULT NULL," . "\n `tischeigenschaften` varchar(200) DEFAULT NULL,"
. "\n `zusatzpunkte` float(6,2) DEFAULT NULL," . "\n `zusatzpunkte` float(6,2) DEFAULT NULL,"
@@ -903,6 +905,7 @@ return new class () implements InstallerScriptInterface
. "\n `erster_tag` date NOT NULL DEFAULT '0000-00-00'," . "\n `erster_tag` date NOT NULL DEFAULT '0000-00-00',"
. "\n `letzter_tag` date DEFAULT NULL," . "\n `letzter_tag` date DEFAULT NULL,"
. "\n `kategorie` tinyint(4) DEFAULT '1'," . "\n `kategorie` tinyint(4) DEFAULT '1',"
. "\n `reminder_count` tinyint DEFAULT '0',"
. "\n PRIMARY KEY (`turnier_id`)," . "\n PRIMARY KEY (`turnier_id`),"
. "\n KEY `saison_id` (`saison_id`)," . "\n KEY `saison_id` (`saison_id`),"
. "\n KEY `veranstalter_id` (`veranstalter_id`)" . "\n KEY `veranstalter_id` (`veranstalter_id`)"
@@ -1011,7 +1014,7 @@ return new class () implements InstallerScriptInterface
. "\n `kommentar` varchar(255) DEFAULT NULL," . "\n `kommentar` varchar(255) DEFAULT NULL,"
. "\n `vorgeschlagen` datetime DEFAULT NULL," . "\n `vorgeschlagen` datetime DEFAULT NULL,"
. "\n PRIMARY KEY (`unbestaetigtes_ergebnis_id`)," . "\n PRIMARY KEY (`unbestaetigtes_ergebnis_id`),"
. "\n KEY `begegnung_id` (`begegnung_id`)," . "\n UNIQUE KEY `begegnung_id` (`begegnung_id`),"
. "\n KEY `vorschlagendes_team_id` (`vorschlagendes_team_id`)" . "\n KEY `vorschlagendes_team_id` (`vorschlagendes_team_id`)"
. "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;";
$db->setQuery( $query ); $db->setQuery( $query );
@@ -1037,6 +1040,7 @@ return new class () implements InstallerScriptInterface
. "\n `tabellenwertung` tinyint(4) NOT NULL DEFAULT '0'," . "\n `tabellenwertung` tinyint(4) NOT NULL DEFAULT '0',"
. "\n `direktervergleich` tinyint(4) NOT NULL DEFAULT '0'," . "\n `direktervergleich` tinyint(4) NOT NULL DEFAULT '0',"
. "\n `unterteilung` tinyint(4) NOT NULL DEFAULT '0'," . "\n `unterteilung` tinyint(4) NOT NULL DEFAULT '0',"
. "\n `spieltag_titel_zeigen` INT(4) NOT NULL DEFAULT '0',"
. "\n `erster_tag` date NOT NULL DEFAULT '0000-00-00'," . "\n `erster_tag` date NOT NULL DEFAULT '0000-00-00',"
. "\n `letzter_tag` date DEFAULT NULL," . "\n `letzter_tag` date DEFAULT NULL,"
. "\n `elo_wertung` tinyint(4) DEFAULT NULL," . "\n `elo_wertung` tinyint(4) DEFAULT NULL,"
@@ -1063,6 +1067,7 @@ return new class () implements InstallerScriptInterface
. "\n `url` varchar(150) DEFAULT NULL," . "\n `url` varchar(150) DEFAULT NULL,"
. "\n `beschreibung` varchar(500) DEFAULT NULL," . "\n `beschreibung` varchar(500) DEFAULT NULL,"
. "\n `ausgetreten` tinyint(1) DEFAULT '0'," . "\n `ausgetreten` tinyint(1) DEFAULT '0',"
. "\n `verstecken` INT(4) NOT NULL DEFAULT '0',"
. "\n PRIMARY KEY (`verein_id`)," . "\n PRIMARY KEY (`verein_id`),"
. "\n KEY `veranstalter_id` (`veranstalter_id`)" . "\n KEY `veranstalter_id` (`veranstalter_id`)"
. "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"; . "\n) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;";
@@ -1113,7 +1118,7 @@ return new class () implements InstallerScriptInterface
$db->setQuery( $query ); $db->setQuery( $query );
if (!$db->execute()) { die($db->stderr(true)); } if (!$db->execute()) { die($db->stderr(true)); }
$query = "INSERT IGNORE #__sportsmanager_einstellungen SET name = 'datenbank_version', wert = '103';"; $query = "INSERT IGNORE #__sportsmanager_einstellungen SET name = 'datenbank_version', wert = '108';";
$db->setQuery( $query ); $db->setQuery( $query );
if (!$db->execute()) { die($db->stderr(true)); } if (!$db->execute()) { die($db->stderr(true)); }
@@ -1133,6 +1138,26 @@ return new class () implements InstallerScriptInterface
$db->setQuery( $query ); $db->setQuery( $query );
if (!$db->execute()) { die($db->stderr(true)); } if (!$db->execute()) { die($db->stderr(true)); }
$query = "INSERT IGNORE #__sportsmanager_einstellungen SET name = 'anzahl_mitglieder_zeigen', wert = '0';";
$db->setQuery( $query );
if (!$db->execute()) { die($db->stderr(true)); }
$query = "INSERT IGNORE #__sportsmanager_einstellungen SET name = 'verband_anzeigen', wert = '1';";
$db->setQuery( $query );
if (!$db->execute()) { die($db->stderr(true)); }
$query = "INSERT IGNORE #__sportsmanager_einstellungen SET name = 'turnierbaum_zeigen', wert = '0';";
$db->setQuery( $query );
if (!$db->execute()) { die($db->stderr(true)); }
$query = "INSERT IGNORE #__sportsmanager_einstellungen SET name = 'spalte_mitglieder_zeigen', wert = '1';";
$db->setQuery( $query );
if (!$db->execute()) { die($db->stderr(true)); }
$query = "INSERT IGNORE #__sportsmanager_einstellungen SET name = 'enable_email_reminders', wert = '0';";
$db->setQuery( $query );
if (!$db->execute()) { die($db->stderr(true)); }
$query = "INSERT INTO #__sportsmanager_verschieberegel (bezeichnung, initial_ohne_termin, keine_gegenvorschlaege, vorlaufzeit_tage, termine_minimal, termine_maximal, ablehnen)" $query = "INSERT INTO #__sportsmanager_verschieberegel (bezeichnung, initial_ohne_termin, keine_gegenvorschlaege, vorlaufzeit_tage, termine_minimal, termine_maximal, ablehnen)"
. "\n VALUES ('Beliebig', '0', '0', '0', '1', '3', '0');"; . "\n VALUES ('Beliebig', '0', '0', '0', '1', '3', '0');";
$db->setQuery($query); $db->setQuery($query);
+1 -1
View File
@@ -6,7 +6,7 @@
<authorEmail>it@dtfb.de</authorEmail> <authorEmail>it@dtfb.de</authorEmail>
<copyright>All rights reserved</copyright> <copyright>All rights reserved</copyright>
<license>GNU/GPL</license> <license>GNU/GPL</license>
<version>2.0.0</version> <version>DEV</version>
<description>Verwaltung von Spielern und Vereinen in Mannschafts- und Individualwettbewerben</description> <description>Verwaltung von Spielern und Vereinen in Mannschafts- und Individualwettbewerben</description>
<namespace path="src">Dtfb\Component\com_sportsmanager</namespace> <namespace path="src">Dtfb\Component\com_sportsmanager</namespace>
<files folder="site"> <files folder="site">