From a2808b7db013b7748856360de13c3910570968a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=BCrgen=20Meyer?= Date: Tue, 13 Jan 2026 11:17:32 +0100 Subject: [PATCH] =?UTF-8?q?Erst=20mal=20ein=20bisschen=20aufger=C3=A4umt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/com_sportsmanager/admin.php | 2105 +++++++++-------- .../views/sportsmanager/view_admin.php | 8 +- 2 files changed, 1071 insertions(+), 1042 deletions(-) diff --git a/src/structure/components/com_sportsmanager/admin.php b/src/structure/components/com_sportsmanager/admin.php index 25ae171..937741f 100644 --- a/src/structure/components/com_sportsmanager/admin.php +++ b/src/structure/components/com_sportsmanager/admin.php @@ -12400,6 +12400,54 @@ function adminImportTurnierdisziplinMeldungenSpieleForm(): void HTML_sportsmanager_admin::adminImportTurnierdisziplinMeldungenSpieleForm($row, $veranstalter); } +#[NoReturn] function adminLoeschenTurnierdisziplinMeldungenSpiele($id): void +{ + $db = getDatabase(); + global $_FILES; + $jInput = Factory::getContainer()->get(SiteApplication::class)->input; + + if (!benutzerZugriff("turniere_aendern") && !benutzerTurnierModerator()) + keinZugriff(); + + $query = "DELETE FROM #__sportsmanager_turnierspiel WHERE turnierdisziplin_id = $id;"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "DELETE #__sportsmanager_turniermeldung_spieler_name" + . "\n FROM #__sportsmanager_turniermeldung_spieler_name, #__sportsmanager_turniermeldung_spieler, #__sportsmanager_turniermeldung" + . "\n WHERE #__sportsmanager_turniermeldung_spieler_name.turniermeldung_spieler_id = #__sportsmanager_turniermeldung_spieler.turniermeldung_spieler_id" + . "\n AND #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id" + . "\n AND turnierdisziplin_id = $id AND rundenstufe <> 20;"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "DELETE #__sportsmanager_turniermeldung_spieler" + . "\n FROM #__sportsmanager_turniermeldung_spieler, #__sportsmanager_turniermeldung" + . "\n WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id" + . "\n AND turnierdisziplin_id = $id AND rundenstufe <> 20;"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "DELETE FROM #__sportsmanager_turniermeldung WHERE turnierdisziplin_id = $id AND rundenstufe <> 20;"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + $query = "DELETE FROM #__sportsmanager_turnier_rundenstufe WHERE turnierdisziplin_id = $id;"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } +} + + #[NoReturn] function adminImportTurnierdisziplinMeldungenSpiele(): void { $db = getDatabase(); @@ -12449,1048 +12497,1029 @@ function adminImportTurnierdisziplinMeldungenSpieleForm(): void $elo_aktualisieren = $turnierdisziplin->elo_wertung; $aktualisieren_ab_datum = !empty($turnierdisziplin->beginn) ? substr($turnierdisziplin->beginn, 0, 10) : null; - - if (!empty($_FILES["daten"]["tmp_name"])) { - if (is_uploaded_file($_FILES["daten"]["tmp_name"])) { - $query = "DELETE FROM #__sportsmanager_turnierspiel WHERE turnierdisziplin_id = $id;"; - $db->setQuery($query); - if (!$db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE #__sportsmanager_turniermeldung_spieler_name" - . "\n FROM #__sportsmanager_turniermeldung_spieler_name, #__sportsmanager_turniermeldung_spieler, #__sportsmanager_turniermeldung" - . "\n WHERE #__sportsmanager_turniermeldung_spieler_name.turniermeldung_spieler_id = #__sportsmanager_turniermeldung_spieler.turniermeldung_spieler_id" - . "\n AND #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id" - . "\n AND turnierdisziplin_id = $id AND rundenstufe <> 20;"; - $db->setQuery($query); - if (!$db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE #__sportsmanager_turniermeldung_spieler" - . "\n FROM #__sportsmanager_turniermeldung_spieler, #__sportsmanager_turniermeldung" - . "\n WHERE #__sportsmanager_turniermeldung_spieler.turniermeldung_id = #__sportsmanager_turniermeldung.turniermeldung_id" - . "\n AND turnierdisziplin_id = $id AND rundenstufe <> 20;"; - $db->setQuery($query); - if (!$db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_turniermeldung WHERE turnierdisziplin_id = $id AND rundenstufe <> 20;"; - $db->setQuery($query); - if (!$db->execute()) { - die($db->stderr(true)); - } - - $query = "DELETE FROM #__sportsmanager_turnier_rundenstufe WHERE turnierdisziplin_id = $id;"; - $db->setQuery($query); - if (!$db->execute()) { - die($db->stderr(true)); - } - - $handle = fopen($_FILES["daten"]["tmp_name"], "r"); - if (!$handle) { - redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id, "Die übergebene Datei kann nicht geöffnet werden."); - } - if (feof($handle)) { - redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id, "Die übergebene Datei ist leer."); - } - $titelzeile = chop(utf8_encode(fgets($handle, 4096))); - if (str_starts_with($titelzeile, "sep=")) { - $titelzeile = chop(utf8_encode(fgets($handle, 4096))); - } - if (str_contains($titelzeile, "\t")) - $trennzeichen = "\t"; - else if (str_contains($titelzeile, ";")) - $trennzeichen = ";"; - else - $trennzeichen = ","; - - $spalte = array(); - $titel = explode($trennzeichen, strtolower($titelzeile)); - - foreach ($titel as $index => $bezeichnung) { - if ($bezeichnung == "platz" || $bezeichnung == "platzierung") - $spalte["platz"] = $index; - else if ($bezeichnung == "itsf") - $spalte["itsf"] = $index; - else if ($bezeichnung == "name" || $bezeichnung == "nachname" || $bezeichnung == "name1" || $bezeichnung == "nachname1" || $bezeichnung == "nachname 1") - $spalte["nachname1"] = $index; - else if ($bezeichnung == "vorname" || $bezeichnung == "vorname1" || $bezeichnung == "vorname 1") - $spalte["vorname1"] = $index; - else if ($bezeichnung == "spielernr" || $bezeichnung == "spielernr1" || $bezeichnung == "spielernr. 1") - $spalte["spielernr1"] = $index; - else if ($bezeichnung == "verein" || $bezeichnung == "verein1" || $bezeichnung == "vereinsname" || $bezeichnung == "vereinsname1" || $bezeichnung == "vereinsname 1") - $spalte["verein1"] = $index; - else if ($bezeichnung == "name2" || $bezeichnung == "nachname2" || $bezeichnung == "nachname 2") - $spalte["nachname2"] = $index; - else if ($bezeichnung == "vorname2" || $bezeichnung == "vorname 2") - $spalte["vorname2"] = $index; - else if ($bezeichnung == "spielernr2" || $bezeichnung == "spielernr. 2") - $spalte["spielernr2"] = $index; - else if ($bezeichnung == "verein2" || $bezeichnung == "vereinsname2" || $bezeichnung == "vereinsname 2") - $spalte["verein1"] = $index; - } - - // CSV-Import - if ((isset($spalte["platz"]) && isset($spalte["vorname1"]) && isset($spalte["nachname1"])) || isset($spalte["itsf"])) { - $spielerMeldungen = array(); - - $ist_doppel = false; - if (isset($spalte["vorname2"]) && isset($spalte["nachname2"])) - $ist_doppel = true; - - while (!feof($handle)) { - $buffer = chop(utf8_encode(fgets($handle, 4096))); - $daten = explode($trennzeichen, $buffer); - - foreach ($daten as $index => $wert) { - $wert = trim($wert); - $len = strlen($wert); - if ($len < 2 || $wert[0] != '"' || $wert[$len - 1] != '"') - $daten[$index] = $wert; - else - $daten[$index] = str_replace('""', '"', substr($wert, 1, $len - 2)); - } - $vorname2 = null; - $nachname2 = null; - $verein2 = null; - if (isset($spalte["itsf"])) { - if (!isset($daten[$spalte["itsf"]])) - continue; - $itsf_daten = $daten[$spalte["itsf"]]; - if (empty($itsf_daten)) - continue; - - if (!$ist_doppel && str_contains($itsf_daten, " - ")) { - if (count($spielerMeldungen) != 0) - continue; - $ist_doppel = true; - } - - $nachname1 = ""; - $vorname1 = ""; - $spielernr1 = ""; - $verein1 = ""; - if ($ist_doppel) { - $nachname2 = ""; - $vorname2 = ""; - $spielernr2 = ""; - $verein2 = ""; - } - - $itsf_felder = explode(" ", $itsf_daten); - $position = 0; // 0: Platz, 1: Vorname1, 2: Nachname1, 3: Land1, 4: Vorname2, 5: Nachname2, 6: Land2 - foreach ($itsf_felder as $feld) { - if ($position == 0) { - if (!is_numeric($feld)) - break; - $platz = $feld; - $position++; - continue; - } - if ($position == 1) { - if (strtoupper($feld) != $feld) { - if (!empty($vorname1)) - $vorname1 .= " "; - $vorname1 .= $feld; - continue; - } - $position = 2; - } - if ($position == 2) { - if ($feld != "-" && !str_starts_with($feld, "(")) { - if (!empty($nachname1)) - $nachname1 .= " "; - $nachname1 .= substr($feld, 0, 1) . strtolower(substr($feld, 1)); - continue; - } - $position = 3; - } - if ($position == 3) { - if ($feld == "-") - continue; - if (str_starts_with($feld, "(") && substr($feld, 4) == ")") { - $verein1 = substr($feld, 1, 3); - continue; - } - if (!$ist_doppel) - break; - $position = 4; - } - if ($position == 4) { - if (strtoupper($feld) != $feld) { - if (!empty($vorname2)) - $vorname2 .= " "; - $vorname2 .= $feld; - continue; - } - $position = 5; - } - if ($position == 5) { - if ($feld != "-" && !str_starts_with($feld, "(")) { - if (ctype_digit($feld)) - continue; - if (!empty($nachname2)) - $nachname2 .= " "; - $nachname2 .= substr($feld, 0, 1) . strtolower(substr($feld, 1)); - continue; - } - $position = 6; - } - if ($position == 6) { - if ($feld == "-") - continue; - if (str_starts_with($feld, "(") && substr($feld, 4) == ")") { - $verein2 = substr($feld, 1, 3); - continue; - } - break; - } - } - - if (empty($platz) || empty($vorname1) || empty($nachname1)) - continue; - if ($ist_doppel && (empty($vorname2) || empty($nachname2))) - continue; - } else { - $platz = str_replace(".", "", $daten[$spalte["platz"]]); - if (empty($platz)) - continue; - - if (!isset($daten[$spalte["vorname1"]]) || !isset($daten[$spalte["nachname1"]])) - continue; - - $nachname1 = $daten[$spalte["nachname1"]]; - $vorname1 = $daten[$spalte["vorname1"]]; - $spielernr1 = isset($spalte["spielernr1"]) && isset($daten[$spalte["spielernr1"]]) ? $daten[$spalte["spielernr1"]] : ""; - $verein1 = isset($spalte["verein1"]) && isset($daten[$spalte["verein1"]]) ? $daten[$spalte["verein1"]] : ""; - - if ($vorname1 == "" || $nachname1 == "") - continue; - - if ($ist_doppel) { - if (!isset($daten[$spalte["vorname2"]]) || !isset($daten[$spalte["nachname2"]])) - continue; - - $nachname2 = $daten[$spalte["nachname2"]]; - $vorname2 = $daten[$spalte["vorname2"]]; - $spielernr2 = isset($spalte["spielernr2"]) && isset($daten[$spalte["spielernr2"]]) ? $daten[$spalte["spielernr2"]] : ""; - $verein2 = isset($spalte["verein2"]) && isset($daten[$spalte["verein2"]]) ? $daten[$spalte["verein2"]] : ""; - - if ($vorname2 == "" || $nachname2 == "") - continue; - } - } - - if ($ist_doppel) { - // Spielernummern und -namen ermitteln - $spieler2_id = null; - if (!empty($spielernr2)) { - $query = "SELECT spieler_id" - . "\n FROM #__sportsmanager_spieler" - . "\n WHERE " . $wertungsbedingung . "STRCMP(spielernr, '" . $db->escape($spielernr2) . "') = 0" - . "\n LIMIT 2"; - $s = loadObjectList($db, $query); - if (count($s) == 1) - $spieler2_id = $s[0]->spieler_id; - } - if ($spieler2_id == null) { - $query = "SELECT spieler_id" - . "\n FROM #__sportsmanager_spieler" - . "\n WHERE " . $wertungsbedingung . "STRCMP(vorname, '" . $db->escape($vorname2) . "') = 0" - . "\n AND STRCMP(nachname, '" . $db->escape($nachname2) . "') = 0" - . "\n LIMIT 2"; - $s = loadObjectList($db, $query); - if (count($s) == 1) - $spieler2_id = $s[0]->spieler_id; - } - } - - // Spielernummern und -namen ermitteln - $spieler1_id = null; - if (!empty($spielernr1)) { - $query = "SELECT spieler_id" - . "\n FROM #__sportsmanager_spieler" - . "\n WHERE " . $wertungsbedingung . "STRCMP(spielernr, '" . $db->escape($spielernr1) . "') = 0" - . "\n LIMIT 2"; - $s = loadObjectList($db, $query); - if (count($s) == 1) - $spieler1_id = $s[0]->spieler_id; - } - if ($spieler1_id == null) { - $query = "SELECT spieler_id" - . "\n FROM #__sportsmanager_spieler" - . "\n WHERE " . $wertungsbedingung . "STRCMP(vorname, '" . $db->escape($vorname1) . "') = 0" - . "\n AND STRCMP(nachname, '" . $db->escape($nachname1) . "') = 0" - . "\n LIMIT 2"; - $s = loadObjectList($db, $query); - if (count($s) == 1) - $spieler1_id = $s[0]->spieler_id; - } - - $spielerMeldung = array(); - $spielerMeldung["p"] = $platz; - if ($spieler1_id == null) { - $spielerMeldung["1n"] = $nachname1; - $spielerMeldung["1v"] = $vorname1; - $spielerMeldung["1vn"] = $verein1; - } else - $spielerMeldung["1"] = $spieler1_id; - - if ($ist_doppel) { - if ($spieler2_id == null) { - $spielerMeldung["2n"] = $nachname2; - $spielerMeldung["2v"] = $vorname2; - $spielerMeldung["2vn"] = $verein2; - } else - $spielerMeldung["2"] = $spieler2_id; - } - $spielerMeldungen[] = $spielerMeldung; - } - fclose($handle); - - foreach ($spielerMeldungen as $spielerMeldung) { - $platz = $spielerMeldung["p"]; - $spieler1_id = $spielerMeldung["1"] ?? null; - if ($ist_doppel) - $spieler2_id = $spielerMeldung["2"] ?? null; - - $query = "INSERT INTO #__sportsmanager_turniermeldung (turnierdisziplin_id, rundenstufe, platz)" - . "\n VALUES ('$id', '0', '$platz');"; - $db->setQuery($query); - if (!$db->execute()) { - die($db->stderr(true)); - } - $meldungId = $db->insertid(); - - $query = "INSERT INTO #__sportsmanager_turniermeldung_spieler (turniermeldung_id, spieler_id)" - . "\n VALUES ('$meldungId', " . ($spieler1_id != null ? "'$spieler1_id'" : "NULL") . ");"; - $db->setQuery($query); - if (!$db->execute()) { - die($db->stderr(true)); - } - $meldungSpielerId = $db->insertid(); - - if ($spieler1_id == null) { - $query = "INSERT INTO #__sportsmanager_turniermeldung_spieler_name" - . "\n (turniermeldung_spieler_id, nachname, vorname, vereinsname)" - . "\n VALUES ('$meldungSpielerId', '" . $db->escape($spielerMeldung["1n"]) . "', '" - . $db->escape($spielerMeldung["1v"]) . "', '" . $db->escape($spielerMeldung["1vn"]) . "');"; - $db->setQuery($query); - if (!$db->execute()) { - die($db->stderr(true)); - } - } - - if ($ist_doppel) { - $query = "INSERT INTO #__sportsmanager_turniermeldung_spieler (turniermeldung_id, spieler_id)" - . "\n VALUES ('$meldungId', " . ($spieler2_id != null ? "'$spieler2_id'" : "NULL") . ");"; - $db->setQuery($query); - if (!$db->execute()) { - die($db->stderr(true)); - } - $meldungSpielerId = $db->insertid(); - - if ($spieler2_id == null) { - $query = "INSERT INTO #__sportsmanager_turniermeldung_spieler_name" - . "\n (turniermeldung_spieler_id, nachname, vorname, vereinsname)" - . "\n VALUES ('$meldungSpielerId', '" . $db->escape($spielerMeldung["2n"]) . "', '" - . $db->escape($spielerMeldung["2v"]) . "', '" . $db->escape($spielerMeldung["2vn"]) . "');"; - $db->setQuery($query); - if (!$db->execute()) { - die($db->stderr(true)); - } - } - } - } - } else { // XML-Import - fclose($handle); - - // Daten zu Vorrunde laden - $disziplinVorrunde = null; - if (!empty($_FILES["daten_vorrunde"]["tmp_name"])) { - if (is_uploaded_file($_FILES["daten_vorrunde"]["tmp_name"])) { - $disziplinVorrunde = new DOMDocument(); - $disziplinVorrunde->recover = true; - $success = $disziplinVorrunde->load($_FILES["daten_vorrunde"]["tmp_name"]); - if (!$success) { - redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id, "Datei ist keine XML-Datei."); - } - } - } - - // Daten zu Zusatzrunde laden - $disziplinZusatzrunde = null; - if (!empty($_FILES["daten_zusatzrunde"]["tmp_name"])) { - if (is_uploaded_file($_FILES["daten_zusatzrunde"]["tmp_name"])) { - $disziplinZusatzrunde = new DOMDocument(); - $disziplinZusatzrunde->recover = true; - $success = $disziplinZusatzrunde->load($_FILES["daten_zusatzrunde"]["tmp_name"]); - if (!$success) { - redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id, "Datei ist keine XML-Datei."); - } - } - } - - // Daten zu 2. Zusatzrunde laden - $disziplinZusatzrunde2 = null; - if (!empty($_FILES["daten_zusatzrunde2"]["tmp_name"])) { - if (is_uploaded_file($_FILES["daten_zusatzrunde2"]["tmp_name"])) { - $disziplinZusatzrunde2 = new DOMDocument(); - $disziplinZusatzrunde2->recover = true; - $success = $disziplinZusatzrunde2->load($_FILES["daten_zusatzrunde2"]["tmp_name"]); - if (!$success) { - redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id, "Datei ist keine XML-Datei."); - } - } - } - - // Daten zu Hauptrunde laden - $disziplin = new DOMDocument(); - $disziplin->recover = true; - $success = $disziplin->load($_FILES["daten"]["tmp_name"]); - if (!$success) { - redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id, "Datei ist keine XML-Datei."); - } - - if ($disziplinVorrunde != null) { - $matchingNodes = $disziplinVorrunde->getElementsByTagName("disziplin"); - if ($matchingNodes == null) { - redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id, "Datei enthaelt keine Disziplin."); - } - if ($matchingNodes->length != 1) { - redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id, "Datei darf nur eine Disziplin enthalten."); - } - $turniersystemVorrunde = $matchingNodes->item(0)->getAttribute("system"); - } - - if ($disziplinZusatzrunde != null) { - $matchingNodes = $disziplinZusatzrunde->getElementsByTagName("disziplin"); - if ($matchingNodes == null) { - redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id, "Datei enthaelt keine Disziplin."); - } - if ($matchingNodes->length != 1) { - redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id, "Datei darf nur eine Disziplin enthalten."); - } - $turniersystemZusatzrunde = $matchingNodes->item(0)->getAttribute("system"); - } - - if ($disziplinZusatzrunde2 != null) { - $matchingNodes = $disziplinZusatzrunde2->getElementsByTagName("disziplin"); - if ($matchingNodes == null) { - redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id, "Datei enthaelt keine Disziplin."); - } - if ($matchingNodes->length != 1) { - redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id, "Datei darf nur eine Disziplin enthalten."); - } - $turniersystemZusatzrunde2 = $matchingNodes->item(0)->getAttribute("system"); - } - - $matchingNodes = $disziplin->getElementsByTagName("disziplin"); - if ($matchingNodes == null) { - redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id, "Die uebergebene Datei enthaelt keine Disziplin."); - } - if ($matchingNodes->length != 1) { - redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id, "Die uebergebene Datei darf nur eine Disziplin enthalten."); - } - $turniersystemHauptrunde = $matchingNodes->item(0)->getAttribute("system"); - - // Spieler-Ids über Spielerliste ermitteln - $meldungenSpieler = array(); - $meldungenPlatz = array(); - foreach (array(0, 1, 2, 3, 10) as $rundenstufe) - $meldungenPlatz[$rundenstufe] = array(); - $meldungenIds = array(); - $matchingNodes = $disziplin->getElementsByTagName("meldung"); - if ($matchingNodes != null) { - $totalHauptrunde = $matchingNodes->length; - for ($i = 0; $i < $totalHauptrunde; $i++) { - $currNode = $matchingNodes->item($i); - $meldungName = $currNode->getAttribute("name"); - $meldungPlatz = (int)$currNode->getAttribute("platz"); - $meldungenSpieler[$meldungName] = array(); - $meldungenPlatz[0][$meldungName] = $meldungPlatz; - $meldungenPlatz[1][$meldungName] = $meldungPlatz; - - $spielerNodes = $currNode->getElementsByTagName("spieler"); - foreach ($spielerNodes as $spieler) { - $spielernr = $spieler->getAttribute("spielerpass"); - - if (!empty($spielernr)) { - // Spielernummern und -namen ermitteln - $query = "SELECT spieler_id" - . "\n FROM #__sportsmanager_spieler" - . "\n WHERE " . $wertungsbedingung . "STRCMP(spielernr, '$spielernr') = 0" - . "\n LIMIT 2"; - $s = loadObjectList($db, $query); - $gefunden = count($s) == 1 ? $s[0]->spieler_id : null; - } else - $gefunden = null; - - $spielerNachname = null; - $spielerVorname = null; - $spielerVerein = null; - if (!$gefunden) { - $spielerVorname = $spieler->hasAttribute("vorname") ? trim($spieler->getAttribute("vorname")) : ""; - $spielerNachname = trim($spieler->getAttribute("nachname")); - $spielerVerein = trim($spieler->getAttribute("verein")); - - $query = "SELECT spieler_id" - . "\n FROM #__sportsmanager_spieler" - . "\n WHERE " . $wertungsbedingung . "STRCMP(nachname, '" . $db->escape($spielerNachname) . "') = 0" - . "\n AND STRCMP(vorname, '" . $db->escape($spielerVorname) . "') = 0" - . "\n LIMIT 2"; - $s = loadObjectList($db, $query); - $gefunden = count($s) == 1 ? $s[0]->spieler_id : null; - } - - if ($gefunden != -1 && $gefunden != null) - $meldungenSpieler[$meldungName][] = $gefunden; - else - $meldungenSpieler[$meldungName][] = array($spielerNachname, $spielerVorname, $spielerVerein); - } - } - - $neueMeldungenZusatzrunde = 0; - if ($disziplinZusatzrunde != null) { - $matchingNodesZusatzrunde = $disziplinZusatzrunde->getElementsByTagName("meldung"); - if ($matchingNodesZusatzrunde != null) { - $totalZusatzrunde = $matchingNodesZusatzrunde->length; - for ($i = 0; $i < $totalZusatzrunde; $i++) { - $currNode = $matchingNodesZusatzrunde->item($i); - $meldungName = $currNode->getAttribute("name"); - $meldungPlatz = (int)$currNode->getAttribute("platz"); - $meldungenPlatz[2][$meldungName] = $meldungPlatz; - if (!isset($meldungenSpieler[$meldungName])) { - $neueMeldungenZusatzrunde++; - $meldungenSpieler[$meldungName] = array(); - $meldungenPlatz[0][$meldungName] = $totalHauptrunde + $meldungPlatz; - - $spielerNodes = $currNode->getElementsByTagName("spieler"); - foreach ($spielerNodes as $spieler) { - $spielernr = $spieler->getAttribute("spielerpass"); - - if (!empty($spielernr)) { - // Spielernummern und -namen ermitteln - $query = "SELECT spieler_id" - . "\n FROM #__sportsmanager_spieler" - . "\n WHERE " . $wertungsbedingung . "STRCMP(spielernr, '" . $db->escape($spielernr) . "') = 0" - . "\n LIMIT 2"; - $s = loadObjectList($db, $query); - $gefunden = count($s) == 1 ? $s[0]->spieler_id : null; - } else - $gefunden = null; - - $spielerVorname = null; - $spielerNachname = null; - $spielerVerein = null; - if (!$gefunden) { - $spielerVorname = $spieler->hasAttribute("vorname") ? trim($spieler->getAttribute("vorname")) : ""; - $spielerNachname = trim($spieler->getAttribute("nachname")); - $spielerVerein = trim($spieler->getAttribute("verein")); - - $query = "SELECT spieler_id" - . "\n FROM #__sportsmanager_spieler" - . "\n WHERE " . $wertungsbedingung . "STRCMP(nachname, '" . $db->escape($spielerNachname) . "') = 0" - . "\n AND STRCMP(vorname, '" . $db->escape($spielerVorname) . "') = 0" - . "\n LIMIT 2"; - $s = loadObjectList($db, $query); - $gefunden = count($s) == 1 ? $s[0]->spieler_id : null; - } - - if ($gefunden != -1 && $gefunden != null) - $meldungenSpieler[$meldungName][] = $gefunden; - else - $meldungenSpieler[$meldungName][] = array($spielerNachname, $spielerVorname, $spielerVerein); - } - } - } - } - } - - $neueMeldungenZusatzrunde2 = 0; - if ($disziplinZusatzrunde2 != null) { - $matchingNodesZusatzrunde2 = $disziplinZusatzrunde2->getElementsByTagName("meldung"); - if ($matchingNodesZusatzrunde2 != null) { - $totalZusatzrunde2 = $matchingNodesZusatzrunde2->length; - for ($i = 0; $i < $totalZusatzrunde2; $i++) { - $currNode = $matchingNodesZusatzrunde2->item($i); - $meldungName = $currNode->getAttribute("name"); - $meldungPlatz = (int)$currNode->getAttribute("platz"); - $meldungenPlatz[3][$meldungName] = $meldungPlatz; - if (!isset($meldungenSpieler[$meldungName])) { - $neueMeldungenZusatzrunde2++; - $meldungenSpieler[$meldungName] = array(); - $meldungenPlatz[0][$meldungName] = $totalHauptrunde + $neueMeldungenZusatzrunde + $meldungPlatz; - - $spielerNodes = $currNode->getElementsByTagName("spieler"); - foreach ($spielerNodes as $spieler) { - $spielernr = $spieler->getAttribute("spielerpass"); - - if (!empty($spielernr)) { - // Spielernummern und -namen ermitteln - $query = "SELECT spieler_id" - . "\n FROM #__sportsmanager_spieler" - . "\n WHERE " . $wertungsbedingung . "STRCMP(spielernr, '" . $db->escape($spielernr) . "') = 0" - . "\n LIMIT 2"; - $s = loadObjectList($db, $query); - $gefunden = count($s) == 1 ? $s[0]->spieler_id : null; - } else - $gefunden = null; - - $spielerVorname = null; - $spielerNachname = null; - $spielerVerein = null; - if (!$gefunden) { - $spielerVorname = $spieler->hasAttribute("vorname") ? trim($spieler->getAttribute("vorname")) : ""; - $spielerNachname = trim($spieler->getAttribute("nachname")); - $spielerVerein = trim($spieler->getAttribute("verein")); - - $query = "SELECT spieler_id" - . "\n FROM #__sportsmanager_spieler" - . "\n WHERE " . $wertungsbedingung . "STRCMP(nachname, '" . $db->escape($spielerNachname) . "') = 0" - . "\n AND STRCMP(vorname, '" . $db->escape($spielerVorname) . "') = 0" - . "\n LIMIT 2"; - $s = loadObjectList($db, $query); - $gefunden = count($s) == 1 ? $s[0]->spieler_id : null; - } - - if ($gefunden != -1 && $gefunden != null) - $meldungenSpieler[$meldungName][] = $gefunden; - else - $meldungenSpieler[$meldungName][] = array($spielerNachname, $spielerVorname, $spielerVerein); - } - } - } - } - } - - $disziplinVorrundeErsterPlatz = 0; - if ($disziplinVorrunde != null) { - $matchingNodesVorrunde = $disziplinVorrunde->getElementsByTagName("meldung"); - if ($matchingNodesVorrunde != null) { - $totalVorrunde = $matchingNodesVorrunde->length; - for ($i = 0; $i < $totalVorrunde; $i++) { - $currNode = $matchingNodesVorrunde->item($i); - $meldungName = $currNode->getAttribute("name"); - if (isset($meldungenSpieler[$meldungName])) - continue; - $meldungPlatz = $currNode->getAttribute("platz"); - if ($meldungPlatz < $disziplinVorrundeErsterPlatz || $disziplinVorrundeErsterPlatz == 0) - $disziplinVorrundeErsterPlatz = $meldungPlatz; - } - - for ($i = 0; $i < $totalVorrunde; $i++) { - $currNode = $matchingNodesVorrunde->item($i); - $meldungName = $currNode->getAttribute("name"); - $meldungPlatz = (int)$currNode->getAttribute("platz"); - $meldungenPlatz[10][$meldungName] = $meldungPlatz; - if ($disziplinVorrundeErsterPlatz == 0) - $disziplinVorrundeErsterPlatz = $meldungPlatz; - if (!isset($meldungenSpieler[$meldungName])) { - $meldungenSpieler[$meldungName] = array(); - $meldungenPlatz[0][$meldungName] = $totalHauptrunde + $neueMeldungenZusatzrunde + $neueMeldungenZusatzrunde2 + $meldungPlatz - $disziplinVorrundeErsterPlatz + 1; - - $spielerNodes = $currNode->getElementsByTagName("spieler"); - foreach ($spielerNodes as $spieler) { - $spielernr = $spieler->getAttribute("spielerpass"); - - if (!empty($spielernr)) { - // Spielernummern und -namen ermitteln - $query = "SELECT spieler_id" - . "\n FROM #__sportsmanager_spieler" - . "\n WHERE " . $wertungsbedingung . "STRCMP(spielernr, '" . $db->escape($spielernr) . "') = 0" - . "\n LIMIT 2"; - $s = loadObjectList($db, $query); - $gefunden = count($s) == 1 ? $s[0]->spieler_id : null; - } else - $gefunden = null; - - $spielerVorname = null; - $spielerNachname = null; - $spielerVerein = null; - if (!$gefunden) { - $spielerVorname = $spieler->hasAttribute("vorname") ? trim($spieler->getAttribute("vorname")) : ""; - $spielerNachname = trim($spieler->getAttribute("nachname")); - $spielerVerein = trim($spieler->getAttribute("verein")); - - $query = "SELECT spieler_id" - . "\n FROM #__sportsmanager_spieler" - . "\n WHERE " . $wertungsbedingung . "STRCMP(nachname, '" . $db->escape($spielerNachname) . "') = 0" - . "\n AND STRCMP(vorname, '" . $db->escape($spielerVorname) . "') = 0" - . "\n LIMIT 2"; - $s = loadObjectList($db, $query); - $gefunden = count($s) == 1 ? $s[0]->spieler_id : null; - } - - if ($gefunden != -1 && $gefunden != null) - $meldungenSpieler[$meldungName][] = $gefunden; - else - $meldungenSpieler[$meldungName][] = array($spielerNachname, $spielerVorname, $spielerVerein); - } - } - } - } - } - - // Meldungen speichern - foreach ($meldungenSpieler as $meldungName => $spielerIds) { - $meldungPlatz = $meldungenPlatz[0][$meldungName]; - $query = "INSERT INTO #__sportsmanager_turniermeldung (turnierdisziplin_id, rundenstufe, platz)" - . "\n VALUES ('$id', '0', '$meldungPlatz');"; - $db->setQuery($query); - if (!$db->execute()) { - die($db->stderr(true)); - } - $meldungId = $db->insertid(); - $meldungenIds[$meldungName] = $meldungId; - - foreach ($spielerIds as $spielerId) { - $query = "INSERT INTO #__sportsmanager_turniermeldung_spieler (turniermeldung_id, spieler_id)" - . "\n VALUES ('$meldungId', " . (!is_array($spielerId) ? "'$spielerId'" : "NULL") . ");"; - $db->setQuery($query); - if (!$db->execute()) { - die($db->stderr(true)); - } - $meldungSpielerId = $db->insertid(); - - if (is_array($spielerId)) { - $query = "INSERT INTO #__sportsmanager_turniermeldung_spieler_name" - . "\n (turniermeldung_spieler_id, nachname, vorname, vereinsname)" - . "\n VALUES ('$meldungSpielerId', '" . $db->escape($spielerId[0]) . "', '" - . $db->escape($spielerId[1]) . "', '" . $db->escape($spielerId[2]) . "');"; - $db->setQuery($query); - if (!$db->execute()) { - die($db->stderr(true)); - } - } - } - - $rundenstufen = array(0); - $platzierungen = array(0 => $meldungenPlatz[0][$meldungName]); - foreach (array(1, 2, 3, 10) as $rundenstufe) { - if (isset($meldungenPlatz[$rundenstufe][$meldungName])) { - $rundenstufen[] = $rundenstufe; - $platzierungen[$rundenstufe] = $meldungenPlatz[$rundenstufe][$meldungName]; - } - } - meldungsgruppe_verknuepfen($meldungId, $rundenstufen, $platzierungen); - } - } - - // Spiele speichern - $totalVorrunde = 0; - if ($disziplinVorrunde != null && $turniersystemVorrunde != "Monster-DYP") { - $matchingNodes = $disziplinVorrunde->getElementsByTagName("runde"); - if ($matchingNodes != null) { - $totalVorrunde = $matchingNodes->length; - $ergebnis_saetze_maximum = 0; - for ($i = 0; $i < $totalVorrunde; $i++) { - $currNode = $matchingNodes->item($i); - $rundenNr = $currNode->getAttribute("no"); - - $spielNodes = $currNode->getElementsByTagName("spiel"); - foreach ($spielNodes as $spiel) { - $heim = $spiel->getAttribute("heim"); - $gast = $spiel->getAttribute("gast"); - - $heimGewonneneSaetze = 0; - $gastGewonneneSaetze = 0; - $ergebnis_detailliert = ""; - $ergebnis_saetze = 0; - $satzNodes = $spiel->getElementsByTagName("satz"); - foreach ($satzNodes as $satz) { - $heimPunkte = $satz->getAttribute("heim"); - $gastPunkte = $satz->getAttribute("gast"); - if ($heimPunkte > $gastPunkte) - $heimGewonneneSaetze++; - else if ($heimPunkte < $gastPunkte) - $gastGewonneneSaetze++; - if ($heimPunkte > 1 || $gastPunkte > 1) { - if (!empty($ergebnis_detailliert)) - $ergebnis_detailliert .= " "; - $ergebnis_detailliert .= $heimPunkte . ":" . $gastPunkte; - $ergebnis_saetze++; - } - } - if ($ergebnis_saetze > $ergebnis_saetze_maximum) - $ergebnis_saetze_maximum = $ergebnis_saetze; - - $heimId = $meldungenIds[$heim]; - $gastId = $meldungenIds[$gast]; - $spielNr = $i + 1; - if ($heimGewonneneSaetze > $gastGewonneneSaetze) - $ergebnis = 1; - else if ($heimGewonneneSaetze < $gastGewonneneSaetze) - $ergebnis = 2; - else - $ergebnis = 0; - - $query = "INSERT INTO #__sportsmanager_turnierspiel" - . "\n (turnierdisziplin_id, spiel_nummer, runde, rundenstufe, heim_meldung_id, gast_meldung_id," - . "\n ergebnis, ergebnis_detailliert)" - . "\n VALUES ('$id', '$spielNr', '$rundenNr', '10', '$heimId', '$gastId'," - . "\n '$ergebnis', " . (empty($ergebnis_detailliert) ? "null" : "'$ergebnis_detailliert'") . ");"; - $db->setQuery($query); - if (!$db->execute()) { - die($db->stderr(true)); - } - - } - } - if ($ergebnis_saetze_maximum > 0) { - $query = "INSERT #__sportsmanager_turnier_rundenstufe" - . "\n SET bezeichnung = ''," - . "\n typ = null," - . "\n runden = null," - . "\n tabellenwertung = null," - . "\n saetze = " . "'$ergebnis_saetze_maximum'" . "," - . "\n tore = null," - . "\n spielfelder = null," - . "\n turnierdisziplin_id = '$id'," - . "\n rundenstufe = '10'"; - $db->setQuery($query); - if (!$db->execute()) { - die($db->stderr(true)); - } - } - } - } - - // Spiele speichern - if ($disziplinZusatzrunde != null && $turniersystemZusatzrunde != "Monster-DYP") { - $matchingNodes = $disziplinZusatzrunde->getElementsByTagName("runde"); - if ($matchingNodes != null) { - $totalZusatzrunde = $matchingNodes->length; - $ergebnis_saetze_maximum = 0; - for ($i = 0; $i < $totalZusatzrunde; $i++) { - $currNode = $matchingNodes->item($i); - $rundenNr = $currNode->getAttribute("no"); - - $spielNodes = $currNode->getElementsByTagName("spiel"); - foreach ($spielNodes as $spiel) { - $heim = $spiel->getAttribute("heim"); - $gast = $spiel->getAttribute("gast"); - - $heimGewonneneSaetze = 0; - $gastGewonneneSaetze = 0; - $ergebnis_detailliert = ""; - $ergebnis_saetze = 0; - $satzNodes = $spiel->getElementsByTagName("satz"); - foreach ($satzNodes as $satz) { - $heimPunkte = $satz->getAttribute("heim"); - $gastPunkte = $satz->getAttribute("gast"); - if ($heimPunkte > $gastPunkte) - $heimGewonneneSaetze++; - else if ($heimPunkte < $gastPunkte) - $gastGewonneneSaetze++; - if ($heimPunkte > 1 || $gastPunkte > 1) { - if (!empty($ergebnis_detailliert)) - $ergebnis_detailliert .= " "; - $ergebnis_detailliert .= $heimPunkte . ":" . $gastPunkte; - $ergebnis_saetze++; - } - } - if ($ergebnis_saetze > $ergebnis_saetze_maximum) - $ergebnis_saetze_maximum = $ergebnis_saetze; - - $heimId = $meldungenIds[$heim]; - $gastId = $meldungenIds[$gast]; - $spielNr = $i + 1; - if ($heimGewonneneSaetze > $gastGewonneneSaetze) - $ergebnis = 1; - else if ($heimGewonneneSaetze < $gastGewonneneSaetze) - $ergebnis = 2; - else - $ergebnis = 0; - - $query = "INSERT INTO #__sportsmanager_turnierspiel" - . "\n (turnierdisziplin_id, spiel_nummer, runde, rundenstufe, heim_meldung_id, gast_meldung_id," - . "\n ergebnis, ergebnis_detailliert)" - . "\n VALUES ('$id', '$spielNr', '$rundenNr', '2', '$heimId', '$gastId'," - . "\n '$ergebnis', " . (empty($ergebnis_detailliert) ? "null" : "'$ergebnis_detailliert'") . ");"; - $db->setQuery($query); - if (!$db->execute()) { - die($db->stderr(true)); - } - } - } - if ($ergebnis_saetze_maximum > 0) { - $query = "INSERT #__sportsmanager_turnier_rundenstufe" - . "\n SET bezeichnung = ''," - . "\n typ = null," - . "\n runden = null," - . "\n tabellenwertung = null," - . "\n saetze = " . "'$ergebnis_saetze_maximum'" . "," - . "\n tore = null," - . "\n spielfelder = null," - . "\n turnierdisziplin_id = '$id'," - . "\n rundenstufe = '2'"; - $db->setQuery($query); - if (!$db->execute()) { - die($db->stderr(true)); - } - } - } - } - - // Spiele speichern - if ($disziplinZusatzrunde2 != null && $turniersystemZusatzrunde2 != "Monster-DYP") { - $matchingNodes = $disziplinZusatzrunde2->getElementsByTagName("runde"); - if ($matchingNodes != null) { - $totalZusatzrunde2 = $matchingNodes->length; - $ergebnis_saetze_maximum = 0; - for ($i = 0; $i < $totalZusatzrunde2; $i++) { - $currNode = $matchingNodes->item($i); - $rundenNr = $currNode->getAttribute("no"); - - $spielNodes = $currNode->getElementsByTagName("spiel"); - foreach ($spielNodes as $spiel) { - $heim = $spiel->getAttribute("heim"); - $gast = $spiel->getAttribute("gast"); - - $heimGewonneneSaetze = 0; - $gastGewonneneSaetze = 0; - $ergebnis_detailliert = ""; - $ergebnis_saetze = 0; - $satzNodes = $spiel->getElementsByTagName("satz"); - foreach ($satzNodes as $satz) { - $heimPunkte = $satz->getAttribute("heim"); - $gastPunkte = $satz->getAttribute("gast"); - if ($heimPunkte > $gastPunkte) - $heimGewonneneSaetze++; - else if ($heimPunkte < $gastPunkte) - $gastGewonneneSaetze++; - if ($heimPunkte > 1 || $gastPunkte > 1) { - if (!empty($ergebnis_detailliert)) - $ergebnis_detailliert .= " "; - $ergebnis_detailliert .= $heimPunkte . ":" . $gastPunkte; - $ergebnis_saetze++; - } - } - if ($ergebnis_saetze > $ergebnis_saetze_maximum) - $ergebnis_saetze_maximum = $ergebnis_saetze; - - $heimId = $meldungenIds[$heim]; - $gastId = $meldungenIds[$gast]; - $spielNr = $i + 1; - if ($heimGewonneneSaetze > $gastGewonneneSaetze) - $ergebnis = 1; - else if ($heimGewonneneSaetze < $gastGewonneneSaetze) - $ergebnis = 2; - else - $ergebnis = 0; - - $query = "INSERT INTO #__sportsmanager_turnierspiel" - . "\n (turnierdisziplin_id, spiel_nummer, runde, rundenstufe, heim_meldung_id, gast_meldung_id," - . "\n ergebnis, ergebnis_detailliert)" - . "\n VALUES ('$id', '$spielNr', '$rundenNr', '3', '$heimId', '$gastId'," - . "\n '$ergebnis', " . (empty($ergebnis_detailliert) ? "null" : "'$ergebnis_detailliert'") . ");"; - $db->setQuery($query); - if (!$db->execute()) { - die($db->stderr(true)); - } - } - } - if ($ergebnis_saetze_maximum > 0) { - $query = "INSERT #__sportsmanager_turnier_rundenstufe" - . "\n SET bezeichnung = ''," - . "\n typ = null," - . "\n runden = null," - . "\n tabellenwertung = null," - . "\n saetze = " . "'$ergebnis_saetze_maximum'" . "," - . "\n tore = null," - . "\n spielfelder = null," - . "\n turnierdisziplin_id = '$id'," - . "\n rundenstufe = '3'"; - $db->setQuery($query); - if (!$db->execute()) { - die($db->stderr(true)); - } - } - } - } - - if ($turniersystemHauptrunde != "Monster-DYP") { - $matchingNodes = $disziplin->getElementsByTagName("runde"); - if ($matchingNodes != null) { - $total = $matchingNodes->length; - $ergebnis_saetze_maximum = 0; - for ($i = 0; $i < $total; $i++) { - $currNode = $matchingNodes->item($i); - $rundenNr = $currNode->getAttribute("no"); - - $spielNodes = $currNode->getElementsByTagName("spiel"); - foreach ($spielNodes as $spiel) { - $heim = $spiel->getAttribute("heim"); - $gast = $spiel->getAttribute("gast"); - - $heimGewonneneSaetze = 0; - $gastGewonneneSaetze = 0; - $ergebnis_detailliert = ""; - $ergebnis_saetze = 0; - $satzNodes = $spiel->getElementsByTagName("satz"); - foreach ($satzNodes as $satz) { - $heimPunkte = $satz->getAttribute("heim"); - $gastPunkte = $satz->getAttribute("gast"); - if ($heimPunkte > $gastPunkte) - $heimGewonneneSaetze++; - else if ($heimPunkte < $gastPunkte) - $gastGewonneneSaetze++; - if ($heimPunkte > 1 || $gastPunkte > 1) { - if (!empty($ergebnis_detailliert)) - $ergebnis_detailliert .= " "; - $ergebnis_detailliert .= $heimPunkte . ":" . $gastPunkte; - $ergebnis_saetze++; - } - } - if ($ergebnis_saetze > $ergebnis_saetze_maximum) - $ergebnis_saetze_maximum = $ergebnis_saetze; - - $heimId = $meldungenIds[$heim]; - $gastId = $meldungenIds[$gast]; - $spielNr = $totalVorrunde + $i + 1; - if ($heimGewonneneSaetze > $gastGewonneneSaetze) - $ergebnis = 1; - else if ($heimGewonneneSaetze < $gastGewonneneSaetze) - $ergebnis = 2; - else - $ergebnis = 0; - - $query = "INSERT INTO #__sportsmanager_turnierspiel" - . "\n (turnierdisziplin_id, spiel_nummer, runde, rundenstufe, heim_meldung_id, gast_meldung_id," - . "\n ergebnis, ergebnis_detailliert)" - . "\n VALUES ('$id', '$spielNr', '$rundenNr', '1', '$heimId', '$gastId'," - . "\n '$ergebnis', " . (empty($ergebnis_detailliert) ? "null" : "'$ergebnis_detailliert'") . ");"; - $db->setQuery($query); - if (!$db->execute()) { - die($db->stderr(true)); - } - } + $Meldung = "Alle Dateien wurden erfolgreich importiert!!!"; + + $filename = $_FILES['daten']['name']; + $ext = strtolower(pathinfo($filename, PATHINFO_EXTENSION)); + + if (!in_array(strtolower($ext), ["csv","json","xml"], true)) + redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id, "Die übergebene Datei muss vom Typ csv, xml oder json sein."); + + if (!is_uploaded_file($_FILES["daten"]["tmp_name"])) + redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id, "Es wurde keine Datei hochgeladen."); + + adminLoeschenTurnierdisziplinMeldungenSpiele($id); + + // CSV-Import + if ($ext === "csv"){ + + $handle = fopen($_FILES["daten"]["tmp_name"], "r"); + if (!$handle) { + redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id, "Die übergebene Datei kann nicht geöffnet werden."); + } + if (feof($handle)) { + redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id, "Die übergebene Datei ist leer."); + } + $titelzeile = chop(utf8_encode(fgets($handle, 4096))); + if (str_starts_with($titelzeile, "sep=")) { + $titelzeile = chop(utf8_encode(fgets($handle, 4096))); + } + if (str_contains($titelzeile, "\t")) + $trennzeichen = "\t"; + else if (str_contains($titelzeile, ";")) + $trennzeichen = ";"; + else + $trennzeichen = ","; + + $spalte = array(); + $titel = explode($trennzeichen, strtolower($titelzeile)); + + foreach ($titel as $index => $bezeichnung) { + if ($bezeichnung == "platz" || $bezeichnung == "platzierung") + $spalte["platz"] = $index; + else if ($bezeichnung == "itsf") + $spalte["itsf"] = $index; + else if ($bezeichnung == "name" || $bezeichnung == "nachname" || $bezeichnung == "name1" || $bezeichnung == "nachname1" || $bezeichnung == "nachname 1") + $spalte["nachname1"] = $index; + else if ($bezeichnung == "vorname" || $bezeichnung == "vorname1" || $bezeichnung == "vorname 1") + $spalte["vorname1"] = $index; + else if ($bezeichnung == "spielernr" || $bezeichnung == "spielernr1" || $bezeichnung == "spielernr. 1") + $spalte["spielernr1"] = $index; + else if ($bezeichnung == "verein" || $bezeichnung == "verein1" || $bezeichnung == "vereinsname" || $bezeichnung == "vereinsname1" || $bezeichnung == "vereinsname 1") + $spalte["verein1"] = $index; + else if ($bezeichnung == "name2" || $bezeichnung == "nachname2" || $bezeichnung == "nachname 2") + $spalte["nachname2"] = $index; + else if ($bezeichnung == "vorname2" || $bezeichnung == "vorname 2") + $spalte["vorname2"] = $index; + else if ($bezeichnung == "spielernr2" || $bezeichnung == "spielernr. 2") + $spalte["spielernr2"] = $index; + else if ($bezeichnung == "verein2" || $bezeichnung == "vereinsname2" || $bezeichnung == "vereinsname 2") + $spalte["verein1"] = $index; + } + + if ((isset($spalte["platz"]) && isset($spalte["vorname1"]) && isset($spalte["nachname1"])) || isset($spalte["itsf"])) + $spielerMeldungen = array(); + else + redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id, "Die übergebene csv-Datei hat keine gueltige Daten."); + + $ist_doppel = false; + if (isset($spalte["vorname2"]) && isset($spalte["nachname2"])) + $ist_doppel = true; + + while (!feof($handle)) { + $buffer = chop(utf8_encode(fgets($handle, 4096))); + $daten = explode($trennzeichen, $buffer); + + foreach ($daten as $index => $wert) { + $wert = trim($wert); + $len = strlen($wert); + if ($len < 2 || $wert[0] != '"' || $wert[$len - 1] != '"') + $daten[$index] = $wert; + else + $daten[$index] = str_replace('""', '"', substr($wert, 1, $len - 2)); + } + $vorname2 = null; + $nachname2 = null; + $verein2 = null; + if (isset($spalte["itsf"])) { + if (!isset($daten[$spalte["itsf"]])) + continue; + $itsf_daten = $daten[$spalte["itsf"]]; + if (empty($itsf_daten)) + continue; + + if (!$ist_doppel && str_contains($itsf_daten, " - ")) { + if (count($spielerMeldungen) != 0) + continue; + $ist_doppel = true; + } + + $nachname1 = ""; + $vorname1 = ""; + $spielernr1 = ""; + $verein1 = ""; + if ($ist_doppel) { + $nachname2 = ""; + $vorname2 = ""; + $spielernr2 = ""; + $verein2 = ""; + } + + $itsf_felder = explode(" ", $itsf_daten); + $position = 0; // 0: Platz, 1: Vorname1, 2: Nachname1, 3: Land1, 4: Vorname2, 5: Nachname2, 6: Land2 + foreach ($itsf_felder as $feld) { + if ($position == 0) { + if (!is_numeric($feld)) + break; + $platz = $feld; + $position++; + continue; + } + if ($position == 1) { + if (strtoupper($feld) != $feld) { + if (!empty($vorname1)) + $vorname1 .= " "; + $vorname1 .= $feld; + continue; } - if ($ergebnis_saetze_maximum > 0) { - $query = "INSERT #__sportsmanager_turnier_rundenstufe" - . "\n SET bezeichnung = ''," - . "\n typ = null," - . "\n runden = null," - . "\n tabellenwertung = null," - . "\n saetze = " . "'$ergebnis_saetze_maximum'" . "," - . "\n tore = null," - . "\n spielfelder = null," - . "\n turnierdisziplin_id = '$id'," - . "\n rundenstufe = '1'"; - $db->setQuery($query); - if (!$db->execute()) { - die($db->stderr(true)); + $position = 2; + } + if ($position == 2) { + if ($feld != "-" && !str_starts_with($feld, "(")) { + if (!empty($nachname1)) + $nachname1 .= " "; + $nachname1 .= substr($feld, 0, 1) . strtolower(substr($feld, 1)); + continue; + } + $position = 3; + } + if ($position == 3) { + if ($feld == "-") + continue; + if (str_starts_with($feld, "(") && substr($feld, 4) == ")") { + $verein1 = substr($feld, 1, 3); + continue; + } + if (!$ist_doppel) + break; + $position = 4; + } + if ($position == 4) { + if (strtoupper($feld) != $feld) { + if (!empty($vorname2)) + $vorname2 .= " "; + $vorname2 .= $feld; + continue; + } + $position = 5; + } + if ($position == 5) { + if ($feld != "-" && !str_starts_with($feld, "(")) { + if (ctype_digit($feld)) + continue; + if (!empty($nachname2)) + $nachname2 .= " "; + $nachname2 .= substr($feld, 0, 1) . strtolower(substr($feld, 1)); + continue; + } + $position = 6; + } + if ($position == 6) { + if ($feld == "-") + continue; + if (str_starts_with($feld, "(") && substr($feld, 4) == ")") { + $verein2 = substr($feld, 1, 3); + continue; + } + break; + } + } + + if (empty($platz) || empty($vorname1) || empty($nachname1)) + continue; + if ($ist_doppel && (empty($vorname2) || empty($nachname2))) + continue; + } else { + $platz = str_replace(".", "", $daten[$spalte["platz"]]); + if (empty($platz)) + continue; + + if (!isset($daten[$spalte["vorname1"]]) || !isset($daten[$spalte["nachname1"]])) + continue; + + $nachname1 = $daten[$spalte["nachname1"]]; + $vorname1 = $daten[$spalte["vorname1"]]; + $spielernr1 = isset($spalte["spielernr1"]) && isset($daten[$spalte["spielernr1"]]) ? $daten[$spalte["spielernr1"]] : ""; + $verein1 = isset($spalte["verein1"]) && isset($daten[$spalte["verein1"]]) ? $daten[$spalte["verein1"]] : ""; + + if ($vorname1 == "" || $nachname1 == "") + continue; + + if ($ist_doppel) { + if (!isset($daten[$spalte["vorname2"]]) || !isset($daten[$spalte["nachname2"]])) + continue; + + $nachname2 = $daten[$spalte["nachname2"]]; + $vorname2 = $daten[$spalte["vorname2"]]; + $spielernr2 = isset($spalte["spielernr2"]) && isset($daten[$spalte["spielernr2"]]) ? $daten[$spalte["spielernr2"]] : ""; + $verein2 = isset($spalte["verein2"]) && isset($daten[$spalte["verein2"]]) ? $daten[$spalte["verein2"]] : ""; + + if ($vorname2 == "" || $nachname2 == "") + continue; + } + } + + if ($ist_doppel) { + // Spielernummern und -namen ermitteln + $spieler2_id = null; + if (!empty($spielernr2)) { + $query = "SELECT spieler_id" + . "\n FROM #__sportsmanager_spieler" + . "\n WHERE " . $wertungsbedingung . "STRCMP(spielernr, '" . $db->escape($spielernr2) . "') = 0" + . "\n LIMIT 2"; + $s = loadObjectList($db, $query); + if (count($s) == 1) + $spieler2_id = $s[0]->spieler_id; + } + if ($spieler2_id == null) { + $query = "SELECT spieler_id" + . "\n FROM #__sportsmanager_spieler" + . "\n WHERE " . $wertungsbedingung . "STRCMP(vorname, '" . $db->escape($vorname2) . "') = 0" + . "\n AND STRCMP(nachname, '" . $db->escape($nachname2) . "') = 0" + . "\n LIMIT 2"; + $s = loadObjectList($db, $query); + if (count($s) == 1) + $spieler2_id = $s[0]->spieler_id; + } + } + + // Spielernummern und -namen ermitteln + $spieler1_id = null; + if (!empty($spielernr1)) { + $query = "SELECT spieler_id" + . "\n FROM #__sportsmanager_spieler" + . "\n WHERE " . $wertungsbedingung . "STRCMP(spielernr, '" . $db->escape($spielernr1) . "') = 0" + . "\n LIMIT 2"; + $s = loadObjectList($db, $query); + if (count($s) == 1) + $spieler1_id = $s[0]->spieler_id; + } + if ($spieler1_id == null) { + $query = "SELECT spieler_id" + . "\n FROM #__sportsmanager_spieler" + . "\n WHERE " . $wertungsbedingung . "STRCMP(vorname, '" . $db->escape($vorname1) . "') = 0" + . "\n AND STRCMP(nachname, '" . $db->escape($nachname1) . "') = 0" + . "\n LIMIT 2"; + $s = loadObjectList($db, $query); + if (count($s) == 1) + $spieler1_id = $s[0]->spieler_id; + } + + $spielerMeldung = array(); + $spielerMeldung["p"] = $platz; + if ($spieler1_id == null) { + $spielerMeldung["1n"] = $nachname1; + $spielerMeldung["1v"] = $vorname1; + $spielerMeldung["1vn"] = $verein1; + } else + $spielerMeldung["1"] = $spieler1_id; + + if ($ist_doppel) { + if ($spieler2_id == null) { + $spielerMeldung["2n"] = $nachname2; + $spielerMeldung["2v"] = $vorname2; + $spielerMeldung["2vn"] = $verein2; + } else + $spielerMeldung["2"] = $spieler2_id; + } + $spielerMeldungen[] = $spielerMeldung; + } + fclose($handle); + } + + if (in_array(strtolower($ext), ["csv","json"], true) && !empty($spielerMeldungen)){ + + foreach ($spielerMeldungen as $spielerMeldung) { + $platz = $spielerMeldung["p"]; + $spieler1_id = $spielerMeldung["1"] ?? null; + if ($ist_doppel) + $spieler2_id = $spielerMeldung["2"] ?? null; + + $query = "INSERT INTO #__sportsmanager_turniermeldung (turnierdisziplin_id, rundenstufe, platz)" + . "\n VALUES ('$id', '0', '$platz');"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $meldungId = $db->insertid(); + + $query = "INSERT INTO #__sportsmanager_turniermeldung_spieler (turniermeldung_id, spieler_id)" + . "\n VALUES ('$meldungId', " . ($spieler1_id != null ? "'$spieler1_id'" : "NULL") . ");"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $meldungSpielerId = $db->insertid(); + + if ($spieler1_id == null) { + $query = "INSERT INTO #__sportsmanager_turniermeldung_spieler_name" + . "\n (turniermeldung_spieler_id, nachname, vorname, vereinsname)" + . "\n VALUES ('$meldungSpielerId', '" . $db->escape($spielerMeldung["1n"]) . "', '" + . $db->escape($spielerMeldung["1v"]) . "', '" . $db->escape($spielerMeldung["1vn"]) . "');"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + + if ($ist_doppel) { + $query = "INSERT INTO #__sportsmanager_turniermeldung_spieler (turniermeldung_id, spieler_id)" + . "\n VALUES ('$meldungId', " . ($spieler2_id != null ? "'$spieler2_id'" : "NULL") . ");"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $meldungSpielerId = $db->insertid(); + + if ($spieler2_id == null) { + $query = "INSERT INTO #__sportsmanager_turniermeldung_spieler_name" + . "\n (turniermeldung_spieler_id, nachname, vorname, vereinsname)" + . "\n VALUES ('$meldungSpielerId', '" . $db->escape($spielerMeldung["2n"]) . "', '" + . $db->escape($spielerMeldung["2v"]) . "', '" . $db->escape($spielerMeldung["2vn"]) . "');"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + } + } + } + + if ($ext == "xml"){ // XML-Import + + // Daten zu Vorrunde laden + $disziplinVorrunde = null; + if (!empty($_FILES["daten_vorrunde"]["tmp_name"])) { + if (is_uploaded_file($_FILES["daten_vorrunde"]["tmp_name"])) { + $disziplinVorrunde = new DOMDocument(); + $disziplinVorrunde->recover = true; + $success = $disziplinVorrunde->load($_FILES["daten_vorrunde"]["tmp_name"]); + if (!$success) { + redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id, "Datei ist keine XML-Datei."); + } + } + } + + // Daten zu Zusatzrunde laden + $disziplinZusatzrunde = null; + if (!empty($_FILES["daten_zusatzrunde"]["tmp_name"])) { + if (is_uploaded_file($_FILES["daten_zusatzrunde"]["tmp_name"])) { + $disziplinZusatzrunde = new DOMDocument(); + $disziplinZusatzrunde->recover = true; + $success = $disziplinZusatzrunde->load($_FILES["daten_zusatzrunde"]["tmp_name"]); + if (!$success) { + redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id, "Datei ist keine XML-Datei."); + } + } + } + + // Daten zu 2. Zusatzrunde laden + $disziplinZusatzrunde2 = null; + if (!empty($_FILES["daten_zusatzrunde2"]["tmp_name"])) { + if (is_uploaded_file($_FILES["daten_zusatzrunde2"]["tmp_name"])) { + $disziplinZusatzrunde2 = new DOMDocument(); + $disziplinZusatzrunde2->recover = true; + $success = $disziplinZusatzrunde2->load($_FILES["daten_zusatzrunde2"]["tmp_name"]); + if (!$success) { + redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id, "Datei ist keine XML-Datei."); + } + } + } + + // Daten zu Hauptrunde laden + $disziplin = new DOMDocument(); + $disziplin->recover = true; + $success = $disziplin->load($_FILES["daten"]["tmp_name"]); + if (!$success) { + redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id, "Datei ist keine XML-Datei."); + } + + if ($disziplinVorrunde != null) { + $matchingNodes = $disziplinVorrunde->getElementsByTagName("disziplin"); + if ($matchingNodes == null) { + redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id, "Datei enthaelt keine Disziplin."); + } + if ($matchingNodes->length != 1) { + redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id, "Datei darf nur eine Disziplin enthalten."); + } + $turniersystemVorrunde = $matchingNodes->item(0)->getAttribute("system"); + } + + if ($disziplinZusatzrunde != null) { + $matchingNodes = $disziplinZusatzrunde->getElementsByTagName("disziplin"); + if ($matchingNodes == null) { + redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id, "Datei enthaelt keine Disziplin."); + } + if ($matchingNodes->length != 1) { + redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id, "Datei darf nur eine Disziplin enthalten."); + } + $turniersystemZusatzrunde = $matchingNodes->item(0)->getAttribute("system"); + } + + if ($disziplinZusatzrunde2 != null) { + $matchingNodes = $disziplinZusatzrunde2->getElementsByTagName("disziplin"); + if ($matchingNodes == null) { + redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id, "Datei enthaelt keine Disziplin."); + } + if ($matchingNodes->length != 1) { + redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id, "Datei darf nur eine Disziplin enthalten."); + } + $turniersystemZusatzrunde2 = $matchingNodes->item(0)->getAttribute("system"); + } + + $matchingNodes = $disziplin->getElementsByTagName("disziplin"); + if ($matchingNodes == null) { + redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id, "Die uebergebene Datei enthaelt keine Disziplin."); + } + if ($matchingNodes->length != 1) { + redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id, "Die uebergebene Datei darf nur eine Disziplin enthalten."); + } + $turniersystemHauptrunde = $matchingNodes->item(0)->getAttribute("system"); + + // Spieler-Ids über Spielerliste ermitteln + $meldungenSpieler = array(); + $meldungenPlatz = array(); + foreach (array(0, 1, 2, 3, 10) as $rundenstufe) + $meldungenPlatz[$rundenstufe] = array(); + $meldungenIds = array(); + $matchingNodes = $disziplin->getElementsByTagName("meldung"); + if ($matchingNodes != null) { + $totalHauptrunde = $matchingNodes->length; + for ($i = 0; $i < $totalHauptrunde; $i++) { + $currNode = $matchingNodes->item($i); + $meldungName = $currNode->getAttribute("name"); + $meldungPlatz = (int)$currNode->getAttribute("platz"); + $meldungenSpieler[$meldungName] = array(); + $meldungenPlatz[0][$meldungName] = $meldungPlatz; + $meldungenPlatz[1][$meldungName] = $meldungPlatz; + + $spielerNodes = $currNode->getElementsByTagName("spieler"); + foreach ($spielerNodes as $spieler) { + $spielernr = $spieler->getAttribute("spielerpass"); + + if (!empty($spielernr)) { + // Spielernummern und -namen ermitteln + $query = "SELECT spieler_id" + . "\n FROM #__sportsmanager_spieler" + . "\n WHERE " . $wertungsbedingung . "STRCMP(spielernr, '$spielernr') = 0" + . "\n LIMIT 2"; + $s = loadObjectList($db, $query); + $gefunden = count($s) == 1 ? $s[0]->spieler_id : null; + } else + $gefunden = null; + + $spielerNachname = null; + $spielerVorname = null; + $spielerVerein = null; + if (!$gefunden) { + $spielerVorname = $spieler->hasAttribute("vorname") ? trim($spieler->getAttribute("vorname")) : ""; + $spielerNachname = trim($spieler->getAttribute("nachname")); + $spielerVerein = trim($spieler->getAttribute("verein")); + + $query = "SELECT spieler_id" + . "\n FROM #__sportsmanager_spieler" + . "\n WHERE " . $wertungsbedingung . "STRCMP(nachname, '" . $db->escape($spielerNachname) . "') = 0" + . "\n AND STRCMP(vorname, '" . $db->escape($spielerVorname) . "') = 0" + . "\n LIMIT 2"; + $s = loadObjectList($db, $query); + $gefunden = count($s) == 1 ? $s[0]->spieler_id : null; + } + + if ($gefunden != -1 && $gefunden != null) + $meldungenSpieler[$meldungName][] = $gefunden; + else + $meldungenSpieler[$meldungName][] = array($spielerNachname, $spielerVorname, $spielerVerein); + } + } + + $neueMeldungenZusatzrunde = 0; + if ($disziplinZusatzrunde != null) { + $matchingNodesZusatzrunde = $disziplinZusatzrunde->getElementsByTagName("meldung"); + if ($matchingNodesZusatzrunde != null) { + $totalZusatzrunde = $matchingNodesZusatzrunde->length; + for ($i = 0; $i < $totalZusatzrunde; $i++) { + $currNode = $matchingNodesZusatzrunde->item($i); + $meldungName = $currNode->getAttribute("name"); + $meldungPlatz = (int)$currNode->getAttribute("platz"); + $meldungenPlatz[2][$meldungName] = $meldungPlatz; + if (!isset($meldungenSpieler[$meldungName])) { + $neueMeldungenZusatzrunde++; + $meldungenSpieler[$meldungName] = array(); + $meldungenPlatz[0][$meldungName] = $totalHauptrunde + $meldungPlatz; + + $spielerNodes = $currNode->getElementsByTagName("spieler"); + foreach ($spielerNodes as $spieler) { + $spielernr = $spieler->getAttribute("spielerpass"); + + if (!empty($spielernr)) { + // Spielernummern und -namen ermitteln + $query = "SELECT spieler_id" + . "\n FROM #__sportsmanager_spieler" + . "\n WHERE " . $wertungsbedingung . "STRCMP(spielernr, '" . $db->escape($spielernr) . "') = 0" + . "\n LIMIT 2"; + $s = loadObjectList($db, $query); + $gefunden = count($s) == 1 ? $s[0]->spieler_id : null; + } else + $gefunden = null; + + $spielerVorname = null; + $spielerNachname = null; + $spielerVerein = null; + if (!$gefunden) { + $spielerVorname = $spieler->hasAttribute("vorname") ? trim($spieler->getAttribute("vorname")) : ""; + $spielerNachname = trim($spieler->getAttribute("nachname")); + $spielerVerein = trim($spieler->getAttribute("verein")); + + $query = "SELECT spieler_id" + . "\n FROM #__sportsmanager_spieler" + . "\n WHERE " . $wertungsbedingung . "STRCMP(nachname, '" . $db->escape($spielerNachname) . "') = 0" + . "\n AND STRCMP(vorname, '" . $db->escape($spielerVorname) . "') = 0" + . "\n LIMIT 2"; + $s = loadObjectList($db, $query); + $gefunden = count($s) == 1 ? $s[0]->spieler_id : null; + } + + if ($gefunden != -1 && $gefunden != null) + $meldungenSpieler[$meldungName][] = $gefunden; + else + $meldungenSpieler[$meldungName][] = array($spielerNachname, $spielerVorname, $spielerVerein); } } } } - } - } - } + } + + $neueMeldungenZusatzrunde2 = 0; + if ($disziplinZusatzrunde2 != null) { + $matchingNodesZusatzrunde2 = $disziplinZusatzrunde2->getElementsByTagName("meldung"); + if ($matchingNodesZusatzrunde2 != null) { + $totalZusatzrunde2 = $matchingNodesZusatzrunde2->length; + for ($i = 0; $i < $totalZusatzrunde2; $i++) { + $currNode = $matchingNodesZusatzrunde2->item($i); + $meldungName = $currNode->getAttribute("name"); + $meldungPlatz = (int)$currNode->getAttribute("platz"); + $meldungenPlatz[3][$meldungName] = $meldungPlatz; + if (!isset($meldungenSpieler[$meldungName])) { + $neueMeldungenZusatzrunde2++; + $meldungenSpieler[$meldungName] = array(); + $meldungenPlatz[0][$meldungName] = $totalHauptrunde + $neueMeldungenZusatzrunde + $meldungPlatz; + + $spielerNodes = $currNode->getElementsByTagName("spieler"); + foreach ($spielerNodes as $spieler) { + $spielernr = $spieler->getAttribute("spielerpass"); + + if (!empty($spielernr)) { + // Spielernummern und -namen ermitteln + $query = "SELECT spieler_id" + . "\n FROM #__sportsmanager_spieler" + . "\n WHERE " . $wertungsbedingung . "STRCMP(spielernr, '" . $db->escape($spielernr) . "') = 0" + . "\n LIMIT 2"; + $s = loadObjectList($db, $query); + $gefunden = count($s) == 1 ? $s[0]->spieler_id : null; + } else + $gefunden = null; + + $spielerVorname = null; + $spielerNachname = null; + $spielerVerein = null; + if (!$gefunden) { + $spielerVorname = $spieler->hasAttribute("vorname") ? trim($spieler->getAttribute("vorname")) : ""; + $spielerNachname = trim($spieler->getAttribute("nachname")); + $spielerVerein = trim($spieler->getAttribute("verein")); + + $query = "SELECT spieler_id" + . "\n FROM #__sportsmanager_spieler" + . "\n WHERE " . $wertungsbedingung . "STRCMP(nachname, '" . $db->escape($spielerNachname) . "') = 0" + . "\n AND STRCMP(vorname, '" . $db->escape($spielerVorname) . "') = 0" + . "\n LIMIT 2"; + $s = loadObjectList($db, $query); + $gefunden = count($s) == 1 ? $s[0]->spieler_id : null; + } + + if ($gefunden != -1 && $gefunden != null) + $meldungenSpieler[$meldungName][] = $gefunden; + else + $meldungenSpieler[$meldungName][] = array($spielerNachname, $spielerVorname, $spielerVerein); + } + } + } + } + } + + $disziplinVorrundeErsterPlatz = 0; + if ($disziplinVorrunde != null) { + $matchingNodesVorrunde = $disziplinVorrunde->getElementsByTagName("meldung"); + if ($matchingNodesVorrunde != null) { + $totalVorrunde = $matchingNodesVorrunde->length; + for ($i = 0; $i < $totalVorrunde; $i++) { + $currNode = $matchingNodesVorrunde->item($i); + $meldungName = $currNode->getAttribute("name"); + if (isset($meldungenSpieler[$meldungName])) + continue; + $meldungPlatz = $currNode->getAttribute("platz"); + if ($meldungPlatz < $disziplinVorrundeErsterPlatz || $disziplinVorrundeErsterPlatz == 0) + $disziplinVorrundeErsterPlatz = $meldungPlatz; + } + + for ($i = 0; $i < $totalVorrunde; $i++) { + $currNode = $matchingNodesVorrunde->item($i); + $meldungName = $currNode->getAttribute("name"); + $meldungPlatz = (int)$currNode->getAttribute("platz"); + $meldungenPlatz[10][$meldungName] = $meldungPlatz; + if ($disziplinVorrundeErsterPlatz == 0) + $disziplinVorrundeErsterPlatz = $meldungPlatz; + if (!isset($meldungenSpieler[$meldungName])) { + $meldungenSpieler[$meldungName] = array(); + $meldungenPlatz[0][$meldungName] = $totalHauptrunde + $neueMeldungenZusatzrunde + $neueMeldungenZusatzrunde2 + $meldungPlatz - $disziplinVorrundeErsterPlatz + 1; + + $spielerNodes = $currNode->getElementsByTagName("spieler"); + foreach ($spielerNodes as $spieler) { + $spielernr = $spieler->getAttribute("spielerpass"); + + if (!empty($spielernr)) { + // Spielernummern und -namen ermitteln + $query = "SELECT spieler_id" + . "\n FROM #__sportsmanager_spieler" + . "\n WHERE " . $wertungsbedingung . "STRCMP(spielernr, '" . $db->escape($spielernr) . "') = 0" + . "\n LIMIT 2"; + $s = loadObjectList($db, $query); + $gefunden = count($s) == 1 ? $s[0]->spieler_id : null; + } else + $gefunden = null; + + $spielerVorname = null; + $spielerNachname = null; + $spielerVerein = null; + if (!$gefunden) { + $spielerVorname = $spieler->hasAttribute("vorname") ? trim($spieler->getAttribute("vorname")) : ""; + $spielerNachname = trim($spieler->getAttribute("nachname")); + $spielerVerein = trim($spieler->getAttribute("verein")); + + $query = "SELECT spieler_id" + . "\n FROM #__sportsmanager_spieler" + . "\n WHERE " . $wertungsbedingung . "STRCMP(nachname, '" . $db->escape($spielerNachname) . "') = 0" + . "\n AND STRCMP(vorname, '" . $db->escape($spielerVorname) . "') = 0" + . "\n LIMIT 2"; + $s = loadObjectList($db, $query); + $gefunden = count($s) == 1 ? $s[0]->spieler_id : null; + } + + if ($gefunden != -1 && $gefunden != null) + $meldungenSpieler[$meldungName][] = $gefunden; + else + $meldungenSpieler[$meldungName][] = array($spielerNachname, $spielerVorname, $spielerVerein); + } + } + } + } + } + + // Meldungen speichern + foreach ($meldungenSpieler as $meldungName => $spielerIds) { + $meldungPlatz = $meldungenPlatz[0][$meldungName]; + $query = "INSERT INTO #__sportsmanager_turniermeldung (turnierdisziplin_id, rundenstufe, platz)" + . "\n VALUES ('$id', '0', '$meldungPlatz');"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $meldungId = $db->insertid(); + $meldungenIds[$meldungName] = $meldungId; + + foreach ($spielerIds as $spielerId) { + $query = "INSERT INTO #__sportsmanager_turniermeldung_spieler (turniermeldung_id, spieler_id)" + . "\n VALUES ('$meldungId', " . (!is_array($spielerId) ? "'$spielerId'" : "NULL") . ");"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + $meldungSpielerId = $db->insertid(); + + if (is_array($spielerId)) { + $query = "INSERT INTO #__sportsmanager_turniermeldung_spieler_name" + . "\n (turniermeldung_spieler_id, nachname, vorname, vereinsname)" + . "\n VALUES ('$meldungSpielerId', '" . $db->escape($spielerId[0]) . "', '" + . $db->escape($spielerId[1]) . "', '" . $db->escape($spielerId[2]) . "');"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + } + + $rundenstufen = array(0); + $platzierungen = array(0 => $meldungenPlatz[0][$meldungName]); + foreach (array(1, 2, 3, 10) as $rundenstufe) { + if (isset($meldungenPlatz[$rundenstufe][$meldungName])) { + $rundenstufen[] = $rundenstufe; + $platzierungen[$rundenstufe] = $meldungenPlatz[$rundenstufe][$meldungName]; + } + } + meldungsgruppe_verknuepfen($meldungId, $rundenstufen, $platzierungen); + } + } + + // Spiele speichern + $totalVorrunde = 0; + if ($disziplinVorrunde != null && $turniersystemVorrunde != "Monster-DYP") { + $matchingNodes = $disziplinVorrunde->getElementsByTagName("runde"); + if ($matchingNodes != null) { + $totalVorrunde = $matchingNodes->length; + $ergebnis_saetze_maximum = 0; + for ($i = 0; $i < $totalVorrunde; $i++) { + $currNode = $matchingNodes->item($i); + $rundenNr = $currNode->getAttribute("no"); + + $spielNodes = $currNode->getElementsByTagName("spiel"); + foreach ($spielNodes as $spiel) { + $heim = $spiel->getAttribute("heim"); + $gast = $spiel->getAttribute("gast"); + + $heimGewonneneSaetze = 0; + $gastGewonneneSaetze = 0; + $ergebnis_detailliert = ""; + $ergebnis_saetze = 0; + $satzNodes = $spiel->getElementsByTagName("satz"); + foreach ($satzNodes as $satz) { + $heimPunkte = $satz->getAttribute("heim"); + $gastPunkte = $satz->getAttribute("gast"); + if ($heimPunkte > $gastPunkte) + $heimGewonneneSaetze++; + else if ($heimPunkte < $gastPunkte) + $gastGewonneneSaetze++; + if ($heimPunkte > 1 || $gastPunkte > 1) { + if (!empty($ergebnis_detailliert)) + $ergebnis_detailliert .= " "; + $ergebnis_detailliert .= $heimPunkte . ":" . $gastPunkte; + $ergebnis_saetze++; + } + } + if ($ergebnis_saetze > $ergebnis_saetze_maximum) + $ergebnis_saetze_maximum = $ergebnis_saetze; + + $heimId = $meldungenIds[$heim]; + $gastId = $meldungenIds[$gast]; + $spielNr = $i + 1; + if ($heimGewonneneSaetze > $gastGewonneneSaetze) + $ergebnis = 1; + else if ($heimGewonneneSaetze < $gastGewonneneSaetze) + $ergebnis = 2; + else + $ergebnis = 0; + + $query = "INSERT INTO #__sportsmanager_turnierspiel" + . "\n (turnierdisziplin_id, spiel_nummer, runde, rundenstufe, heim_meldung_id, gast_meldung_id," + . "\n ergebnis, ergebnis_detailliert)" + . "\n VALUES ('$id', '$spielNr', '$rundenNr', '10', '$heimId', '$gastId'," + . "\n '$ergebnis', " . (empty($ergebnis_detailliert) ? "null" : "'$ergebnis_detailliert'") . ");"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + + } + } + if ($ergebnis_saetze_maximum > 0) { + $query = "INSERT #__sportsmanager_turnier_rundenstufe" + . "\n SET bezeichnung = ''," + . "\n typ = null," + . "\n runden = null," + . "\n tabellenwertung = null," + . "\n saetze = " . "'$ergebnis_saetze_maximum'" . "," + . "\n tore = null," + . "\n spielfelder = null," + . "\n turnierdisziplin_id = '$id'," + . "\n rundenstufe = '10'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + } + } + + // Spiele speichern + if ($disziplinZusatzrunde != null && $turniersystemZusatzrunde != "Monster-DYP") { + $matchingNodes = $disziplinZusatzrunde->getElementsByTagName("runde"); + if ($matchingNodes != null) { + $totalZusatzrunde = $matchingNodes->length; + $ergebnis_saetze_maximum = 0; + for ($i = 0; $i < $totalZusatzrunde; $i++) { + $currNode = $matchingNodes->item($i); + $rundenNr = $currNode->getAttribute("no"); + + $spielNodes = $currNode->getElementsByTagName("spiel"); + foreach ($spielNodes as $spiel) { + $heim = $spiel->getAttribute("heim"); + $gast = $spiel->getAttribute("gast"); + + $heimGewonneneSaetze = 0; + $gastGewonneneSaetze = 0; + $ergebnis_detailliert = ""; + $ergebnis_saetze = 0; + $satzNodes = $spiel->getElementsByTagName("satz"); + foreach ($satzNodes as $satz) { + $heimPunkte = $satz->getAttribute("heim"); + $gastPunkte = $satz->getAttribute("gast"); + if ($heimPunkte > $gastPunkte) + $heimGewonneneSaetze++; + else if ($heimPunkte < $gastPunkte) + $gastGewonneneSaetze++; + if ($heimPunkte > 1 || $gastPunkte > 1) { + if (!empty($ergebnis_detailliert)) + $ergebnis_detailliert .= " "; + $ergebnis_detailliert .= $heimPunkte . ":" . $gastPunkte; + $ergebnis_saetze++; + } + } + if ($ergebnis_saetze > $ergebnis_saetze_maximum) + $ergebnis_saetze_maximum = $ergebnis_saetze; + + $heimId = $meldungenIds[$heim]; + $gastId = $meldungenIds[$gast]; + $spielNr = $i + 1; + if ($heimGewonneneSaetze > $gastGewonneneSaetze) + $ergebnis = 1; + else if ($heimGewonneneSaetze < $gastGewonneneSaetze) + $ergebnis = 2; + else + $ergebnis = 0; + + $query = "INSERT INTO #__sportsmanager_turnierspiel" + . "\n (turnierdisziplin_id, spiel_nummer, runde, rundenstufe, heim_meldung_id, gast_meldung_id," + . "\n ergebnis, ergebnis_detailliert)" + . "\n VALUES ('$id', '$spielNr', '$rundenNr', '2', '$heimId', '$gastId'," + . "\n '$ergebnis', " . (empty($ergebnis_detailliert) ? "null" : "'$ergebnis_detailliert'") . ");"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + } + if ($ergebnis_saetze_maximum > 0) { + $query = "INSERT #__sportsmanager_turnier_rundenstufe" + . "\n SET bezeichnung = ''," + . "\n typ = null," + . "\n runden = null," + . "\n tabellenwertung = null," + . "\n saetze = " . "'$ergebnis_saetze_maximum'" . "," + . "\n tore = null," + . "\n spielfelder = null," + . "\n turnierdisziplin_id = '$id'," + . "\n rundenstufe = '2'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + } + } + + // Spiele speichern + if ($disziplinZusatzrunde2 != null && $turniersystemZusatzrunde2 != "Monster-DYP") { + $matchingNodes = $disziplinZusatzrunde2->getElementsByTagName("runde"); + if ($matchingNodes != null) { + $totalZusatzrunde2 = $matchingNodes->length; + $ergebnis_saetze_maximum = 0; + for ($i = 0; $i < $totalZusatzrunde2; $i++) { + $currNode = $matchingNodes->item($i); + $rundenNr = $currNode->getAttribute("no"); + + $spielNodes = $currNode->getElementsByTagName("spiel"); + foreach ($spielNodes as $spiel) { + $heim = $spiel->getAttribute("heim"); + $gast = $spiel->getAttribute("gast"); + + $heimGewonneneSaetze = 0; + $gastGewonneneSaetze = 0; + $ergebnis_detailliert = ""; + $ergebnis_saetze = 0; + $satzNodes = $spiel->getElementsByTagName("satz"); + foreach ($satzNodes as $satz) { + $heimPunkte = $satz->getAttribute("heim"); + $gastPunkte = $satz->getAttribute("gast"); + if ($heimPunkte > $gastPunkte) + $heimGewonneneSaetze++; + else if ($heimPunkte < $gastPunkte) + $gastGewonneneSaetze++; + if ($heimPunkte > 1 || $gastPunkte > 1) { + if (!empty($ergebnis_detailliert)) + $ergebnis_detailliert .= " "; + $ergebnis_detailliert .= $heimPunkte . ":" . $gastPunkte; + $ergebnis_saetze++; + } + } + if ($ergebnis_saetze > $ergebnis_saetze_maximum) + $ergebnis_saetze_maximum = $ergebnis_saetze; + + $heimId = $meldungenIds[$heim]; + $gastId = $meldungenIds[$gast]; + $spielNr = $i + 1; + if ($heimGewonneneSaetze > $gastGewonneneSaetze) + $ergebnis = 1; + else if ($heimGewonneneSaetze < $gastGewonneneSaetze) + $ergebnis = 2; + else + $ergebnis = 0; + + $query = "INSERT INTO #__sportsmanager_turnierspiel" + . "\n (turnierdisziplin_id, spiel_nummer, runde, rundenstufe, heim_meldung_id, gast_meldung_id," + . "\n ergebnis, ergebnis_detailliert)" + . "\n VALUES ('$id', '$spielNr', '$rundenNr', '3', '$heimId', '$gastId'," + . "\n '$ergebnis', " . (empty($ergebnis_detailliert) ? "null" : "'$ergebnis_detailliert'") . ");"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + } + if ($ergebnis_saetze_maximum > 0) { + $query = "INSERT #__sportsmanager_turnier_rundenstufe" + . "\n SET bezeichnung = ''," + . "\n typ = null," + . "\n runden = null," + . "\n tabellenwertung = null," + . "\n saetze = " . "'$ergebnis_saetze_maximum'" . "," + . "\n tore = null," + . "\n spielfelder = null," + . "\n turnierdisziplin_id = '$id'," + . "\n rundenstufe = '3'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + } + } + + if ($turniersystemHauptrunde != "Monster-DYP") { + $matchingNodes = $disziplin->getElementsByTagName("runde"); + if ($matchingNodes != null) { + $total = $matchingNodes->length; + $ergebnis_saetze_maximum = 0; + for ($i = 0; $i < $total; $i++) { + $currNode = $matchingNodes->item($i); + $rundenNr = $currNode->getAttribute("no"); + + $spielNodes = $currNode->getElementsByTagName("spiel"); + foreach ($spielNodes as $spiel) { + $heim = $spiel->getAttribute("heim"); + $gast = $spiel->getAttribute("gast"); + + $heimGewonneneSaetze = 0; + $gastGewonneneSaetze = 0; + $ergebnis_detailliert = ""; + $ergebnis_saetze = 0; + $satzNodes = $spiel->getElementsByTagName("satz"); + foreach ($satzNodes as $satz) { + $heimPunkte = $satz->getAttribute("heim"); + $gastPunkte = $satz->getAttribute("gast"); + if ($heimPunkte > $gastPunkte) + $heimGewonneneSaetze++; + else if ($heimPunkte < $gastPunkte) + $gastGewonneneSaetze++; + if ($heimPunkte > 1 || $gastPunkte > 1) { + if (!empty($ergebnis_detailliert)) + $ergebnis_detailliert .= " "; + $ergebnis_detailliert .= $heimPunkte . ":" . $gastPunkte; + $ergebnis_saetze++; + } + } + if ($ergebnis_saetze > $ergebnis_saetze_maximum) + $ergebnis_saetze_maximum = $ergebnis_saetze; + + $heimId = $meldungenIds[$heim]; + $gastId = $meldungenIds[$gast]; + $spielNr = $totalVorrunde + $i + 1; + if ($heimGewonneneSaetze > $gastGewonneneSaetze) + $ergebnis = 1; + else if ($heimGewonneneSaetze < $gastGewonneneSaetze) + $ergebnis = 2; + else + $ergebnis = 0; + + $query = "INSERT INTO #__sportsmanager_turnierspiel" + . "\n (turnierdisziplin_id, spiel_nummer, runde, rundenstufe, heim_meldung_id, gast_meldung_id," + . "\n ergebnis, ergebnis_detailliert)" + . "\n VALUES ('$id', '$spielNr', '$rundenNr', '1', '$heimId', '$gastId'," + . "\n '$ergebnis', " . (empty($ergebnis_detailliert) ? "null" : "'$ergebnis_detailliert'") . ");"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + } + if ($ergebnis_saetze_maximum > 0) { + $query = "INSERT #__sportsmanager_turnier_rundenstufe" + . "\n SET bezeichnung = ''," + . "\n typ = null," + . "\n runden = null," + . "\n tabellenwertung = null," + . "\n saetze = " . "'$ergebnis_saetze_maximum'" . "," + . "\n tore = null," + . "\n spielfelder = null," + . "\n turnierdisziplin_id = '$id'," + . "\n rundenstufe = '1'"; + $db->setQuery($query); + if (!$db->execute()) { + die($db->stderr(true)); + } + } + } + } + } + + foreach (array(1, 2, 3, 10) as $rundenstufe) { $query = "SELECT runde, COUNT(*) AS spiele" @@ -13554,7 +13583,7 @@ function adminImportTurnierdisziplinMeldungenSpieleForm(): void ranglisteAktualisieren(0, $id); einstufungAktualisieren(); - redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id); + redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id, $Meldung); } function adminEditTurnierdisziplinSpiel(): void diff --git a/src/structure/components/com_sportsmanager/views/sportsmanager/view_admin.php b/src/structure/components/com_sportsmanager/views/sportsmanager/view_admin.php index 0173690..514ecc8 100644 --- a/src/structure/components/com_sportsmanager/views/sportsmanager/view_admin.php +++ b/src/structure/components/com_sportsmanager/views/sportsmanager/view_admin.php @@ -13543,7 +13543,7 @@ class HTML_sportsmanager_admin : - + @@ -13551,7 +13551,7 @@ class HTML_sportsmanager_admin : - + @@ -13559,7 +13559,7 @@ class HTML_sportsmanager_admin : - + @@ -13567,7 +13567,7 @@ class HTML_sportsmanager_admin : - +