diff --git a/src/structure/components/com_sportsmanager/admin.php b/src/structure/components/com_sportsmanager/admin.php
index 964e4aa..b8fd46a 100644
--- a/src/structure/components/com_sportsmanager/admin.php
+++ b/src/structure/components/com_sportsmanager/admin.php
@@ -10721,12 +10721,13 @@ function adminBegegnungenPokalrundeAuslosenForm(): void
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
$sperren = false;
+ $Fehlertext = "";
$veranstaltungId = $jInput->get('veranstaltungid', 0, 'INT');
$spielort_id = $jInput->get('spielort_id', 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!");
@@ -10762,18 +10763,30 @@ function adminBegegnungenPokalrundeAuslosenForm(): void
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;";
+ $query = "SELECT"
+ . "\n CASE"
+ . "\n WHEN t1.heim_spielpunkte > t1.gast_spielpunkte THEN t3.team_id"
+ . "\n WHEN t1.heim_spielpunkte < t1.gast_spielpunkte THEN t2.team_id"
+ . "\n WHEN t1.heim_spielpunkte = t1.gast_spielpunkte AND t1.heim_punkte > t1.gast_punkte THEN t3.team_id"
+ . "\n WHEN t1.heim_spielpunkte = t1.gast_spielpunkte AND t1.heim_punkte < t1.gast_punkte THEN t2.team_id"
+ . "\n ELSE 0"
+ . "\n END 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 ($looser->Verlierer == 0)
+ {
+ $Fehlertext = "Mindestens ein Sieger konnte nicht ermittelt werden!!!";
+ $sperren = true;
+ }
if ($Zeile > 0) $Verlierer .= ",";
$Verlierer .= $looser->Verlierer;
$Zeile++;
@@ -10826,14 +10839,21 @@ function adminBegegnungenPokalrundeAuslosenForm(): void
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'];
+ $matches[$matchNr + 1]['heim'] = $teams_auslosung[$team_heim]['team_id'];
+ $matches[$matchNr + 1]['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"
+ //Verlierer Halbfinale ermitteln
+ $query = "SELECT"
+ . "\n CASE"
+ . "\n WHEN t1.heim_spielpunkte > t1.gast_spielpunkte THEN t3.team_id"
+ . "\n WHEN t1.heim_spielpunkte < t1.gast_spielpunkte THEN t2.team_id"
+ . "\n WHEN t1.heim_spielpunkte = t1.gast_spielpunkte AND t1.heim_punkte > t1.gast_punkte THEN t3.team_id"
+ . "\n WHEN t1.heim_spielpunkte = t1.gast_spielpunkte AND t1.heim_punkte < t1.gast_punkte THEN t2.team_id"
+ . "\n ELSE 0"
+ . "\n END 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"
@@ -10847,13 +10867,12 @@ function adminBegegnungenPokalrundeAuslosenForm(): void
$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]['rundentitel'] = $match['rundentitel'] ?? $rundenTitel;
$matches[$spiel_nr]['zeitpunkt'] = $zeitpunkt;
- $matches[$spiel_nr]['heimspielort_id'] = $teams[$teams_setzliste[$setzung[0]]]['heimspielort_id'];
$team_heim = $match['heim'];
+ $matches[$spiel_nr]['heimspielort_id'] = $teams[$team_heim]['heimspielort_id'];
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"],
@@ -10880,12 +10899,11 @@ function adminBegegnungenPokalrundeAuslosenForm(): void
if (!$db->execute()) {
die($db->stderr(true));
}
-
+
redirectSportsManagerURL('&task=admin_begegnungen&veranstaltungid=' . $veranstaltungId);
}
else{
- echo "
- $Fehlertext\n";
+ redirectSportsManagerURL('&task=admin_begegnungen&veranstaltungid=' . $veranstaltungId, $Fehlertext);
}
}
@@ -10897,10 +10915,10 @@ function adminBegegnungenPokalrundeAuslosenForm(): void
$teams = [];
$setzliste = [];
- $setzung = [];
$matches = [];
$sperren = false;
+ $Fehlertext = "";
$veranstaltungId = $jInput->get('veranstaltungid', 0, 'INT');
$spielort_id = $jInput->get('spielort_id', 0, 'INT');
$rundenNr = $jInput->get('runde', 0, 'INT');
@@ -10984,8 +11002,6 @@ function adminBegegnungenPokalrundeAuslosenForm(): void
$sperren = true;
}
- $matches = [];
-
if ($rundenNr == 1){
$setzliste = getSetzliste($anzahlrunden);
$spiel_nr = 0;
@@ -11017,7 +11033,9 @@ function adminBegegnungenPokalrundeAuslosenForm(): void
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
+ 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
@@ -11025,13 +11043,25 @@ function adminBegegnungenPokalrundeAuslosenForm(): void
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
+ if ($begegnung['Gast_Satzpunkte'] > $begegnung['Heim_Satzpunkte'])
$sieger = $begegnung['gast_team_id'];
-
+ if ($begegnung['Heim_Satzpunkte'] == $begegnung['Gast_Satzpunkte'])
+ {
+ if ($begegnung['Heim_Tore'] > $begegnung['Gast_Tore'])
+ $sieger = $begegnung['heim_team_id'];
+ else if ($begegnung['Gast_Tore'] > $begegnung['Heim_Tore'])
+ $sieger = $begegnung['gast_team_id'];
+ else {
+ $sieger = 0;
+ $Fehlertext = "Mindestens ein Sieger konnte nicht ermittelt werden!!!";
+ $sperren = true;
+ }
+ }
if ($begegnung['Spiel_Nr'] % 2)
$matches[round($begegnung['Spiel_Nr']/2)]['heim'] = $sieger;
else
@@ -11042,7 +11072,14 @@ function adminBegegnungenPokalrundeAuslosenForm(): void
if ($spielumplatz3)
{
//Verlierer Halbfinale ermitteln
- $query = "SELECT IF(t1.heim_punkte > t1.gast_punkte, t3.team_id, t2.team_id) AS Verlierer"
+ $query = "SELECT"
+ . "\n CASE"
+ . "\n WHEN t1.heim_spielpunkte > t1.gast_spielpunkte THEN t3.team_id"
+ . "\n WHEN t1.heim_spielpunkte < t1.gast_spielpunkte THEN t2.team_id"
+ . "\n WHEN t1.heim_spielpunkte = t1.gast_spielpunkte AND t1.heim_punkte > t1.gast_punkte THEN t3.team_id"
+ . "\n WHEN t1.heim_spielpunkte = t1.gast_spielpunkte AND t1.heim_punkte < t1.gast_punkte THEN t2.team_id"
+ . "\n ELSE 0"
+ . "\n END 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"
@@ -11067,7 +11104,6 @@ function adminBegegnungenPokalrundeAuslosenForm(): void
}
}
- $Fehlertext = "";
foreach($matches AS $spiel_nr => $match)
{
$matches[$spiel_nr]['rundentitel'] = $matches[$spiel_nr]['rundentitel'] ?? $rundenTitel;
@@ -11103,8 +11139,7 @@ function adminBegegnungenPokalrundeAuslosenForm(): void
redirectSportsManagerURL('&task=admin_begegnungen&veranstaltungid=' . $veranstaltungId);
}
else{
- echo "
- $Fehlertext\n";
+ redirectSportsManagerURL('&task=admin_begegnungen&veranstaltungid=' . $veranstaltungId, $Fehlertext);
}
}
diff --git a/src/structure/components/com_sportsmanager/sportsmanager.php b/src/structure/components/com_sportsmanager/sportsmanager.php
index 36d057b..e6bc4fa 100644
--- a/src/structure/components/com_sportsmanager/sportsmanager.php
+++ b/src/structure/components/com_sportsmanager/sportsmanager.php
@@ -2430,7 +2430,7 @@ function turnierbaumAnzeigen($veranstaltung): void
else
$begegnungen[$begegnung['Spieltag_Nr'] + 1][round($begegnung['Spiel_Nr'] / 2)]['gast'] = htmlentities($begegnung['Heim']);
}
- } else
+ } else
if ($begegnung['Heim_Satzpunkte'] < $begegnung['Gast_Satzpunkte']) {
$begegnungen[$begegnung['Spieltag_Nr']][$begegnung['Spiel_Nr']]['sieger'] = 2;
if ($begegnung['Spieltag_Nr'] < $anzahlRunden){
@@ -2439,6 +2439,24 @@ function turnierbaumAnzeigen($veranstaltung): void
else
$begegnungen[$begegnung['Spieltag_Nr'] + 1][round($begegnung['Spiel_Nr'] / 2)]['gast'] = htmlentities($begegnung['Gast']);
}
+ } else
+ if ($begegnung['Heim_Satzpunkte'] == $begegnung['Gast_Satzpunkte'] && $begegnung['Heim_Tore'] > $begegnung['Gast_Tore']) {
+ $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'] && $begegnung['Heim_Tore'] < $begegnung['Gast_Tore']) {
+ $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;
}