Compare commits

..

79 Commits

Author SHA1 Message Date
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
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
12 changed files with 1895 additions and 454 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
@@ -656,6 +656,9 @@ function adminEinstellungen(): void
$ansprechpartner_exportieren = $jInput->get('ansprechpartner_exportieren', 0, 'INT'); $ansprechpartner_exportieren = $jInput->get('ansprechpartner_exportieren', 0, 'INT');
$spielerliste_elo = $jInput->get('spielerliste_elo', 0, 'INT'); $spielerliste_elo = $jInput->get('spielerliste_elo', 0, 'INT');
$lizenz_anzeigen = $jInput->get('lizenz_anzeigen', 0, 'INT'); $lizenz_anzeigen = $jInput->get('lizenz_anzeigen', 0, 'INT');
$anzahl_mitglieder_zeigen = $jInput->get('anzahl_mitglieder_zeigen', 0, 'INT');
$verband_anzeigen = $jInput->get('verband_anzeigen', 0, 'INT');
$turnierbaum_zeigen = $jInput->get('turnierbaum_zeigen', 0, 'INT');
$termine_beantragen = $jInput->get('termine_beantragen', 0, 'INT'); $termine_beantragen = $jInput->get('termine_beantragen', 0, 'INT');
$spielerimport_persoenliche_daten_vorauswahl = $jInput->get('spielerimport_persoenliche_daten_vorauswahl', 0, 'INT'); $spielerimport_persoenliche_daten_vorauswahl = $jInput->get('spielerimport_persoenliche_daten_vorauswahl', 0, 'INT');
@@ -698,6 +701,30 @@ function adminEinstellungen(): void
die($db->stderr(true)); die($db->stderr(true));
} }
$query = "REPLACE #__sportsmanager_einstellungen"
. "\n SET name = 'anzahl_mitglieder_zeigen'"
. ", wert = '$anzahl_mitglieder_zeigen'";
$db->setQuery($query);
if (!$db->execute()) {
die($db->stderr(true));
}
$query = "REPLACE #__sportsmanager_einstellungen"
. "\n SET name = 'verband_anzeigen'"
. ", wert = '$verband_anzeigen'";
$db->setQuery($query);
if (!$db->execute()) {
die($db->stderr(true));
}
$query = "REPLACE #__sportsmanager_einstellungen"
. "\n SET name = 'turnierbaum_zeigen'"
. ", wert = '$turnierbaum_zeigen'";
$db->setQuery($query);
if (!$db->execute()) {
die($db->stderr(true));
}
$query = "REPLACE #__sportsmanager_einstellungen" $query = "REPLACE #__sportsmanager_einstellungen"
. "\n SET name = 'ansprechpartner_ausblenden'" . "\n SET name = 'ansprechpartner_ausblenden'"
. ", wert = '$ansprechpartner_ausblenden'"; . ", wert = '$ansprechpartner_ausblenden'";
@@ -3305,6 +3332,7 @@ function adminEditVerein(): void
$url = $db->escape(trim($jInput->get('url', '', 'RAW'))); $url = $db->escape(trim($jInput->get('url', '', 'RAW')));
$beschreibung = $db->escape(trim($jInput->get('beschreibung', '', 'RAW'))); $beschreibung = $db->escape(trim($jInput->get('beschreibung', '', 'RAW')));
$ausgetreten = $jInput->get('ausgetreten', 0, 'INT'); $ausgetreten = $jInput->get('ausgetreten', 0, 'INT');
$verstecken = $jInput->get('verstecken', 0, 'INT');
$bildbeibehalten = $jInput->get('bildbeibehalten', 0, 'INT'); $bildbeibehalten = $jInput->get('bildbeibehalten', 0, 'INT');
$berechtigt_fuer_verein_user_ids = array($jInput->get('berechtigt_fuer_verein_user_1_id', 0, 'INT'), $berechtigt_fuer_verein_user_ids = array($jInput->get('berechtigt_fuer_verein_user_1_id', 0, 'INT'),
@@ -3319,8 +3347,8 @@ function adminEditVerein(): void
} }
if ($id == 0) { if ($id == 0) {
$query = "INSERT INTO #__sportsmanager_verein (vereinsname, vereinssitz, vereinssitz_ortsteil, veranstalter_id, url, beschreibung, ausgetreten)" $query = "INSERT INTO #__sportsmanager_verein (vereinsname, vereinssitz, vereinssitz_ortsteil, veranstalter_id, url, beschreibung, ausgetreten, verstecken)"
. "\n VALUES ('$vereinsname', '$vereinssitz', '$vereinssitz_ortsteil', " . ($veranstalter_id != 0 ? "'$veranstalter_id'" : "NULL") . ", '$url', '$beschreibung', " . ($ausgetreten ? "TRUE" : "FALSE") . ");"; . "\n VALUES ('$vereinsname', '$vereinssitz', '$vereinssitz_ortsteil', " . ($veranstalter_id != 0 ? "'$veranstalter_id'" : "NULL") . ", '$url', '$beschreibung', " . ($ausgetreten ? "TRUE" : "FALSE") . ", $verstecken);";
$db->setQuery($query); $db->setQuery($query);
if (!$db->execute()) { if (!$db->execute()) {
die($db->stderr(true)); die($db->stderr(true));
@@ -3334,7 +3362,8 @@ function adminEditVerein(): void
. "\n veranstalter_id = " . ($veranstalter_id != 0 ? "'$veranstalter_id'" : "NULL") . "," . "\n veranstalter_id = " . ($veranstalter_id != 0 ? "'$veranstalter_id'" : "NULL") . ","
. "\n url = '$url'," . "\n url = '$url',"
. "\n beschreibung = '$beschreibung'," . "\n beschreibung = '$beschreibung',"
. "\n ausgetreten = " . ($ausgetreten ? "TRUE" : "FALSE") . "\n ausgetreten = " . ($ausgetreten ? "TRUE" : "FALSE") . ","
. "\n verstecken = '$verstecken'"
. "\n WHERE verein_id = $id"; . "\n WHERE verein_id = $id";
$db->setQuery($query); $db->setQuery($query);
if (!$db->execute()) { if (!$db->execute()) {
@@ -6075,6 +6104,7 @@ function adminEditVeranstaltung(): void
$tabellenwertung = $jInput->get('tabellenwertung', 0, 'INT'); $tabellenwertung = $jInput->get('tabellenwertung', 0, 'INT');
$direktervergleich = $jInput->get('direktervergleich', 0, 'INT'); $direktervergleich = $jInput->get('direktervergleich', 0, 'INT');
$unterteilung = $jInput->get('unterteilung', 0, 'INT'); $unterteilung = $jInput->get('unterteilung', 0, 'INT');
$spieltag_titel_zeigen = $jInput->get('spieltag_titel_zeigen', 0, 'INT');
$elo_wertung = $jInput->get('elo_wertung', 0, 'INT'); $elo_wertung = $jInput->get('elo_wertung', 0, 'INT');
$logo_url = $db->escape(trim($jInput->get('logo_url', '', 'RAW'))); $logo_url = $db->escape(trim($jInput->get('logo_url', '', 'RAW')));
$ticker_logo_url = $db->escape(trim($jInput->get('ticker_logo_url', '', 'RAW'))); $ticker_logo_url = $db->escape(trim($jInput->get('ticker_logo_url', '', 'RAW')));
@@ -6093,8 +6123,8 @@ function adminEditVeranstaltung(): void
$elo_aktualisieren = false; $elo_aktualisieren = false;
$spielerstatistik_aktualisieren = false; $spielerstatistik_aktualisieren = false;
if ($id == 0) { if ($id == 0) {
$query = "INSERT INTO #__sportsmanager_veranstaltung (veranstalter_id, saison_id, bezeichnung, erster_tag " . ($letzter_tag != null ? ", letzter_tag" : "") . ", modus_id, verschieberegel_id, tabellenwertung, direktervergleich, unterteilung, elo_wertung, logo_url, ticker_logo_url, status, reihenfolge, kategorie) VALUES $query = "INSERT INTO #__sportsmanager_veranstaltung (veranstalter_id, saison_id, bezeichnung, erster_tag " . ($letzter_tag != null ? ", letzter_tag" : "") . ", modus_id, verschieberegel_id, tabellenwertung, direktervergleich, unterteilung, spieltag_titel_zeigen, elo_wertung, logo_url, ticker_logo_url, status, reihenfolge, kategorie) VALUES
('$veranstalterId', '$saison_id', '$bezeichnung', '$erster_tag', " . ($letzter_tag != null ? "'$letzter_tag', " : "") . "'$modus_id', '$verschieberegel_id', '$tabellenwertung', '$direktervergleich', '$unterteilung', '$elo_wertung', '$logo_url', '$ticker_logo_url', '$status', '$reihenfolge', '$kategorie');"; ('$veranstalterId', '$saison_id', '$bezeichnung', '$erster_tag', " . ($letzter_tag != null ? "'$letzter_tag', " : "") . "'$modus_id', '$verschieberegel_id', '$tabellenwertung', '$direktervergleich', '$unterteilung', '$spieltag_titel_zeigen', '$elo_wertung', '$logo_url', '$ticker_logo_url', '$status', '$reihenfolge', '$kategorie');";
$db->setQuery($query); $db->setQuery($query);
if (!$db->execute()) { if (!$db->execute()) {
die($db->stderr(true)); die($db->stderr(true));
@@ -6119,6 +6149,7 @@ function adminEditVeranstaltung(): void
. "\n tabellenwertung = '$tabellenwertung'," . "\n tabellenwertung = '$tabellenwertung',"
. "\n direktervergleich = '$direktervergleich'," . "\n direktervergleich = '$direktervergleich',"
. "\n unterteilung = '$unterteilung'," . "\n unterteilung = '$unterteilung',"
. "\n spieltag_titel_zeigen = '$spieltag_titel_zeigen',"
. "\n elo_wertung = '$elo_wertung'," . "\n elo_wertung = '$elo_wertung',"
. "\n logo_url = '$logo_url'," . "\n logo_url = '$logo_url',"
. "\n ticker_logo_url = '$ticker_logo_url'," . "\n ticker_logo_url = '$ticker_logo_url',"
@@ -6381,6 +6412,7 @@ function adminEditMannschaft(): void
$beschraenkter_zugriff_veranstaltungen_ids = $beschraenkter_zugriff_veranstaltungen ? benutzerVeranstaltungIdsModerator() : null; $beschraenkter_zugriff_veranstaltungen_ids = $beschraenkter_zugriff_veranstaltungen ? benutzerVeranstaltungIdsModerator() : null;
$teamname = $db->escape(trim($jInput->get('teamname', '', 'RAW'))); $teamname = $db->escape(trim($jInput->get('teamname', '', 'RAW')));
$teamname_kurz = $db->escape(trim($jInput->get('teamname_kurz', '', 'RAW')));
$platz = $jInput->get('platz', 0, 'INT'); $platz = $jInput->get('platz', 0, 'INT');
$verein_id = $jInput->get('verein_id', 0, 'INT'); $verein_id = $jInput->get('verein_id', 0, 'INT');
$tischtyp = $db->escape(trim($jInput->get('tischtyp', '', 'RAW'))); $tischtyp = $db->escape(trim($jInput->get('tischtyp', '', 'RAW')));
@@ -6414,9 +6446,10 @@ function adminEditMannschaft(): void
$veranstaltung = $rows[0]; $veranstaltung = $rows[0];
if ($id == 0) { if ($id == 0) {
$query = "INSERT INTO #__sportsmanager_team (verein_id, veranstaltung_id, teamname, tischtyp, tischeigenschaften, heimspiel_wochentag, heimspiel_uhrzeit, heimspielort_id, nichtraucherschutz, zusatzpunkte" . ($veranstaltung->tabellenwertung == -2 ? ", platz" : "") . ", pin)" $query = "INSERT INTO #__sportsmanager_team (verein_id, veranstaltung_id, teamname, teamname_kurz, tischtyp, tischeigenschaften, heimspiel_wochentag, heimspiel_uhrzeit, heimspielort_id, nichtraucherschutz, zusatzpunkte" . ($veranstaltung->tabellenwertung == -2 ? ", platz" : "") . ", pin)"
. "\n VALUES (" . ($verein_id != 0 ? "'$verein_id'" : "NULL") . ", '$veranstaltungId', '$teamname', '$tischtyp', '$tischeigenschaften', '$heimspiel_wochentag', '$heimspiel_uhrzeit', " . ($heimspielort_id != 0 ? "'$heimspielort_id'" : "NULL") . ", '$nichtraucherschutz', '$zusatzpunkte'" . ($veranstaltung->tabellenwertung == -2 ? ($platz != 0 ? ", '$platz'" : ", NULL") : "") . ", '$pin');"; . "\n VALUES (" . ($verein_id != 0 ? "'$verein_id'" : "NULL") . ", '$veranstaltungId', '$teamname', '$teamname_kurz', '$tischtyp', '$tischeigenschaften', '$heimspiel_wochentag', '$heimspiel_uhrzeit', " . ($heimspielort_id != 0 ? "'$heimspielort_id'" : "NULL") . ", '$nichtraucherschutz', '$zusatzpunkte'" . ($veranstaltung->tabellenwertung == -2 ? ($platz != 0 ? ", '$platz'" : ", NULL") : "") . ", '$pin');";
$db->setQuery($query); echo $query;
$db->setQuery($query);
if (!$db->execute()) { if (!$db->execute()) {
die($db->stderr(true)); die($db->stderr(true));
} }
@@ -6437,6 +6470,7 @@ function adminEditMannschaft(): void
$query = "UPDATE #__sportsmanager_team" $query = "UPDATE #__sportsmanager_team"
. "\n SET verein_id = " . ($verein_id != 0 ? "'$verein_id'" : "NULL") . "," . "\n SET verein_id = " . ($verein_id != 0 ? "'$verein_id'" : "NULL") . ","
. "\n teamname = '$teamname'," . "\n teamname = '$teamname',"
. "\n teamname_kurz = '$teamname_kurz',"
. "\n tischtyp = '$tischtyp'," . "\n tischtyp = '$tischtyp',"
. "\n tischeigenschaften = '$tischeigenschaften'," . "\n tischeigenschaften = '$tischeigenschaften',"
. "\n heimspiel_wochentag = '$heimspiel_wochentag'," . "\n heimspiel_wochentag = '$heimspiel_wochentag',"
@@ -6662,6 +6696,7 @@ function mannschaftsgruppe_verknuepfen($quelle_team_id, $ziel_team_id, $mannscha
. "\n SET teamgruppe_id = '$teamgruppe_id'," . "\n SET teamgruppe_id = '$teamgruppe_id',"
. "\n verein_id = " . ($team->verein_id == null ? "NULL" : "'$team->verein_id'") . "," . "\n verein_id = " . ($team->verein_id == null ? "NULL" : "'$team->verein_id'") . ","
. "\n teamname = '" . $db->escape($team->teamname) . "'," . "\n teamname = '" . $db->escape($team->teamname) . "',"
. "\n teamname_kurz = '" . $db->escape($team->teamname_kurz) . "',"
. "\n tischtyp = '" . $db->escape($team->tischtyp) . "'," . "\n tischtyp = '" . $db->escape($team->tischtyp) . "',"
. "\n tischeigenschaften = '" . $db->escape($team->tischeigenschaften) . "'," . "\n tischeigenschaften = '" . $db->escape($team->tischeigenschaften) . "',"
. "\n heimspiel_wochentag = '" . $db->escape($team->heimspiel_wochentag) . "'," . "\n heimspiel_wochentag = '" . $db->escape($team->heimspiel_wochentag) . "',"
@@ -7681,7 +7716,7 @@ function adminBegegnungen(): void
. "\n LEFT JOIN #__sportsmanager_team AS t3 ON t1.gast_team_id = t3.team_id" . "\n LEFT JOIN #__sportsmanager_team AS t3 ON t1.gast_team_id = t3.team_id"
. "\n LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS t4 ON t1.begegnung_id = t4.begegnung_id" . "\n LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS t4 ON t1.begegnung_id = t4.begegnung_id"
. "\n WHERE t2.veranstaltung_id = $veranstaltungId" . "\n WHERE t2.veranstaltung_id = $veranstaltungId"
. "\n ORDER BY " . (($veranstaltung->unterteilung == 0 || $veranstaltung->unterteilung == 1) ? "t1.spieltag, " : "") . "t1.zeitpunkt, heim_name"; . "\n ORDER BY " . (($veranstaltung->unterteilung == 0 || $veranstaltung->unterteilung == 1) ? "t1.spieltag, t1.spiel_nr, " : "") . "t1.zeitpunkt, heim_name";
$rows = loadObjectList($db, $query); $rows = loadObjectList($db, $query);
HTML_sportsmanager_admin::adminBegegnungen($veranstaltung, $modus, $rows); HTML_sportsmanager_admin::adminBegegnungen($veranstaltung, $modus, $rows);
} }
@@ -9261,8 +9296,8 @@ function adminBegegnungenGenerierenForm(): void
if ($spiele[$spieltag][$spielnr][0] > $anzahlteams || $spiele[$spieltag][$spielnr][1] > $anzahlteams) if ($spiele[$spieltag][$spielnr][0] > $anzahlteams || $spiele[$spieltag][$spielnr][1] > $anzahlteams)
continue; continue;
$heim_team_id = $teamIds[$spiele[$spieltag][$spielnr][0]]; $heim_team_id = $teamIds[trim($spiele[$spieltag][$spielnr][0])];
$gast_team_id = $teamIds[$spiele[$spieltag][$spielnr][1]]; $gast_team_id = $teamIds[trim($spiele[$spieltag][$spielnr][1])];
$heim_team = null; $heim_team = null;
foreach ($teams as $t) { foreach ($teams as $t) {
@@ -9303,6 +9338,7 @@ function adminBegegnungenGenerierenForm(): void
$Begegnung[$Zeile]['zeitpunkt'] = $zeitpunkt; $Begegnung[$Zeile]['zeitpunkt'] = $zeitpunkt;
$Begegnung[$Zeile]['heim_team_id'] = $heim_team_id; $Begegnung[$Zeile]['heim_team_id'] = $heim_team_id;
$Begegnung[$Zeile]['gast_team_id'] = $gast_team_id; $Begegnung[$Zeile]['gast_team_id'] = $gast_team_id;
$Begegnung[$Zeile]['spiel_nr'] = $spielnr;
$Zeile++; $Zeile++;
@@ -9328,8 +9364,9 @@ function adminBegegnungenGenerierenForm(): void
$Begegnung[$Zeile]['spieltag'] = $spieltag_nr; $Begegnung[$Zeile]['spieltag'] = $spieltag_nr;
$Begegnung[$Zeile]['zeitpunkt'] = $zeitpunkt; $Begegnung[$Zeile]['zeitpunkt'] = $zeitpunkt;
$Begegnung[$Zeile]['heim_team_id'] = $heim_team_id; $Begegnung[$Zeile]['heim_team_id'] = $gast_team_id;
$Begegnung[$Zeile]['gast_team_id'] = $gast_team_id; $Begegnung[$Zeile]['gast_team_id'] = $heim_team_id;
$Begegnung[$Zeile]['spiel_nr'] = $spielnr;
$Zeile++; $Zeile++;
} }
@@ -9338,16 +9375,16 @@ function adminBegegnungenGenerierenForm(): void
if ($datumsangaben and $teams_ok and $spieltage_ok) { if ($datumsangaben and $teams_ok and $spieltage_ok) {
$Zeile = 1; $Zeile = 1;
$query = "INSERT INTO #__sportsmanager_begegnung (spieltag, zeitpunkt, heim_team_id, gast_team_id) VALUES "; $query = "INSERT INTO #__sportsmanager_begegnung (spieltag, spiel_nr, zeitpunkt, heim_team_id, gast_team_id) VALUES ";
foreach ($Begegnung as $value) { foreach ($Begegnung as $value) {
if ($Zeile > 1) { if ($Zeile > 1) {
$query .= ", "; $query .= ", ";
} }
$query .= "(" . $value['spieltag'] . "," . ($value['zeitpunkt'] != NULL ? "'" . $value['zeitpunkt'] . "'" : "NULL") . "," . $value['heim_team_id'] . "," . $value['gast_team_id'] . ") "; $query .= "(" . $value['spieltag'] . "," . $value['spiel_nr'] . "," . ($value['zeitpunkt'] != NULL ? "'" . $value['zeitpunkt'] . "'" : "NULL") . "," . $value['heim_team_id'] . "," . $value['gast_team_id'] . ") ";
$Zeile++; $Zeile++;
} }
$query .= ";"; $query .= ";";
echo $query;
$db->setQuery($query); $db->setQuery($query);
if (!$db->execute()) { if (!$db->execute()) {
@@ -9391,9 +9428,34 @@ function adminBegegnungenImportierenForm(): void
HTML_sportsmanager_admin::adminBegegnungenImportieren($veranstaltung); HTML_sportsmanager_admin::adminBegegnungenImportieren($veranstaltung);
} }
function vergleich($text1, $text2): bool
{
$suchen = ["_","-"," "];
$ersetzen = ["","",""];
$begriffe = explode(",", $text2);
foreach($begriffe as $begriff)
{
$text1 = strtolower(str_replace($suchen,$ersetzen,$text1));
$begriff = strtolower(str_replace($suchen,$ersetzen,$begriff));
if ($text1 == $begriff) return true;
}
return false;
}
function erstelleZeitpunkt($datum_jahr, $datum_kw, $heimspiel_wochentag, $heimspiel_uhrzeit): bool|string
{
if (!empty($datum_jahr) && !empty($datum_kw) && !empty($heimspiel_wochentag) && !empty($heimspiel_uhrzeit))
{
$ts = getdate(mondaykw($datum_kw, $datum_jahr, $heimspiel_wochentag - 1));
return sprintf("%04d-%02d-%02d %02d:%02d:%02d", $ts["year"], $ts["mon"], $ts["mday"],
floor($heimspiel_uhrzeit / 100), $heimspiel_uhrzeit % 100, 0);
}
else
return false;
}
function adminBegegnungenImportieren(): void function adminBegegnungenImportieren(): void
{ {
//Jürgen Meyer 07.03.2025
$db = getDatabase(); $db = getDatabase();
global $_FILES; global $_FILES;
$jInput = Factory::getContainer()->get(SiteApplication::class)->input; $jInput = Factory::getContainer()->get(SiteApplication::class)->input;
@@ -9411,13 +9473,18 @@ function adminBegegnungenImportieren(): void
echo Text::_('COM_SPORTSMANAGER_IMPORT_GROUP_GAME2') . " <br><br>"; echo Text::_('COM_SPORTSMANAGER_IMPORT_GROUP_GAME2') . " <br><br>";
$query = "SELECT team_id, teamname FROM #__sportsmanager_team WHERE veranstaltung_id = " . $veranstaltungId . ";"; $query = "SELECT team_id, teamname, heimspiel_wochentag, heimspiel_uhrzeit"
. "\n FROM #__sportsmanager_team"
. "\n WHERE veranstaltung_id = " . $veranstaltungId . ";";
$rows = loadObjectList($db, $query); $rows = loadObjectList($db, $query);
if (count($rows) < 1) die("Wrong id!"); if (count($rows) < 1) die("Wrong id!");
$Mannschaften = null; $Mannschaften = null;
foreach ($rows as $value) { foreach ($rows as $value) {
$Mannschaften[$value->teamname] = $value->team_id; $Mannschaften[$value->teamname]['team_id'] = $value->team_id;
$Mannschaften[$value->teamname]['heimspiel_wochentag'] = $value->heimspiel_wochentag;
$Mannschaften[$value->teamname]['heimspiel_uhrzeit'] = $value->heimspiel_uhrzeit;
} }
if (empty($_FILES["daten"]["tmp_name"]) || !is_uploaded_file($_FILES["daten"]["tmp_name"])) { if (empty($_FILES["daten"]["tmp_name"]) || !is_uploaded_file($_FILES["daten"]["tmp_name"])) {
@@ -9446,26 +9513,53 @@ function adminBegegnungenImportieren(): void
$import_zeile = false; $import_zeile = false;
while (($data = fgetcsv($handle, 1000, ";")) !== FALSE) { while (($data = fgetcsv($handle, 1000, ";")) !== FALSE) {
if ($Zeile == 1) { if ($Zeile == 1) {
$Titelzeile = array_flip($data); foreach($data as $spalte_nr => $spalte)
{
if (vergleich($spalte,"spieltagnr,spieltagnummer")) $Titelzeile['Spieltag_Nr'] = $spalte_nr;
if (vergleich($spalte,"spielstart,zeitpunkt")) $Titelzeile['Spielstart'] = $spalte_nr;
if (vergleich($spalte,"heim,heimteam,heimmannschaft")) $Titelzeile['Heim'] = $spalte_nr;
if (vergleich($spalte,"gast,gastteam,gastmannschaft")) $Titelzeile['Gast'] = $spalte_nr;
if (vergleich($spalte,"spielnr,spielnummer")) $Titelzeile['Spiel_Nr'] = $spalte_nr;
if (vergleich($spalte,"spieltagtitel")) $Titelzeile['Spieltag_Titel'] = $spalte_nr;
if (vergleich($spalte,"jahr,spieljahr")) $Titelzeile['Spieljahr'] = $spalte_nr;
if (vergleich($spalte,"kalenderwoche,woche,kw")) $Titelzeile['Kalenderwoche'] = $spalte_nr;
}
} else { } else {
$import_zeile = true; $import_zeile = true;
$bgcolor = "green"; $bgcolor = "green";
$Begegnung[$Zeile]['spieltag'] = $data[$Titelzeile['Spieltag_Nr']]; $Begegnung[$Zeile]['spieltag'] = $data[$Titelzeile['Spieltag_Nr']];
$Begegnung[$Zeile]['zeitpunkt'] = UhrzeitWandlerDE($data[$Titelzeile['Spielstart']]); $Begegnung[$Zeile]['zeitpunkt'] = UhrzeitWandlerDE($data[$Titelzeile['Spielstart']]);
$Begegnung[$Zeile]['heim_team_id'] = $Mannschaften[utf8_encode($data[$Titelzeile['Heim']])]; $Begegnung[$Zeile]['heim_team_id'] = $Mannschaften[$data[$Titelzeile['Heim']]]['team_id'];
$Begegnung[$Zeile]['gast_team_id'] = $Mannschaften[utf8_encode($data[$Titelzeile['Gast']])]; $Begegnung[$Zeile]['gast_team_id'] = $Mannschaften[$data[$Titelzeile['Gast']]]['team_id'];
if (isset($data[$Titelzeile['Spiel_Nr']])) $Begegnung[$Zeile]['spiel_nr'] = $data[$Titelzeile['Spiel_Nr']];
if (isset($data[$Titelzeile['Spieltag_Titel']])) $Begegnung[$Zeile]['spieltag_titel'] = $data[$Titelzeile['Spieltag_Titel']];
echo "<tr style='color: white;'>"; echo "<tr style='color: white;'>";
if ($Begegnung[$Zeile]['spieltag'] > 99 or $Begegnung[$Zeile]['spieltag'] < 1) { if ($Begegnung[$Zeile]['spieltag'] > 99 or $Begegnung[$Zeile]['spieltag'] < 1) {
$bgcolor = "red"; $bgcolor = "red";
$import = false; $import = false;
} }
echo "<td style='text-align: center; background-color:" . $bgcolor . "'>" . $data[$Titelzeile['Spieltag_Nr']] . "</td>"; echo "<td style='text-align: center; background-color:" . $bgcolor . "'>" . $data[$Titelzeile['Spieltag_Nr']] . "</td>";
if (empty($data[$Titelzeile['Spielstart']])
AND !empty($data[$Titelzeile['Spieljahr']])
AND !empty($data[$Titelzeile['Kalenderwoche']])
AND !empty($Mannschaften[$data[$Titelzeile['Heim']]]['heimspiel_wochentag'])
AND !empty($Mannschaften[$data[$Titelzeile['Heim']]]['heimspiel_uhrzeit']))
{
$data[$Titelzeile['Spielstart']] =
erstelleZeitpunkt($data[$Titelzeile['Spieljahr']], $data[$Titelzeile['Kalenderwoche']],
$Mannschaften[$data[$Titelzeile['Heim']]]['heimspiel_wochentag'],
$Mannschaften[$data[$Titelzeile['Heim']]]['heimspiel_uhrzeit']);
}
$Begegnung[$Zeile]['zeitpunkt'] = $data[$Titelzeile['Spielstart']];
if (!validateDate($Begegnung[$Zeile]['zeitpunkt'])) { if (!validateDate($Begegnung[$Zeile]['zeitpunkt'])) {
$bgcolor = "red"; $bgcolor = "red";
$import = false; $import = false;
} else { } else {
$bgcolor = "green"; $bgcolor = "green";
} }
echo "<td style='text-align: center; background-color:" . $bgcolor . "'>" . $data[$Titelzeile['Spielstart']] . "</td>"; echo "<td style='text-align: center; background-color:" . $bgcolor . "'>" . $data[$Titelzeile['Spielstart']] . "</td>";
if ($Begegnung[$Zeile]['heim_team_id'] == "") { if ($Begegnung[$Zeile]['heim_team_id'] == "") {
if ($data[$Titelzeile['Heim']] == "spielfrei") { if ($data[$Titelzeile['Heim']] == "spielfrei") {
@@ -9478,7 +9572,7 @@ function adminBegegnungenImportieren(): void
} else { } else {
$bgcolor = "green"; $bgcolor = "green";
} }
echo "<td style='text-align: center; background-color:" . $bgcolor . "'>" . utf8_encode($data[$Titelzeile['Heim']]) . "</td>"; echo "<td style='text-align: center; background-color:" . $bgcolor . "'>" . $data[$Titelzeile['Heim']] . "</td>";
if ($Begegnung[$Zeile]['gast_team_id'] == "") { if ($Begegnung[$Zeile]['gast_team_id'] == "") {
if ($data[$Titelzeile['Gast']] == "spielfrei") { if ($data[$Titelzeile['Gast']] == "spielfrei") {
$bgcolor = "orange"; $bgcolor = "orange";
@@ -9490,7 +9584,7 @@ function adminBegegnungenImportieren(): void
} else { } else {
$bgcolor = "green"; $bgcolor = "green";
} }
echo "<td style='text-align: center; background-color:" . $bgcolor . "'>" . utf8_encode($data[$Titelzeile['Gast']]) . "</td>"; echo "<td style='text-align: center; background-color:" . $bgcolor . "'>" . $data[$Titelzeile['Gast']] . "</td>";
echo "</tr>"; echo "</tr>";
} }
if (!$import_zeile) { if (!$import_zeile) {
@@ -9503,18 +9597,18 @@ function adminBegegnungenImportieren(): void
if ($import) { if ($import) {
$Zeile = 1; $Zeile = 1;
$query = "INSERT INTO #__sportsmanager_begegnung (spieltag, zeitpunkt, heim_team_id, gast_team_id) VALUES "; $query = "INSERT INTO #__sportsmanager_begegnung (spieltag, zeitpunkt, spieltag_titel, spiel_nr, heim_team_id, gast_team_id) VALUES ";
foreach ($Begegnung as $value) { foreach ($Begegnung as $value) {
if ($Zeile > 1) { if ($Zeile > 1) {
$query .= ", "; $query .= ", ";
} }
$query .= "(" . $value['spieltag'] . ",'" . $value['zeitpunkt'] . "'," . $value['heim_team_id'] . "," . $value['gast_team_id'] . ") "; $query .= "(" . $value['spieltag'] . ",'" . $value['zeitpunkt'] . "','" .
($value['spieltag_titel'] ?? "") . "', " . ($value['spiel_nr'] ?? "NULL") . " ," .
$value['heim_team_id'] . "," . $value['gast_team_id'] . ") ";
$Zeile++; $Zeile++;
} }
$query .= ";"; $query .= ";";
$db->setQuery($query); $db->setQuery($query);
if (!$db->execute()) { if (!$db->execute()) {
die($db->stderr(true)); die($db->stderr(true));
} else { } else {
@@ -9665,6 +9759,448 @@ function adminBegegnungenRundeErzeugenForm(): void
redirectSportsManagerURL('&task=admin_begegnungen&veranstaltungid=' . $veranstaltungId); redirectSportsManagerURL('&task=admin_begegnungen&veranstaltungid=' . $veranstaltungId);
} }
function getAuswahlSpieltagtitel()
{
$db = getDatabase();
$query = "SELECT spieltag_titel FROM #__sportsmanager_begegnung"
. "\n WHERE spieltag_titel <> ''"
. "\n GROUP BY spieltag_titel ORDER BY spieltag_titel;";
return loadObjectList($db, $query);
}
function adminBegegnungenPokalrundeAuslosenForm(): void
{
$db = getDatabase();
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
$veranstaltungId = $jInput->get('veranstaltungid', 0, 'INT');
if ($veranstaltungId == 0) die("Missing id!");
if (!benutzerZugriff("mannschaftswettbewerb_aendern") && !benutzerVeranstaltungModerator($veranstaltungId))
keinZugriff(true);
$query = "SELECT * FROM #__sportsmanager_veranstaltung WHERE veranstaltung_id = $veranstaltungId";
$rows = loadObjectList($db, $query);
if (count($rows) < 1) die("Wrong id!");
$veranstaltung = $rows[0];
$query = "SELECT COUNT(teamname)"
. "\n FROM #__sportsmanager_team"
. "\n WHERE veranstaltung_id = $veranstaltungId"
. "\n ORDER BY teamname";
$anzahlteams = loadResult($db, $query);
$veranstaltung->letzteRunde = getAnzahlRunden($anzahlteams);
$query = "SELECT t1.spieltag AS Runden_Nr
FROM #__sportsmanager_begegnung AS t1
LEFT JOIN #__sportsmanager_team AS t2 ON t1.heim_team_id = t2.team_id
LEFT JOIN #__sportsmanager_team AS t3 ON t1.gast_team_id = t3.team_id
LEFT JOIN #__sportsmanager_veranstaltung AS t4 ON t2.veranstaltung_id = t4.veranstaltung_id
WHERE t4.veranstaltung_id = ".$veranstaltungId."
GROUP BY t1.spieltag
ORDER BY t1.spieltag DESC LIMIT 1;";
$Runde = loadObjectList($db, $query);
if (!isset($Runde[0]))
$veranstaltung->naechsteRunde = 1;
else
$veranstaltung->naechsteRunde = $Runde[0]->Runden_Nr + 1;
$veranstaltung->titelVorschlag = getRundenTitel(pow(2, $veranstaltung->letzteRunde - $veranstaltung->naechsteRunde) * 2);
// Spieltage ermitteln, die noch nicht abgeschlossen sind
$query = "SELECT COUNT(DISTINCT spieltag) AS Anzahl"
. "\n FROM #__sportsmanager_begegnung"
. "\n LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis USING (begegnung_id)"
. "\n INNER JOIN #__sportsmanager_team ON heim_team_id = team_id"
. "\n WHERE veranstaltung_id = $veranstaltung->veranstaltung_id"
. "\n AND (heim_spielpunkte IS NULL OR gast_spielpunkte IS NULL"
. "\n OR #__sportsmanager_unbestaetigtes_ergebnis.begegnung_id IS NOT NULL)"
. "\n ORDER BY spieltag DESC";
$veranstaltung->nicht_abgeschlossene_spiele = loadResult($db, $query);
HTML_sportsmanager_admin::adminBegegnungenPokalrundeAuslosenForm($veranstaltung,getAuswahlSpieltagtitel());
}
#[NoReturn] function adminBegegnungenPokalrundeAuslosen(): void
{
$db = getDatabase();
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
$sperren = false;
$veranstaltungId = $jInput->get('veranstaltungid', 0, 'INT');
$rundenNr = $jInput->get('runde', 0, 'INT');
$rundenTitel = $jInput->get('rundentitel', 0, 'STRING');
$spielumplatz3 = $jInput->get('spielumplatz3', 0, 'INT');
$teams = [];
if ($veranstaltungId == 0) die("Missing id!");
if (!benutzerZugriff("mannschaftswettbewerb_aendern") && !benutzerVeranstaltungModerator($veranstaltungId))
keinZugriff();
if ($jInput->get('cancel', false, 'BOOL')) {
redirectSportsManagerURL('&task=admin_begegnungen&veranstaltungid=' . $veranstaltungId);
}
$query = "SELECT COUNT(teamname)"
. "\n FROM #__sportsmanager_team"
. "\n WHERE veranstaltung_id = $veranstaltungId"
. "\n ORDER BY teamname";
$anzahlteams = loadResult($db, $query);
$anzahlrunden = getAnzahlRunden($anzahlteams);
$Verlierer = "";
//Alle Teams einlesen
$query = "SELECT *"
. "\n FROM #__sportsmanager_team"
. "\n WHERE veranstaltung_id = $veranstaltungId ";
$teams_komplett = json_decode(json_encode(loadObjectList($db, $query)), true);
foreach($teams_komplett AS $team)
{
$teams[$team['team_id']] = $team;
}
if ($rundenNr == 1){
$anzahlmatches = $anzahlteams - pow(2, $anzahlrunden - 1 );
}
else{
$anzahlmatches = pow(2, $anzahlrunden - $rundenNr);
//Verlierer rausfiltern
$query = "SELECT IF(t1.heim_punkte > t1.gast_punkte, t3.team_id, t2.team_id) AS Verlierer"
. "\n FROM #__sportsmanager_begegnung AS t1"
. "\n LEFT JOIN #__sportsmanager_team AS t2"
. "\n ON t1.heim_team_id = t2.team_id LEFT JOIN #__sportsmanager_team AS t3"
. "\n ON t1.gast_team_id = t3.team_id LEFT JOIN #__sportsmanager_veranstaltung AS t4"
. "\n ON t2.veranstaltung_id = t4.veranstaltung_id"
. "\n WHERE t4.veranstaltung_id = $veranstaltungId;";
$loosers = loadObjectList($db, $query);
$Zeile = 0;
foreach($loosers AS $looser)
{
if ($Zeile > 0) $Verlierer .= ",";
$Verlierer .= $looser->Verlierer;
$Zeile++;
}
}
$query = "SELECT team_id"
. "\n FROM #__sportsmanager_team"
. "\n WHERE veranstaltung_id = $veranstaltungId ";
if ($Verlierer != "")
$query .= "\n AND team_id NOT IN (".$Verlierer.");";
$teams_auslosung = json_decode(json_encode(loadObjectList($db, $query)), true);
// Teams durchmischen
shuffle($teams_auslosung);
if ($anzahlteams < 2)
{
$Fehlertext = "Zu wenige Teams vorhanden!!!";
$sperren = true;
}
if ($anzahlteams > 128)
{
$Fehlertext = "Zu viele Teams vorhanden!!!";
$sperren = true;
}
$datum_jahr = null;
$zeitpunkt = "";
if ($jInput->get('datum_tag', 0, 'STRING') > 0 && $jInput->get('datum_jahr', 0, 'STRING') >= 0 && $jInput->get('datum_monat', 0, 'STRING') >= 0
&& $jInput->get('uhrzeit_stunden', 0, 'STRING') >= 0 && $jInput->get('uhrzeit_minuten', 0, 'STRING') >= 0) {
$datum = normalisiertesDatum($jInput->get('datum_jahr', 0, 'INT') == 0 ? null : sprintf("%04d-%02d-%02d", $jInput->get('datum_jahr', 0, 'INT'), $jInput->get('datum_monat', 0, 'INT'), $jInput->get('datum_tag', 0, 'INT')));
$uhrzeit = normalisierteUhrzeit(sprintf(" %02d-%02d-00", $jInput->get('uhrzeit_stunden', 0, 'INT'), $jInput->get('uhrzeit_minuten', 0, 'INT')));
$zeitpunkt = $datum == null || $uhrzeit == null ? null : ($datum . " " . $uhrzeit);
$datum_kw = 0;
} else {
$datum_jahr = $jInput->get('datum_jahr', 0, 'INT');
$datum_kw = abs($jInput->get('datum_tag', 0, 'INT'));
}
if (!((($jInput->get('datum_tag', 0, 'STRING') <= 0 && $jInput->get('datum_jahr', 0, 'STRING') >= 2000)) || $zeitpunkt != ""))
{
$Fehlertext = "Bitte ein g&uuml;ltiges Datum eingeben!!!";
$sperren = true;
}
for ($matchNr = 0; $matchNr < $anzahlmatches; $matchNr++) {
$team_heim = $matchNr * 2 ;
$team_gast = $team_heim + 1;
$matches[$matchNr]['heim'] = $teams_auslosung[$team_heim]['team_id'];
$matches[$matchNr]['gast'] = $teams_auslosung[$team_gast]['team_id'];
}
if ($spielumplatz3)
{
//Verlierer Halbfinale ermitteln
$query = "SELECT IF(t1.heim_punkte > t1.gast_punkte, t3.team_id, t2.team_id) AS Verlierer"
. "\n FROM #__sportsmanager_begegnung AS t1"
. "\n LEFT JOIN #__sportsmanager_team AS t2"
. "\n ON t1.heim_team_id = t2.team_id LEFT JOIN #__sportsmanager_team AS t3"
. "\n ON t1.gast_team_id = t3.team_id LEFT JOIN #__sportsmanager_veranstaltung AS t4"
. "\n ON t2.veranstaltung_id = t4.veranstaltung_id"
. "\n WHERE t4.veranstaltung_id = $veranstaltungId"
. "\n AND t1.spieltag = " . ($rundenNr - 1) . " ORDER BY RAND();";
$loosers = loadObjectList($db, $query);
$matches[2]['heim'] = $loosers[0]->Verlierer;
$matches[2]['gast'] = $loosers[1]->Verlierer;
$matches[2]['rundentitel'] = "Spiel um Platz 3";
}
$Fehlertext = "";
foreach($matches AS $spiel_nr => $match)
{
$matches[$spiel_nr]['rundentitel'] = $matches[$spiel_nr]['rundentitel'] ?? $rundenTitel;
$matches[$spiel_nr]['zeitpunkt'] = $zeitpunkt;
$matches[$spiel_nr]['heimspielort_id'] = $teams[$teams_setzliste[$setzung[0]]]['heimspielort_id'];
$team_heim = $match['heim'];
if ($datum_kw != null && $teams[$team_heim]['heimspiel_wochentag'] !== 0) {
$ts = getdate(mondaykw($datum_kw, $datum_jahr, $teams[$team_heim]['heimspiel_wochentag'] - 1));
$matches[$spiel_nr]['zeitpunkt'] = sprintf("%04d-%02d-%02d %02d:%02d:%02d", $ts["year"], $ts["mon"], $ts["mday"],
floor($teams[$team_heim]['heimspiel_uhrzeit'] / 100), $teams[$team_heim]['heimspiel_uhrzeit'] % 100, 0);
}
if (!validateDate($matches[$spiel_nr]['zeitpunkt'])){
$sperren = true;
$Fehlertext .= "Bitte die Heimspiel Uhrzeit des " . $teams[$matches[$spiel_nr]['heim']]['teamname'] . " &uuml;berpr&uuml;fen!!!<br>";
}
}
if (!$sperren){
$Zeile = 0;
$query = "INSERT INTO #__sportsmanager_begegnung (zeitpunkt, spieltag, spieltag_titel, spiel_nr, heim_team_id, gast_team_id, spielort_id) values ";
foreach ($matches AS $key => $match) {
if (++$Zeile > 1) $query .= ", ";
$query .= "('" . $match['zeitpunkt'] . "', " . $rundenNr .
", '" . $match['rundentitel'] . "', " . $key .
", '" . $match['heim'] . "', '" . $match['gast'] . "'" .
", " . ($match['heimspielort_id'] != 0 ? "'" . $match['heimspielort_id'] . "'" : "NULL") . ")";
}
$query .= "; ";
$db->setQuery($query);
if (!$db->execute()) {
die($db->stderr(true));
}
redirectSportsManagerURL('&task=admin_begegnungen&veranstaltungid=' . $veranstaltungId);
}
else{
echo "<span style='display: inline-block; background: red; color: white;vertical-align: middle;'>
$Fehlertext</span>\n";
}
}
#[NoReturn] function adminBegegnungenPokalrundeSetzliste(): void
{
$db = getDatabase();
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
$teams = [];
$setzliste = [];
$setzung = [];
$matches = [];
$sperren = false;
$veranstaltungId = $jInput->get('veranstaltungid', 0, 'INT');
$rundenNr = $jInput->get('runde', 0, 'INT');
$rundenTitel = $jInput->get('rundentitel', 0, 'STRING');
$spielumplatz3 = $jInput->get('spielumplatz3', 0, 'INT');
if ($veranstaltungId == 0) die("Missing id!");
if (!benutzerZugriff("mannschaftswettbewerb_aendern") && !benutzerVeranstaltungModerator($veranstaltungId))
keinZugriff();
if ($jInput->get('cancel', false, 'BOOL')) {
redirectSportsManagerURL('&task=admin_begegnungen&veranstaltungid=' . $veranstaltungId);
}
$query = "SELECT COUNT(teamname)"
. "\n FROM #__sportsmanager_team"
. "\n WHERE veranstaltung_id = $veranstaltungId"
. "\n ORDER BY teamname";
$anzahlteams = loadResult($db, $query);
$anzahlrunden = getAnzahlRunden($anzahlteams);
//Vergabe der Setzliste
if ($rundenNr == 1){
$query = "UPDATE #__sportsmanager_team AS t
JOIN (
SELECT team_id, (@r := @r + 1) AS rnd_num
FROM (
SELECT team_id
FROM #__sportsmanager_team
WHERE veranstaltung_id = $veranstaltungId
ORDER BY RAND()
) AS shuffled
JOIN (SELECT @r := 0) AS init
) AS x ON t.team_id = x.team_id
SET t.setzliste_nr = x.rnd_num;";
$db->setQuery($query);
if (!$db->execute()) {
die($db->stderr(true));
}
}
$query = "SELECT *"
. "\n FROM #__sportsmanager_team"
. "\n WHERE veranstaltung_id = $veranstaltungId"
. "\n ORDER BY setzliste_nr;";
$teams_array = json_decode(json_encode(loadObjectList($db, $query)), true);
foreach($teams_array AS $team)
{
$teams_setzliste[$team['setzliste_nr']] = $team['team_id'];
$teams[$team['team_id']] = $team;
}
if ($anzahlteams < 2)
{
$Fehlertext = "Zu wenige Teams vorhanden!!!";
$sperren = true;
}
$datum_jahr = null;
$zeitpunkt = "";
if ($jInput->get('datum_tag', 0, 'STRING') > 0 && $jInput->get('datum_jahr', 0, 'STRING') >= 0 && $jInput->get('datum_monat', 0, 'STRING') >= 0
&& $jInput->get('uhrzeit_stunden', 0, 'STRING') >= 0 && $jInput->get('uhrzeit_minuten', 0, 'STRING') >= 0) {
$datum = normalisiertesDatum($jInput->get('datum_jahr', 0, 'INT') == 0 ? null : sprintf("%04d-%02d-%02d", $jInput->get('datum_jahr', 0, 'INT'), $jInput->get('datum_monat', 0, 'INT'), $jInput->get('datum_tag', 0, 'INT')));
$uhrzeit = normalisierteUhrzeit(sprintf(" %02d-%02d-00", $jInput->get('uhrzeit_stunden', 0, 'INT'), $jInput->get('uhrzeit_minuten', 0, 'INT')));
$zeitpunkt = $datum == null || $uhrzeit == null ? null : ($datum . " " . $uhrzeit);
$datum_kw = 0;
} else {
$datum_jahr = $jInput->get('datum_jahr', 0, 'INT');
$datum_kw = abs($jInput->get('datum_tag', 0, 'INT'));
}
if (!((($jInput->get('datum_tag', 0, 'STRING') <= 0 && $jInput->get('datum_jahr', 0, 'STRING') >= 2000)) || $zeitpunkt != ""))
{
$Fehlertext = "Bitte ein g&uuml;ltiges Datum eingeben!!!";
$sperren = true;
}
$matches = [];
if ($rundenNr == 1){
$setzliste = getSetzliste($anzahlrunden);
$spiel_nr = 0;
foreach($setzliste AS $setzung){
$spiel_nr++;
if ($setzung[0] <= $anzahlteams && $setzung[1] <= $anzahlteams){
$matches[$spiel_nr]['heim'] = $teams_setzliste[$setzung[0]];
$matches[$spiel_nr]['gast'] = $teams_setzliste[$setzung[1]];
}
}
}
//Freilose Runde 1 ermitteln
if ($rundenNr == 2){
$setzliste = getSetzliste($anzahlrunden);
$spiel_nr = 0;
foreach($setzliste AS $setzung){
$spiel_nr++;
if ($setzung[0] > $anzahlteams || $setzung[1] > $anzahlteams){
if ($spiel_nr % 2)
$matches[round($spiel_nr/2)]['heim'] = $teams_setzliste[min($setzung[0],$setzung[1])];
else
$matches[round($spiel_nr/2)]['gast'] = $teams_setzliste[min($setzung[0],$setzung[1])];
}
}
}
//Sieger der vorherigen Runde ermitteln
if ($rundenNr >= 2){
$query = "SELECT t4.bezeichnung AS Liga, t1.zeitpunkt AS Spielstart, t2.teamname AS Heim, t3.teamname AS Gast,
t1.heim_team_id, t1.gast_team_id,
t1.spieltag_titel AS Runde, t1.spieltag AS Spieltag_Nr, t1.spiel_nr AS Spiel_Nr, t1.heim_punkte AS Heim_Tore, t1.gast_punkte AS Gast_Tore, t1.heim_spielpunkte AS Heim_Satzpunkte, t1.gast_spielpunkte AS Gast_Satzpunkte
FROM #__sportsmanager_begegnung AS t1
LEFT JOIN #__sportsmanager_team AS t2 ON t1.heim_team_id = t2.team_id
LEFT JOIN #__sportsmanager_team AS t3 ON t1.gast_team_id = t3.team_id
LEFT JOIN #__sportsmanager_veranstaltung AS t4 ON t2.veranstaltung_id = t4.veranstaltung_id
WHERE t4.veranstaltung_id = " . $veranstaltungId . " AND t1.spieltag = " . ($rundenNr - 1) . "
ORDER BY t4.veranstaltung_id, t1.spieltag, t1.spiel_nr;";
$begegnungen = json_decode(json_encode(loadObjectList($db, $query)), true);
foreach($begegnungen AS $begegnung)
{
if ($begegnung['Heim_Satzpunkte'] > $begegnung['Gast_Satzpunkte'])
$sieger = $begegnung['heim_team_id'];
else
$sieger = $begegnung['gast_team_id'];
if ($begegnung['Spiel_Nr'] % 2)
$matches[round($begegnung['Spiel_Nr']/2)]['heim'] = $sieger;
else
$matches[round($begegnung['Spiel_Nr']/2)]['gast'] = $sieger;
}
}
if ($spielumplatz3)
{
//Verlierer Halbfinale ermitteln
$query = "SELECT IF(t1.heim_punkte > t1.gast_punkte, t3.team_id, t2.team_id) AS Verlierer"
. "\n FROM #__sportsmanager_begegnung AS t1"
. "\n LEFT JOIN #__sportsmanager_team AS t2"
. "\n ON t1.heim_team_id = t2.team_id LEFT JOIN #__sportsmanager_team AS t3"
. "\n ON t1.gast_team_id = t3.team_id LEFT JOIN #__sportsmanager_veranstaltung AS t4"
. "\n ON t2.veranstaltung_id = t4.veranstaltung_id"
. "\n WHERE t4.veranstaltung_id = $veranstaltungId"
. "\n AND t1.spieltag = " . ($rundenNr - 1) . ";";
$loosers = loadObjectList($db, $query);
$matches[2]['heim'] = $loosers[0]->Verlierer;
$matches[2]['gast'] = $loosers[1]->Verlierer;
$matches[2]['rundentitel'] = "Spiel um Platz 3";
}
$Fehlertext = "";
foreach($matches AS $spiel_nr => $match)
{
$matches[$spiel_nr]['rundentitel'] = $matches[$spiel_nr]['rundentitel'] ?? $rundenTitel;
$matches[$spiel_nr]['zeitpunkt'] = $zeitpunkt;
$matches[$spiel_nr]['heimspielort_id'] = $teams[$teams_setzliste[$setzung[0]]]['heimspielort_id'];
$team_heim = $match['heim'];
if ($datum_kw != null && $teams[$team_heim]['heimspiel_wochentag'] !== 0) {
$ts = getdate(mondaykw($datum_kw, $datum_jahr, $teams[$team_heim]['heimspiel_wochentag'] - 1));
$matches[$spiel_nr]['zeitpunkt'] = sprintf("%04d-%02d-%02d %02d:%02d:%02d", $ts["year"], $ts["mon"], $ts["mday"],
floor($teams[$team_heim]['heimspiel_uhrzeit'] / 100), $teams[$team_heim]['heimspiel_uhrzeit'] % 100, 0);
}
if (!validateDate($matches[$spiel_nr]['zeitpunkt'])){
$sperren = true;
$Fehlertext .= "Bitte die Heimspiel Uhrzeit des " . $teams[$matches[$spiel_nr]['heim']]['teamname'] . " &uuml;berpr&uuml;fen!!!<br>";
}
}
if (!$sperren){
$Zeile = 0;
$query = "INSERT INTO #__sportsmanager_begegnung (zeitpunkt, spieltag, spieltag_titel, spiel_nr, heim_team_id, gast_team_id, spielort_id) values ";
foreach ($matches AS $key => $match) {
if (++$Zeile > 1) $query .= ", ";
$query .= "('" . $match['zeitpunkt'] . "', " . $rundenNr .
", '" . $match['rundentitel'] . "', " . $key .
", '" . $match['heim'] . "', '" . $match['gast'] . "'" .
", " . ($match['heimspielort_id'] != 0 ? "'" . $match['heimspielort_id'] . "'" : "NULL") . ")";
}
$query .= "; ";
$db->setQuery($query);
if (!$db->execute()) {
die($db->stderr(true));
}
redirectSportsManagerURL('&task=admin_begegnungen&veranstaltungid=' . $veranstaltungId);
}
else{
echo "<span style='display: inline-block; background: red; color: white;vertical-align: middle;'>
$Fehlertext</span>\n";
}
}
#[NoReturn] function adminBegegnungenAlleEntfernen(): void #[NoReturn] function adminBegegnungenAlleEntfernen(): void
{ {
$db = getDatabase(); $db = getDatabase();
@@ -9719,6 +10255,12 @@ function adminBegegnungenRundeErzeugenForm(): void
if (!$db->execute()) { if (!$db->execute()) {
die($db->stderr(true)); die($db->stderr(true));
} }
$query = "UPDATE #__sportsmanager_team SET setzliste_nr = NULL WHERE veranstaltung_id = $veranstaltungId;";
$db->setQuery($query);
if (!$db->execute()) {
die($db->stderr(true));
}
} }
if ($veranstaltung->status != 0 && $veranstaltung->elo_wertung != 0) { if ($veranstaltung->status != 0 && $veranstaltung->elo_wertung != 0) {
@@ -9764,7 +10306,7 @@ function adminBegegnungenExportForm(): void
$db = getDatabase(); $db = getDatabase();
$jInput = Factory::getContainer()->get(SiteApplication::class)->input; $jInput = Factory::getContainer()->get(SiteApplication::class)->input;
$veranstaltungId = $jInput->get('veranstaltungid', 0, 'INT'); $veranstaltungId = $jInput->get('veranstaltungId', 0, 'INT');
$export = $jInput->get('export', '', 'RAW'); $export = $jInput->get('export', '', 'RAW');
if ($veranstaltungId == 0) die("Missing id!"); if ($veranstaltungId == 0) die("Missing id!");
@@ -9808,8 +10350,9 @@ function adminBegegnungenExportForm(): void
$query = " $query = "
SELECT t1.begegnung_id AS ID, t5.saisonbezeichnung AS Saison, SELECT t1.begegnung_id AS ID, t5.saisonbezeichnung AS Saison,
t4.bezeichnung AS Liga, t1.zeitpunkt AS Spielstart, t2.teamname AS Heim, t3.teamname AS Gast, t4.bezeichnung AS Liga, t1.zeitpunkt AS Spielstart, t2.teamname AS Heim, t3.teamname AS Gast,
t1.spieltag AS Spieltag_Nr, t1.heim_punkte AS Heim_Tore, t1.gast_punkte AS Gast_Tore, t1.spieltag AS Spieltag_Nr, t1.spiel_nr AS Spiel_Nr, t1.heim_punkte AS Heim_Tore,
t1.heim_spielpunkte AS Heim_Satzpunkte, t1.gast_spielpunkte AS Gast_Satzpunkte t1.gast_punkte AS Gast_Tore, t1.heim_spielpunkte AS Heim_Satzpunkte,
t1.gast_spielpunkte AS Gast_Satzpunkte
FROM #__sportsmanager_begegnung AS t1 FROM #__sportsmanager_begegnung AS t1
LEFT JOIN #__sportsmanager_team AS t2 ON t1.heim_team_id = t2.team_id LEFT JOIN #__sportsmanager_team AS t2 ON t1.heim_team_id = t2.team_id
LEFT JOIN #__sportsmanager_team AS t3 ON t1.gast_team_id = t3.team_id LEFT JOIN #__sportsmanager_team AS t3 ON t1.gast_team_id = t3.team_id
@@ -13541,6 +14084,7 @@ function adminTermine($admin_uebersicht): void
$filter_veranstaltung = $jInput->get('filter_veranstaltung', '', 'RAW'); $filter_veranstaltung = $jInput->get('filter_veranstaltung', '', 'RAW');
$filter_zusatz = $jInput->get('filter_zusatz', '', 'RAW'); $filter_zusatz = $jInput->get('filter_zusatz', '', 'RAW');
$filter_land = $jInput->get('filter_land', '', 'RAW'); $filter_land = $jInput->get('filter_land', '', 'RAW');
$filter_ort = $jInput->get('filter_ort', '', 'RAW');
$query = "SELECT DISTINCT YEAR(erster_tag) AS jahr" $query = "SELECT DISTINCT YEAR(erster_tag) AS jahr"
. "\n FROM #__sportsmanager_termin" . "\n FROM #__sportsmanager_termin"
@@ -13567,6 +14111,8 @@ function adminTermine($admin_uebersicht): void
$query .= " AND EXISTS(SELECT * FROM #__sportsmanager_termin_zusatz WHERE termin_id = #__sportsmanager_termin.termin_id AND zusatz = '" . $db->escape($filter_zusatz) . "')"; $query .= " AND EXISTS(SELECT * FROM #__sportsmanager_termin_zusatz WHERE termin_id = #__sportsmanager_termin.termin_id AND zusatz = '" . $db->escape($filter_zusatz) . "')";
if (!empty($filter_land)) if (!empty($filter_land))
$query .= " AND land = '" . $db->escape($filter_land) . "'"; $query .= " AND land = '" . $db->escape($filter_land) . "'";
if (!empty($filter_ort))
$query .= " AND ort = '" . $db->escape($filter_ort) . "'";
$query .= "\n GROUP BY termin_id" $query .= "\n GROUP BY termin_id"
. "\n ORDER BY erster_tag, bezeichnung"; . "\n ORDER BY erster_tag, bezeichnung";
$termine = loadObjectList($db, $query); $termine = loadObjectList($db, $query);
@@ -13611,11 +14157,17 @@ function adminTermine($admin_uebersicht): void
$query = "SELECT land" $query = "SELECT land"
. "\n FROM #__sportsmanager_termin" . "\n FROM #__sportsmanager_termin"
. "\n INNER JOIN #__sportsmanager_termin_aktion USING (termin_id)" . "\n INNER JOIN #__sportsmanager_termin_aktion USING (termin_id)"
. "\n INNER JOIN (SELECT land FROM #__sportsmanager_termin_land UNION SELECT bundesland AS land FROM #__sportsmanager_termin_bundesland) AS land_bundesland USING (land)" . "\n WHERE YEAR(erster_tag) = '$filter_jahr' AND status = 0 AND (typ = 0 OR typ = 1) AND land <> ''"
. "\n WHERE YEAR(erster_tag) = '$filter_jahr' AND status = 0 AND (typ = 0 OR typ = 1)"
. "\n GROUP BY land" . "\n GROUP BY land"
. "\n ORDER BY land"; . "\n ORDER BY land";
$laender = loadObjectList($db, $query); $laender = loadObjectList($db, $query);
$query = "SELECT ort"
. "\n FROM #__sportsmanager_termin"
. "\n INNER JOIN #__sportsmanager_termin_aktion USING (termin_id)"
. "\n WHERE YEAR(erster_tag) = '$filter_jahr' AND status = 0 AND (typ = 0 OR typ = 1) AND ort <> ''"
. "\n GROUP BY ort"
. "\n ORDER BY ort";
$orte = loadObjectList($db, $query);
if (isJson()) { if (isJson()) {
$jsonexport = array_map( $jsonexport = array_map(
function ($termin) { function ($termin) {
@@ -13634,7 +14186,7 @@ function adminTermine($admin_uebersicht): void
}, $termine); }, $termine);
JSON_sportsmanager::JSON($jsonexport); JSON_sportsmanager::JSON($jsonexport);
} else { } else {
HTML_sportsmanager_admin::adminTermine($termine, $termineSymbole, $jahre, $filter_jahr, $filter_veranstaltung, $filter_zusatz, $filter_land, $veranstaltungen, $zusaetze, $laender, $anzahl_beantragte_termine, $zugriffsebene, $admin_uebersicht, isExternalDatabase()); HTML_sportsmanager_admin::adminTermine($termine, $termineSymbole, $jahre, $filter_jahr, $filter_veranstaltung, $filter_zusatz, $filter_land, $filter_ort, $veranstaltungen, $zusaetze, $laender, $orte, $anzahl_beantragte_termine, $zugriffsebene, $admin_uebersicht, isExternalDatabase());
if (!$admin_uebersicht) { if (!$admin_uebersicht) {
administrationFooter(); administrationFooter();
@@ -13742,7 +14294,9 @@ function adminEditTermin($admin_uebersicht): void
$bundeslaender = loadObjectList($db, $query); $bundeslaender = loadObjectList($db, $query);
$query = "SELECT * FROM #__sportsmanager_termin_land ORDER BY land"; $query = "SELECT * FROM #__sportsmanager_termin_land ORDER BY land";
$laender = loadObjectList($db, $query); $laender = loadObjectList($db, $query);
HTML_sportsmanager_admin::adminEditTermin($termin, $terminsymbolanzeige, $terminsymbole, $benachrichtigung_email, $bezeichnungen, $zusaetze, $bezeichnungszusaetze, $bundeslaender, $laender, $zugriffsebene, $admin_uebersicht, $bezeichnung_vorauswahl, $uebersicht, $ueberarbeiten, $nur_beantragte); $query = "SELECT ort FROM #__sportsmanager_termin WHERE ort <> '' GROUP BY ort ORDER BY ort";
$orte = loadObjectList($db, $query);
HTML_sportsmanager_admin::adminEditTermin($termin, $terminsymbolanzeige, $terminsymbole, $benachrichtigung_email, $bezeichnungen, $zusaetze, $bezeichnungszusaetze, $bundeslaender, $laender, $orte, $zugriffsebene, $admin_uebersicht, $bezeichnung_vorauswahl, $uebersicht, $ueberarbeiten, $nur_beantragte);
} }
function adminSaveTermin($admin_uebersicht): void function adminSaveTermin($admin_uebersicht): void
@@ -5217,7 +5217,7 @@ function updateDatabase(): void
} }
if ($datenbank_version < 104) { if ($datenbank_version < 104) {
$query = "ALTER TABLE #__sportsmanager_veranstaltung ADD direktervergleich INT(4) NOT NULL DEFAULT '0' AFTER tabellenwertung;"; $query = "ALTER TABLE #__sportsmanager_veranstaltung ADD direktervergleich INT(4) NOT NULL DEFAULT '0' AFTER tabellenwertung;";
$db->setQuery($query); $db->setQuery($query);
if (!$db->execute()) { if (!$db->execute()) {
@@ -5245,6 +5245,52 @@ 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 ($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";
@@ -388,10 +388,10 @@ if ($task == "spielerbild") {
break; break;
case 'admin_team_save': case 'admin_team_save':
adminSaveMannschaft(); adminSaveMannschaft();
break; break;
case 'admin_team_remove': case 'admin_team_remove':
adminRemoveMannschaft(); adminRemoveMannschaft();
break; break;
case 'admin_team_kopieren_form': case 'admin_team_kopieren_form':
adminKopierenMannschaftForm(); adminKopierenMannschaftForm();
break; break;
@@ -458,9 +458,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 +733,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") {
@@ -1372,6 +1385,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 +1471,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 +1485,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 +1530,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 +1555,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 +1569,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,10 +1604,14 @@ 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);
begegnungenAnzeigen($veranstaltung, NULL, NULL, 0); if (einstellungswert("turnierbaum_zeigen") && $veranstaltung->tabellenwertung == -4)
turnierbaumAnzeigen($veranstaltung);
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 +1653,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 +2101,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,8 +2484,9 @@ 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;
$query = "SELECT * FROM #__sportsmanager_teamspiel_modus WHERE teamspiel_modus_id = $modus_id"; $query = "SELECT * FROM #__sportsmanager_teamspiel_modus WHERE teamspiel_modus_id = $modus_id";
@@ -3466,23 +3783,29 @@ 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');
$query = "SELECT COUNT(DISTINCT veranstalter_id) FROM #__sportsmanager_verein WHERE NOT ausgetreten"; $query = "SELECT t1.verein_id, t1.vereinsname, t1.vereinssitz,"
$organisationAnzeigen = loadResult($db, $query) > 1; . "\n t2.veranstalterbezeichnung, COUNT(*) As mitglieder"
. "\n FROM #__sportsmanager_verein AS t1"
. "\n LEFT JOIN #__sportsmanager_veranstalter AS t2 USING (veranstalter_id)"
. "\n LEFT JOIN #__sportsmanager_mitglied_von_verein AS t3 USING (verein_id)"
. "\n WHERE t1.ausgetreten = 0 AND verstecken = 0"
. "\n 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 *, 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); HTML_sportsmanager::vereine($params->get('titel'), $params->get('beschreibung'), $vereine, $organisationAnzeigen);
administrationFooter(); administrationFooter();
} }
@@ -3510,7 +3833,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 +3848,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"] = "";
@@ -4349,8 +4678,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);
} }
@@ -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
@@ -983,7 +983,7 @@ static function turnierdisziplin($turnier, $disziplin, $meldungen, $meldungenSpi
?> ?>
<script> <script>
function bilder_zeigen(){ function bilder_zeigen(){
let breite = window.innerWidth; let breite = window.innerWidth;
let id = 0; let id = 0;
@@ -1000,16 +1000,16 @@ static function turnierdisziplin($turnier, $disziplin, $meldungen, $meldungenSpi
document.getElementById(id).style.display = anzeige; document.getElementById(id).style.display = anzeige;
} }
} }
bilder_zeigen(); bilder_zeigen();
function onResize() { function onResize() {
bilder_zeigen(); bilder_zeigen();
} }
window.addEventListener("resize", onResize); window.addEventListener("resize", onResize);
</script> </script>
<?php <?php
} }
@@ -1017,7 +1017,9 @@ static function turnierdisziplin($turnier, $disziplin, $meldungen, $meldungenSpi
static function begegnungenAnzeigen($veranstaltung, $modus, $rows, $zeitfenster, $titel, $aus_uebersicht, $praesentation = 0): void static function begegnungenAnzeigen($veranstaltung, $modus, $rows, $zeitfenster, $titel, $aus_uebersicht, $praesentation = 0): void
{ {
global $params; global $params;
?>
<style>td{padding: 6px;}</style>
<?php
if (count($rows) > 0) { if (count($rows) > 0) {
$zeitpunkt_anzeigen = false; $zeitpunkt_anzeigen = false;
foreach ($rows as $begegnung) { foreach ($rows as $begegnung) {
@@ -1094,7 +1096,9 @@ static function begegnungenAnzeigen($veranstaltung, $modus, $rows, $zeitfenster,
<th nowrap style='text-align: left; font-size: 70%; font-style: italic;'> <th nowrap style='text-align: left; font-size: 70%; font-style: italic;'>
<?php <?php
echo htmlentities_utf8(Rundenbezeichnung($spieltag, $veranstaltung->unterteilung == 0)); echo htmlentities_utf8(Rundenbezeichnung($spieltag, $veranstaltung->unterteilung == 0));
if (!empty($spielort_name)) if (!empty($row->spieltag_titel) && !empty($veranstaltung->spieltag_titel_zeigen))
echo "&nbsp;&nbsp;&nbsp;-&nbsp;&nbsp;&nbsp;" . $row->spieltag_titel;
if (!empty($spielort_name))
echo "<br />" . htmlentities_utf8($spielort_name); echo "<br />" . htmlentities_utf8($spielort_name);
?> ?>
</th> </th>
@@ -1226,7 +1230,144 @@ static function begegnungenAnzeigen($veranstaltung, $modus, $rows, $zeitfenster,
} }
} }
static function begegnungSpielplan($veranstaltung, $modus, $begegnung, $heim_team, $gast_team, $spiele, $vorherige_begegnung_id, $naechste_begegnung_id, $teamansicht_team, $details_anzeigen):void static function turnierbaumAnzeigen($veranstaltung,$begegnungen): void
{
$hoehe = 50;
$breite = 200;
$abstand = 20;
$anzahlRunden = $veranstaltung->anzahlRunden;
$matches = count($begegnungen[1]);
$mannschaften = pow(2, $anzahlRunden - 1) * 2;
$fontsize = 11;
?>
<style>
.container {
position: relative;
text-align: left;
height: <?php echo $matches * $hoehe + 50; ?>px;
width: <?php echo $anzahlRunden * ($breite + $abstand); ?>px;
overflow: auto;
z-index: 1;
}
.linien{
position: absolute;
height: <?php echo $matches * $hoehe; ?>px;
width: <?php echo $anzahlRunden * ($breite + $abstand); ?>px;
top: 0;
left: 0;
stroke: lightgray;
stroke-width: 2;
}
.matchbox {
position: absolute;
white-space: nowrap;
overflow: hidden;
height: 48px;
background: white;
color: black;
border: 1.5px solid #000000;
padding: 5px;
width: <?php echo $breite - 12; ?>px;
border-radius: 12px;
box-shadow: 0 2px 4px rgba(0,0,0,0.1);
text-align: center;
font-size: <?php echo $fontsize; ?>px;
vertical-align: middle;
z-index: 10;
}
.winner {
font-weight: bold;
}
.looser {
text-decoration: line-through;
}
</style>
<div style='position: relative; text-align: left;'>
<div class="container" style="top: 0px; left: 20px;">
<?php
$anzahlSpiele = pow(2, $anzahlRunden - 1);
for ($runde = 0; $runde < $anzahlRunden; $runde++)
{
$offset = pow(2, $runde) * 25 - 25;
for ($spiel = 0; $spiel < $anzahlSpiele; $spiel++)
{
$class['heim'] = "";
$class['gast'] = "";
if ($begegnungen[$runde + 1][$spiel + 1]['sieger'] == 1) {
$class['heim'] = "winner";
$class['gast'] = "looser";
}
if ($begegnungen[$runde + 1][$spiel + 1]['sieger'] == 2) {
$class['heim'] = "looser";
$class['gast'] = "winner";
}
$oben = $hoehe * pow(2, $runde) * $spiel + $offset;
$links = ($breite + $abstand) * $runde;
echo "\n<div ";
if ($begegnungen[$runde + 1][$spiel + 1]['link'])
echo "onclick=\"window.location.href='" . $begegnungen[$runde + 1][$spiel + 1]['link'] . "';\" ";
echo "class='matchbox' style='top: " . $oben . "px; left: " . $links . "px;'
title='" . $begegnungen[$runde + 1][$spiel + 1]['tooltiptext'] . "'>";
echo "<span class='" . $class['heim'] . "'>";
echo $begegnungen[$runde + 1][$spiel + 1]['heim'] ?? '';
echo "</span>";
echo "<br>";
echo "<span class='" . $class['gast'] . "'>";
echo $begegnungen[$runde + 1][$spiel + 1]['gast'] ?? '';
echo "</span>";
echo "</div>\n";
}
$anzahlSpiele = $anzahlSpiele/2;
}
?>
<?php
$anzahlSpiele = pow(2, $anzahlRunden - 1);
echo "\n<svg class='linien'>";
for ($runde = 0; $runde < $anzahlRunden; $runde++)
{
$offset_oben = pow(2, $runde) * 25 - 1;
$offset_links = 12;
for ($spiel = 0; $spiel < $anzahlSpiele; $spiel++)
{
$oben = $hoehe * pow(2, $runde) * $spiel + $offset_oben;
$links = $breite * ($runde + 1) + $runde * $abstand - $offset_links;
$rechts = $links - $breite - $abstand/2 + $offset_links;
$mitte = $links + $abstand/2 + $offset_links/2;
if ($spiel % 2)
$startvertikal = $oben;
else
$endevertikal = $oben;
//Linie rechts von Box
if ($runde < $anzahlRunden - 1){
echo "\n<line x1='".$links."' y1='".$oben."' x2='".$mitte."' y2='".$oben."' />";
}
//Linie links von Box
if ($runde > 0){
echo "\n<line x1='".($rechts - $offset_links/2)."' y1='".$oben."' x2='".($rechts + $abstand/2)."' y2='".$oben."' />";
}
//Vertkal Linie
if ($spiel % 2)
echo "\n<line x1='".$mitte."' y1='".$startvertikal."' x2='".$mitte."' y2='".$endevertikal."' />";
}
$anzahlSpiele = $anzahlSpiele/2;
}
?>
</svg>
</div>
</div>
<?php
}
static function begegnungSpielplan($veranstaltung, $modus, $begegnung, $heim_team, $gast_team, $spiele, $vorherige_begegnung_id, $naechste_begegnung_id, $teamansicht_team, $details_anzeigen):void
{ {
global $params; global $params;
?> ?>
@@ -1250,8 +1391,8 @@ global $params;
<?php echo Text::_('COM_SPORTSMANAGER_COMPETITIONS'); ?></a> &gt; <?php echo Text::_('COM_SPORTSMANAGER_COMPETITIONS'); ?></a> &gt;
<a href="<?php echo SportsManagerURL('&task=veranstaltung&veranstaltungid=' . $veranstaltung->veranstaltung_id . '#id' . $begegnung->begegnung_id); ?>"> <a href="<?php echo SportsManagerURL('&task=veranstaltung&veranstaltungid=' . $veranstaltung->veranstaltung_id . '#id' . $begegnung->begegnung_id); ?>">
<?php echo htmlentities_utf8($veranstaltung->bezeichnung); ?></a> &gt; <?php echo htmlentities_utf8($veranstaltung->bezeichnung); ?></a> &gt;
<?php <?php
echo htmlentities_utf8($heim_team->teamname)."&nbsp;"; echo htmlentities_utf8($heim_team->teamname)."&nbsp;";
echo Text::_('COM_SPORTSMANAGER_VERSUS_SHORTCUT'); echo Text::_('COM_SPORTSMANAGER_VERSUS_SHORTCUT');
echo "&nbsp;".htmlentities_utf8($gast_team->teamname); echo "&nbsp;".htmlentities_utf8($gast_team->teamname);
} }
@@ -1320,7 +1461,7 @@ global $params;
</td> </td>
<td rowspan=2 style="text-align: center"> <td rowspan=2 style="text-align: center">
<h2><?php echo $begegnung->heim_spielpunkte . ":" . $begegnung->gast_spielpunkte; ?></h2> <h2><?php echo $begegnung->heim_spielpunkte . ":" . $begegnung->gast_spielpunkte; ?></h2>
<?php if ($modus->spielpunkte_wertung_einzel != 2 || $modus->spielpunkte_wertung_doppel != 2) <?php if ($modus->spielpunkte_wertung_einzel != 2 || $modus->spielpunkte_wertung_doppel != 2)
echo "<h3>(" . $begegnung->heim_punkte . ":" . $begegnung->gast_punkte . ")</h3>"; ?> echo "<h3>(" . $begegnung->heim_punkte . ":" . $begegnung->gast_punkte . ")</h3>"; ?>
</td> </td>
</tr> </tr>
@@ -1388,9 +1529,9 @@ if (count($spiele) > 0) {
<td nowrap style="text-align: center;"><?php echo $spiel->teamspiel_nummer ?></td> <td nowrap style="text-align: center;"><?php echo $spiel->teamspiel_nummer ?></td>
<?php <?php
if ($bilder_anzeigen) { if ($bilder_anzeigen) {
?> ?>
<td id="bilder_heim_<?php echo $spiel->teamspiel_nummer ?>" style="display: block; text-align: center;" > <td id="bilder_heim_<?php echo $spiel->teamspiel_nummer ?>" style="display: block; text-align: center;" >
<?php <?php
$bild = bildHTML("mannschaftsmitglieder", !$details_anzeigen && $spiel->heim_spieler_1_bild_ausblenden ? '' : $spiel->heim_spieler_1_mitglied_id, 45, 60, 0, 0, 'border="1"'); $bild = bildHTML("mannschaftsmitglieder", !$details_anzeigen && $spiel->heim_spieler_1_bild_ausblenden ? '' : $spiel->heim_spieler_1_mitglied_id, 45, 60, 0, 0, 'border="1"');
@@ -1408,7 +1549,7 @@ if (count($spiele) > 0) {
} }
?> ?>
</td> </td>
<?php <?php
} }
?> ?>
@@ -1458,7 +1599,7 @@ if (count($spiele) > 0) {
if ($bild != null) if ($bild != null)
echo $bild; echo $bild;
if (!(empty($spiel->heim_spieler_2_id) && empty($spiel->gast_spieler_2_id))) { if (!(empty($spiel->heim_spieler_2_id) && empty($spiel->gast_spieler_2_id))) {
if (($details_anzeigen || !$spiel->gast_spieler_2_bild_ausblenden) && ($spiel->gast_spieler_2_mitglied_id != null || ($spiel->gast_spieler_2_id != null && $spiel->gast_spieler_2_id != 0))) { if (($details_anzeigen || !$spiel->gast_spieler_2_bild_ausblenden) && ($spiel->gast_spieler_2_mitglied_id != null || ($spiel->gast_spieler_2_id != null && $spiel->gast_spieler_2_id != 0))) {
$bild = bildHTML("mannschaftsmitglieder", !$details_anzeigen && $spiel->gast_spieler_2_bild_ausblenden ? '' : $spiel->gast_spieler_2_mitglied_id, 45, 60, 0, 0, 'border="1"'); $bild = bildHTML("mannschaftsmitglieder", !$details_anzeigen && $spiel->gast_spieler_2_bild_ausblenden ? '' : $spiel->gast_spieler_2_mitglied_id, 45, 60, 0, 0, 'border="1"');
if ($bild == null) if ($bild == null)
@@ -1483,15 +1624,15 @@ if (count($spiele) > 0) {
<?php <?php
} }
?> ?>
<script> <script>
function bilder_zeigen(){ function bilder_zeigen(){
let breite = window.innerWidth; let breite = window.innerWidth;
let id = 0; let id = 0;
let anzeige; let anzeige;
let anzahl_spiele = <?PHP echo count($spiele); ?>; let anzahl_spiele = <?PHP echo count($spiele); ?>;
if (breite < 480){ if (breite < 480){
anzeige = "none"; anzeige = "none";
} }
@@ -1509,11 +1650,11 @@ if (count($spiele) > 0) {
function onResize() { function onResize() {
bilder_zeigen(); bilder_zeigen();
} }
bilder_zeigen(); bilder_zeigen();
window.addEventListener("resize", onResize); window.addEventListener("resize", onResize);
</script> </script>
<?php <?php
@@ -2338,7 +2479,6 @@ static function tabelleAnzeigen($veranstaltung, $modus, $teams, $spieltag, $spie
style="border-spacing: 0;width: 100%"> style="border-spacing: 0;width: 100%">
<tr> <tr>
<?php <?php
$n = 0;
foreach ($mitglieder as $row) { foreach ($mitglieder as $row) {
if (($mitglieder_modus == 0 && !$mitglieder_ist_dauerhaft[$row->spieler_id]) if (($mitglieder_modus == 0 && !$mitglieder_ist_dauerhaft[$row->spieler_id])
|| ($mitglieder_modus == 1 && $mitglieder_ist_dauerhaft[$row->spieler_id])) || ($mitglieder_modus == 1 && $mitglieder_ist_dauerhaft[$row->spieler_id]))
@@ -2945,7 +3085,6 @@ static function tabelleAnzeigen($veranstaltung, $modus, $teams, $spieltag, $spie
static function vereine($titel, $beschreibung, $rows, $organisationAnzeigen): void static function vereine($titel, $beschreibung, $rows, $organisationAnzeigen): void
{ {
global $params; global $params;
if (!empty($titel)) { ?> if (!empty($titel)) { ?>
<div <div
class="componentheading<?php echo $params->get('pageclass_sfx'); ?>"><?php echo htmlentities_utf8($titel); ?></div><?php } class="componentheading<?php echo $params->get('pageclass_sfx'); ?>"><?php echo htmlentities_utf8($titel); ?></div><?php }
@@ -2961,110 +3100,79 @@ static function tabelleAnzeigen($veranstaltung, $modus, $teams, $spieltag, $spie
<?php <?php
} }
if (count($rows) > 0) { if (count($rows) > 0) {
$bilder_anzeigen = false; $bilder_anzeigen = false;
foreach ($rows as $verein) { foreach ($rows as $verein) {
if (bildHTML("vereine", $verein->verein_id, 28, 28) != null) { if (bildHTML("vereine", $verein->verein_id, 40, 40) != null) {
$bilder_anzeigen = true; $bilder_anzeigen = true;
break; break;
} }
} }
?>
<style>td{padding: 2px;}</style>
<div style="text-align: center;">
<div style="overflow-x: auto;display: inline-block;">
<table class="contentpaneopen<?php echo $params->get('pageclass_sfx'); ?>">
<tr class="sectiontableheader<?php echo $params->get('pageclass_sfx'); ?>">
<?php if ($bilder_anzeigen) { ?>
<th style='text-align: center; width: 120px;' nowrap>Vereinslogo</th>
<?php } ?>
<th style='text-align: left;' nowrap><strong>
<a href="verband/vereine?view=sportsmanager&task=sort_by_vereinsname">
<?php echo Text::_('COM_SPORTSMANAGER_TEAM_NAME2'); ?>
</a>
</strong></th>
<th style='text-align: center;width: 120px;' nowrap><strong>
<a href="verband/vereine?view=sportsmanager&task=sort_by_mitglieder">
<?php echo Text::_('COM_SPORTSMANAGER_MEMBERS'); ?></a></strong></th>
<th style='text-align: left;' nowrap><strong><?php echo Text::_('COM_SPORTSMANAGER_TEAM_SEAT'); ?></strong></th>
<?php if ($organisationAnzeigen) { ?>
<th style='text-align: left;' nowrap>Organisation</th>
<?php } ?>
</tr>
<?php
if ($organisationAnzeigen) { foreach ($rows as $row) {
$organisation = $rows[0]->veranstalterbezeichnung; ?>
?> <tr>
<div class="uk-overflow-auto"> <?php
<table class="uk-table contentpaneopen<?php echo $params->get('pageclass_sfx'); ?>"> if ($bilder_anzeigen) {
<tr> ?>
<td nowrap class="contentheading<?php echo $params->get('pageclass_sfx'); ?>" <td style="text-align: center;width: 60px;">
style="width: 100%"> <?php
<?php echo $organisation != null ? htmlentities_utf8($organisation) : Text::_('COM_SPORTSMANAGER_NONE2'); ?> $bild = bildHTML("vereine", $row->verein_id, 40, 40, 0, 0, 'border="0"');
</td> if ($bild != null)
</tr> echo $bild;
</table> ?>
</div> </td>
<?php <?php
} }
?> ?>
<div class="uk-overflow-auto"> <td style='text-align: left;'>
<table class="uk-table contentpaneopen<?php echo $params->get('pageclass_sfx'); ?>"> <a id="id<?php echo $row->verein_id; ?>"></a>
<tr class="sectiontableheader<?php echo $params->get('pageclass_sfx'); ?>"> <a href="<?php echo SportsManagerURL('&task=verein_details&id=' . $row->verein_id); ?>">
<th nowrap><strong><?php echo Text::_('COM_SPORTSMANAGER_TEAM_NAME2'); ?></strong></th> <?php echo htmlentities_utf8(NichtLeererString($row->vereinsname)); ?></a>
<th nowrap><strong><?php echo Text::_('COM_SPORTSMANAGER_TEAM_SEAT'); ?></strong></th> </td>
</tr> <td nowrap style="text-align: center">
<?php <?php echo $row->mitglieder; ?>
</td>
<td style='text-align: left;' nowrap><?php if (!empty($row->vereinssitz)) echo htmlentities_utf8($row->vereinssitz . (!empty($row->vereinssitz_ortsteil) ? ("-" . $row->vereinssitz_ortsteil) : "")); ?></td>
<?php if ($organisationAnzeigen) {
echo "<td nowrap style='text-align: left;'>" . $row->veranstalterbezeichnung . "</td>";
} ?>
$k = 0; </tr>
foreach ($rows as $row) { <?php
if ($organisationAnzeigen) { }
if ($row->veranstalterbezeichnung != $organisation) { ?>
$organisation = $row->veranstalterbezeichnung; </table>
?> </div>
</table></div> </div>
<span <?php
class="article_seperator<?php echo $params->get('pageclass_sfx'); ?>">&nbsp;</span> }
?>
<div class="uk-overflow-auto"> <span class="article_seperator<?php echo $params->get('pageclass_sfx'); ?>">&nbsp;</span>
<table class="uk-table contentpaneopen<?php echo $params->get('pageclass_sfx'); ?>"> <?php
<tr>
<td nowrap
class="contentheading<?php echo $params->get('pageclass_sfx'); ?>"
style="width: 100%">
<?php echo $organisation != null ? htmlentities_utf8($organisation) : "Keine"; ?>
</td>
</tr>
</table>
</div>
<div class="uk-overflow-auto"><table class="uk-table contentpaneopen<?php echo $params->get('pageclass_sfx'); ?>">
<tr class="sectiontableheader<?php echo $params->get('pageclass_sfx'); ?>">
<th nowrap><strong><?php echo Text::_('COM_SPORTSMANAGER_TEAM_NAME2'); ?></strong>
</th>
<th nowrap><strong><?php echo Text::_('COM_SPORTSMANAGER_TEAM_SEAT'); ?></strong>
</th>
</tr>
<?php
}
}
?>
<tr class="sectiontableentry<?php echo $k + 1;
$k = ($k + 1) % 2; ?><?php echo $params->get('pageclass_sfx'); ?>">
<td nowrap>
<table style="width: 100%; border: none; border-spacing: 0; padding: 0">
<tr>
<td>
<a id="id<?php echo $row->verein_id; ?>"></a><a
href="<?php echo SportsManagerURL('&task=verein_details&id=' . $row->verein_id); ?>"><?php echo htmlentities_utf8(NichtLeererString($row->vereinsname)); ?></a>
</td>
<?php
if ($bilder_anzeigen) {
?>
<td style="width: 29px">
<?php
$bild = bildHTML("vereine", $row->verein_id, 28, 28, 0, 0, 'border="0"');
if ($bild != null)
echo $bild;
?>
</td>
<?php
}
?>
</tr>
</table>
</td>
<td nowrap><?php if (!empty($row->vereinssitz)) echo htmlentities_utf8($row->vereinssitz . (!empty($row->vereinssitz_ortsteil) ? ("-" . $row->vereinssitz_ortsteil) : "")); ?></td>
</tr>
<?php
}
?>
</table></div>
<?php
}
?>
<span class="article_seperator<?php echo $params->get('pageclass_sfx'); ?>">&nbsp;</span>
<?php
} }
static function vereinDetails($verein, $mitglieder, $vereinsansprechpartner, $aktuelle_teams, $vorheriger_verein_id, $naechster_verein_id, $vereins_moderator, $details_anzeigen, $ansprechpartner_anzeigen): void static function vereinDetails($verein, $mitglieder, $vereinsansprechpartner, $aktuelle_teams, $vorheriger_verein_id, $naechster_verein_id, $vereins_moderator, $details_anzeigen, $ansprechpartner_anzeigen): void
@@ -3121,7 +3229,7 @@ static function tabelleAnzeigen($veranstaltung, $modus, $teams, $spieltag, $spie
</table> </table>
<div class="uk-overflow-auto"> <div class="uk-overflow-auto">
<table class="uk-table contentpaneopen<?php echo $params->get('pageclass_sfx'); ?>"> <table class="contentpaneopen<?php echo $params->get('pageclass_sfx'); ?>">
<tr> <tr>
<td colspan="3"> <td colspan="3">
<div> <div>
@@ -3137,7 +3245,7 @@ static function tabelleAnzeigen($veranstaltung, $modus, $teams, $spieltag, $spie
if ($bild != null) { if ($bild != null) {
?> ?>
<div class="uk-overflow-auto"> <div class="uk-overflow-auto">
<table class="uk-table contentpaneopen<?php echo $params->get('pageclass_sfx'); ?>"> <table class="contentpaneopen<?php echo $params->get('pageclass_sfx'); ?>">
<tr> <tr>
<td nowrap><?php echo $bild; ?></td> <td nowrap><?php echo $bild; ?></td>
</tr> </tr>
@@ -3149,7 +3257,7 @@ static function tabelleAnzeigen($veranstaltung, $modus, $teams, $spieltag, $spie
?> ?>
<div class="uk-overflow-auto"> <div class="uk-overflow-auto">
<table class="uk-table contentpaneopen<?php echo $params->get('pageclass_sfx'); ?>"> <table class="contentpaneopen<?php echo $params->get('pageclass_sfx'); ?>">
<tr> <tr>
<td> <td>
<?php <?php
@@ -3250,7 +3358,7 @@ static function tabelleAnzeigen($veranstaltung, $modus, $teams, $spieltag, $spie
} }
?> ?>
<div class="uk-overflow-auto"> <div class="uk-overflow-auto">
<table class="uk-table contentpaneopen<?php echo $params->get('pageclass_sfx'); ?>"> <table class="contentpaneopen<?php echo $params->get('pageclass_sfx'); ?>">
<tr> <tr>
<td nowrap class="contentheading<?php echo $params->get('pageclass_sfx'); ?>" <td nowrap class="contentheading<?php echo $params->get('pageclass_sfx'); ?>"
style="width: 100%"><?php echo Text::_('COM_SPORTSMANAGER_CURRENT_TEAMS'); ?></td> style="width: 100%"><?php echo Text::_('COM_SPORTSMANAGER_CURRENT_TEAMS'); ?></td>
@@ -3259,7 +3367,7 @@ static function tabelleAnzeigen($veranstaltung, $modus, $teams, $spieltag, $spie
</div> </div>
<div class="uk-overflow-auto"> <div class="uk-overflow-auto">
<table class="uk-table contentpaneopen<?php echo $params->get('pageclass_sfx'); ?>"> <table class="contentpaneopen<?php echo $params->get('pageclass_sfx'); ?>">
<tr class="sectiontableheader<?php echo $params->get('pageclass_sfx'); ?>"> <tr class="sectiontableheader<?php echo $params->get('pageclass_sfx'); ?>">
<th nowrap><strong><?php echo Text::_('COM_SPORTSMANAGER_TEAM'); ?></strong></th> <th nowrap><strong><?php echo Text::_('COM_SPORTSMANAGER_TEAM'); ?></strong></th>
<th><strong><?php echo Text::_('COM_SPORTSMANAGER_COMPETITIONS'); ?></strong></th> <th><strong><?php echo Text::_('COM_SPORTSMANAGER_COMPETITIONS'); ?></strong></th>
@@ -3312,7 +3420,7 @@ static function tabelleAnzeigen($veranstaltung, $modus, $teams, $spieltag, $spie
if (count($mitglieder) > 0) { if (count($mitglieder) > 0) {
?> ?>
<div class="uk-overflow-auto"> <div class="uk-overflow-auto">
<table class="uk-table contentpaneopen<?php echo $params->get('pageclass_sfx'); ?>"> <table class="contentpaneopen<?php echo $params->get('pageclass_sfx'); ?>">
<tr> <tr>
<td nowrap class="contentheading<?php echo $params->get('pageclass_sfx'); ?>" <td nowrap class="contentheading<?php echo $params->get('pageclass_sfx'); ?>"
style="width: 100%"><?php echo Text::_('COM_SPORTSMANAGER_MEMBERS'); ?></td> style="width: 100%"><?php echo Text::_('COM_SPORTSMANAGER_MEMBERS'); ?></td>
@@ -3321,67 +3429,48 @@ static function tabelleAnzeigen($veranstaltung, $modus, $teams, $spieltag, $spie
</div> </div>
<div class="uk-overflow-auto"> <div class="uk-overflow-auto">
<table class="uk-table contentpaneopen<?php echo $params->get('pageclass_sfx'); ?>" <table class="contentpaneopen<?php echo $params->get('pageclass_sfx'); ?>"
style="border-spacing: 0"> style="border-spacing: 0;width: 100%">
<tr> <tr>
<?php <?php
$n = 0;
foreach ($mitglieder as $row) { foreach ($mitglieder as $row) {
if ($n % 3 == 0 && $n != 0) echo "<table style='display: inline-table;'><tr>";
echo "</tr><tr>"; echo "<td style='text-align: center;vertical-align: center; width: 220px;' class=\"sectiontableentry" . (($n % 2) + 1) . $params->get('pageclass_sfx') . "\">";
?>
echo "<td style='text-align: center; vertical-align: center' class=\"sectiontableentry" . (($n % 2) + 1) . $params->get('pageclass_sfx') . "\">"; <a href="<?php echo SportsManagerURL('&task=spieler_details&id=' . $row->spieler_id); ?>">
echo "<table>"; <?php echo htmlentities_utf8($row->nachname . ", " . $row->vorname); ?></a><?php
echo "<tr><td style='text-align: center'>";
?><a
href="<?php echo SportsManagerURL('&task=spieler_details&id=' . $row->spieler_id); ?>"><?php echo htmlentities_utf8($row->nachname . ", " . $row->vorname); ?></a><?php
if (!empty($row->spielernr)) if (!empty($row->spielernr))
echo "<br /><small>" . htmlentities_utf8($row->spielernr) . "</small>"; echo "<br /><small>" . htmlentities_utf8($row->spielernr) . "</small>";
echo "</td></tr>";
if ($vereins_moderator) { if ($vereins_moderator) {
if (!empty($row->geburtsjahr)) { if (!empty($row->geburtsjahr)) {
echo "<tr><td style='text-align: center'>"; echo "<br /><small>" . htmlentities_utf8($row->geburtsjahr) . "</small>";
echo "<small>" . htmlentities_utf8($row->geburtsjahr) . "</small>";
echo "</td></tr>";
} }
if (!empty($row->strasse) || if (!empty($row->strasse))
!empty($row->plz) || !empty($row->ort)) { echo "<br /><small>" . htmlentities_utf8($row->strasse) . "</small><br />";
echo "<tr><td style='text-align: center'>"; if (!empty($row->plz) || !empty($row->ort))
if (!empty($row->strasse)) echo "<br /><small>" . (!empty($row->plz) ? (htmlentities_utf8($row->plz) . " ") : "") . htmlentities_utf8($row->ort) . "</small>";
echo "<small>" . htmlentities_utf8($row->strasse) . "</small><br />"; if (!empty($row->telefon))
if (!empty($row->plz) || !empty($row->ort)) echo "<br /><small>" . htmlentities_utf8($row->telefon) . "</small><br />";
echo "<small>" . (!empty($row->plz) ? (htmlentities_utf8($row->plz) . " ") : "") . htmlentities_utf8($row->ort) . "</small>"; if (!empty($row->mobil))
echo "</td></tr>"; echo "<br /><small>" . htmlentities_utf8($row->mobil) . "</small><br />";
} if (!empty($row->email)) {
if (!empty($row->telefon) || $replacement = HTMLHelper::_('email.cloak', $row->email, 1, $row->email, 0);
!empty($row->mobil) || echo "<br /><small>" . $replacement . "</small>";
!empty($row->email)) {
echo "<tr><td style='text-align: center'>";
if (!empty($row->telefon))
echo "<small>" . htmlentities_utf8($row->telefon) . "</small><br />";
if (!empty($row->mobil))
echo "<small>" . htmlentities_utf8($row->mobil) . "</small><br />";
if (!empty($row->email)) {
$replacement = HTMLHelper::_('email.cloak', $row->email, 1, $row->email, 0);
echo "<small>" . $replacement . "</small>";
}
echo "</td></tr>";
} }
} }
echo "</table></td>"; echo "</td>";
echo "<td style='text-align: center' class=\"sectiontableentry" . (($n % 2) + 1) . $params->get('pageclass_sfx') . "\">";
$bild = bildHTML("spieler", !$details_anzeigen && $row->bild_ausblenden ? '' : $row->spieler_id, 90, 120, 0, 0, 'border="1"', $row->geschlecht == 'M' ? 'm' : 'w'); echo "<td style='text-align: left; width: 120px;' class=\"sectiontableentry" . (($n % 2) + 1) . $params->get('pageclass_sfx') . "\">";
$bild = bildHTML("spieler", !$details_anzeigen && $row->bild_ausblenden ? '' : $row->mitglied_von_team_id, 90, 120, 0, 0, 'border="1"');
if ($bild == null)
$bild = bildHTML("spieler", !$details_anzeigen && $row->bild_ausblenden ? '' : $row->spieler_id, 90, 120, 0, 0, 'border="1"', $row->geschlecht == 'M' ? 'm' : 'w');
if ($bild != null) { if ($bild != null) {
?> echo $bild;
<table style="padding: 4px">
<tr>
<td><?php echo $bild; ?></td>
</tr>
</table>
<?php
} }
echo "</td>"; echo "</td>";
$n++; $n++;
echo "</tr>";
echo "</table>";
} }
?> ?>
</tr> </tr>
@@ -4322,7 +4411,7 @@ static function tabelleAnzeigen($veranstaltung, $modus, $teams, $spieltag, $spie
:</strong></td> :</strong></td>
<td nowrap style="text-align: right"> <td nowrap style="text-align: right">
<?php <?php
echo($spieler->elo_einzel_spiele == 1 ? Text::sprintf('COM_SPORTSMANAGER_GAME_ELO_IN_ONE_GAME', $spieler->elo_einzel) : Text::sprintf('COM_SPORTSMANAGER_GAME_ELO_IN_NUMBER_GAMES', $spieler->elo_einzel)); echo($spieler->elo_einzel_spiele == 1 ? Text::sprintf('COM_SPORTSMANAGER_GAME_ELO_IN_ONE_GAME', $spieler->elo_einzel) : Text::sprintf('COM_SPORTSMANAGER_GAME_ELO_IN_NUMBER_GAMES', $spieler->elo_einzel, $spieler->elo_einzel_spiele));
?> ?>
</td> </td>
</tr> </tr>
@@ -4336,7 +4425,7 @@ static function tabelleAnzeigen($veranstaltung, $modus, $teams, $spieltag, $spie
:</strong></td> :</strong></td>
<td nowrap style="text-align: right"> <td nowrap style="text-align: right">
<?php <?php
echo($spieler->elo_doppel_spiele == 1 ? Text::sprintf('COM_SPORTSMANAGER_GAME_ELO_IN_ONE_GAME', $spieler->elo_doppel) : Text::sprintf('COM_SPORTSMANAGER_GAME_ELO_IN_NUMBER_GAMES', $spieler->elo_doppel)); echo($spieler->elo_doppel_spiele == 1 ? Text::sprintf('COM_SPORTSMANAGER_GAME_ELO_IN_ONE_GAME', $spieler->elo_doppel) : Text::sprintf('COM_SPORTSMANAGER_GAME_ELO_IN_NUMBER_GAMES', $spieler->elo_doppel, $spieler->elo_doppel_spiele));
?> ?>
</td> </td>
</tr> </tr>
@@ -5688,26 +5777,26 @@ static function tabelleAnzeigen($veranstaltung, $modus, $teams, $spieltag, $spie
?> ?>
<th nowrap><strong><?php echo Text::_('COM_SPORTSMANAGER_GAMES'); ?></strong></th> <th nowrap><strong><?php echo Text::_('COM_SPORTSMANAGER_GAMES'); ?></strong></th>
<th nowrap <th nowrap
title="<?php echo Text::_('COM_SPORTSMANAGER_GAME_POINTS'); ?> title="<?php echo Text::_('COM_SPORTSMANAGER_GAME_POINTS'); ?>
<?php echo Text::_('COM_SPORTSMANAGER_WON'); ?>"> <?php echo Text::_('COM_SPORTSMANAGER_WON'); ?>">
<strong><?php echo Text::_('COM_SPORTSMANAGER_GAME_POINTS_SHORTCUT'); ?> <strong><?php echo Text::_('COM_SPORTSMANAGER_GAME_POINTS_SHORTCUT'); ?>
+</strong></th> +</strong></th>
<th nowrap <th nowrap
title="<?php echo Text::_('COM_SPORTSMANAGER_GAME_POINTS'); ?> title="<?php echo Text::_('COM_SPORTSMANAGER_GAME_POINTS'); ?>
<?php echo Text::_('COM_SPORTSMANAGER_LOST'); ?>"> <?php echo Text::_('COM_SPORTSMANAGER_LOST'); ?>">
<strong><?php echo Text::_('COM_SPORTSMANAGER_GAME_POINTS_SHORTCUT'); ?> <strong><?php echo Text::_('COM_SPORTSMANAGER_GAME_POINTS_SHORTCUT'); ?>
-</strong></th> -</strong></th>
<th nowrap <th nowrap
title="<?php echo Text::_('COM_SPORTSMANAGER_GAME_POINTS'); ?> title="<?php echo Text::_('COM_SPORTSMANAGER_GAME_POINTS'); ?>
<?php echo Text::_('COM_SPORTSMANAGER_RATE'); ?>"> <?php echo Text::_('COM_SPORTSMANAGER_RATE'); ?>">
<strong><?php echo Text::_('COM_SPORTSMANAGER_RATE_SHORTCUT'); ?></strong></th> <strong><?php echo Text::_('COM_SPORTSMANAGER_RATE_SHORTCUT'); ?></strong></th>
<th nowrap <th nowrap
title="<?php echo Text::_('COM_SPORTSMANAGER_POINTS'); ?> title="<?php echo Text::_('COM_SPORTSMANAGER_POINTS'); ?>
<?php echo Text::_('COM_SPORTSMANAGER_WON'); ?>"> <?php echo Text::_('COM_SPORTSMANAGER_WON'); ?>">
<strong><?php echo Text::_('COM_SPORTSMANAGER_POINTS_SHORTCUT'); ?> +</strong> <strong><?php echo Text::_('COM_SPORTSMANAGER_POINTS_SHORTCUT'); ?> +</strong>
</th> </th>
<th nowrap <th nowrap
title="<?php echo Text::_('COM_SPORTSMANAGER_POINTS'); ?> title="<?php echo Text::_('COM_SPORTSMANAGER_POINTS'); ?>
<?php echo Text::_('COM_SPORTSMANAGER_LOST'); ?>"> <?php echo Text::_('COM_SPORTSMANAGER_LOST'); ?>">
<strong><?php echo Text::_('COM_SPORTSMANAGER_POINTS_SHORTCUT'); ?> -</strong> <strong><?php echo Text::_('COM_SPORTSMANAGER_POINTS_SHORTCUT'); ?> -</strong>
</th> </th>
@@ -6717,6 +6806,9 @@ static function tabelleAnzeigen($veranstaltung, $modus, $teams, $spieltag, $spie
static function rangliste($rangliste, $rangliste_punkte, $allein_angezeigt, $details_anzeigen): void static function rangliste($rangliste, $rangliste_punkte, $allein_angezeigt, $details_anzeigen): void
{ {
?>
<style>td{padding: 3px;}</style>
<?php
global $params; global $params;
if ($allein_angezeigt) { if ($allein_angezeigt) {
?> ?>
@@ -6795,15 +6887,15 @@ static function tabelleAnzeigen($veranstaltung, $modus, $teams, $spieltag, $spie
?> ?>
<!-- Tabelle Rangliste --> <!-- Tabelle Rangliste -->
<div class="uk-overflow-auto"> <div class="uk-overflow-auto">
<table style='width: 100%; padding:1px 1px 1px 1px; border-collapse: collapse;' <table style='width: 100%; border-collapse: collapse;'
class="uk-table-divider uk-table-hover uk-table-middle rangliste-width contentpaneopen<?php echo $params->get('pageclass_sfx'); ?>"> class="uk-table-divider uk-table-hover uk-table-middle rangliste-width contentpaneopen<?php echo $params->get('pageclass_sfx'); ?>">
<tr class="sectiontableheader<?php echo $params->get('pageclass_sfx'); ?>"> <tr class="sectiontableheader<?php echo $params->get('pageclass_sfx'); ?>">
<th><strong><?php echo Text::_('COM_SPORTSMANAGER_RANK'); ?></strong></th> <th><strong><?php echo Text::_('COM_SPORTSMANAGER_RANK'); ?></strong></th>
<th></th> <th></th>
<th style="text-align: left"> <th style="text-align: left;">
<strong><?php echo Text::_('COM_SPORTSMANAGER_PLAYER'); ?></strong> <strong><?php echo Text::_('COM_SPORTSMANAGER_PLAYER'); ?></strong>
</th> </th>
<th style="text-align: center"><strong><?php echo Text::_('COM_SPORTSMANAGER_POINTS'); ?></strong></th> <th style="text-align: center; width 70px;"><strong><?php echo Text::_('COM_SPORTSMANAGER_POINTS'); ?></strong></th>
</tr> </tr>
<?php <?php
@@ -6820,10 +6912,10 @@ static function tabelleAnzeigen($veranstaltung, $modus, $teams, $spieltag, $spie
?> ?>
</td> </td>
<td> <td style="width 70px;">
<?php <?php
if (($bild = yoothemeBild("spieler", !$details_anzeigen && $row->bild_ausblenden ? '' : $row->spieler_id, $row->geschlecht == 'M' ? 'm' : 'w', '#resize=75', 'border="1" style="text-align: left" hspace="8" vspace="2"')) != null) if (($bild = yoothemeBild("spieler", !$details_anzeigen && $row->bild_ausblenden ? '' : $row->spieler_id, $row->geschlecht == 'M' ? 'm' : 'w', 'border="1" style="text-align: left; width: 60px;" hspace="8" vspace="2"')) != null)
echo $bild; ?> echo "\n".$bild; ?>
</td> </td>
<td> <td>
<?php <?php
File diff suppressed because it is too large Load Diff
@@ -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"
@@ -130,10 +131,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."
@@ -311,6 +315,9 @@ 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"
COM_SPORTSMANAGER_SHOW_ORGANISATION="Verband zeigen"
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 +387,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 +614,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 +645,8 @@ 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_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 +662,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 +792,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"
@@ -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"
@@ -129,11 +130,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."
@@ -311,6 +315,9 @@ 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"
COM_SPORTSMANAGER_SHOW_ORGANISATION="Show organisation"
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 +387,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 +614,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 +645,8 @@ 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_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 +662,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 +792,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"
+8 -4
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,"
@@ -1037,11 +1039,12 @@ 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,"
. "\n `logo_url` TINYTEXT NOT NULL," . "\n `logo_url` TINYTEXT NOT NULL,"
. "\n `ticker_logo_url` TINYTEXT NOT NULL," . "\n `ticker_logo_url` TINYTEXT NOT NULL,"
. "\n `status` tinyint(4) NOT NULL DEFAULT '0'," . "\n `status` tinyint(4) NOT NULL DEFAULT '0',"
. "\n `reihenfolge` tinyint(4) DEFAULT '1'," . "\n `reihenfolge` tinyint(4) DEFAULT '1',"
. "\n `kategorie` tinyint(4) DEFAULT '1'," . "\n `kategorie` tinyint(4) DEFAULT '1',"
@@ -1063,6 +1066,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 +1117,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 = '106';";
$db->setQuery( $query ); $db->setQuery( $query );
if (!$db->execute()) { die($db->stderr(true)); } if (!$db->execute()) { die($db->stderr(true)); }
+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">