json Import implementiert. csv-Import um Lizenznummer erweitert.

This commit is contained in:
Jürgen Meyer
2026-01-13 19:42:08 +01:00
parent a2808b7db0
commit 379427d4c4
@@ -12545,6 +12545,8 @@ function adminImportTurnierdisziplinMeldungenSpieleForm(): void
$spalte["vorname1"] = $index; $spalte["vorname1"] = $index;
else if ($bezeichnung == "spielernr" || $bezeichnung == "spielernr1" || $bezeichnung == "spielernr. 1") else if ($bezeichnung == "spielernr" || $bezeichnung == "spielernr1" || $bezeichnung == "spielernr. 1")
$spalte["spielernr1"] = $index; $spalte["spielernr1"] = $index;
else if ($bezeichnung == "linzenznr" || $bezeichnung == "linzenznr1" || $bezeichnung == "license" || $bezeichnung == "license1")
$spalte["lizenznr1"] = $index;
else if ($bezeichnung == "verein" || $bezeichnung == "verein1" || $bezeichnung == "vereinsname" || $bezeichnung == "vereinsname1" || $bezeichnung == "vereinsname 1") else if ($bezeichnung == "verein" || $bezeichnung == "verein1" || $bezeichnung == "vereinsname" || $bezeichnung == "vereinsname1" || $bezeichnung == "vereinsname 1")
$spalte["verein1"] = $index; $spalte["verein1"] = $index;
else if ($bezeichnung == "name2" || $bezeichnung == "nachname2" || $bezeichnung == "nachname 2") else if ($bezeichnung == "name2" || $bezeichnung == "nachname2" || $bezeichnung == "nachname 2")
@@ -12553,6 +12555,8 @@ function adminImportTurnierdisziplinMeldungenSpieleForm(): void
$spalte["vorname2"] = $index; $spalte["vorname2"] = $index;
else if ($bezeichnung == "spielernr2" || $bezeichnung == "spielernr. 2") else if ($bezeichnung == "spielernr2" || $bezeichnung == "spielernr. 2")
$spalte["spielernr2"] = $index; $spalte["spielernr2"] = $index;
else if ($bezeichnung == "linzenznr2" || $bezeichnung == "license2")
$spalte["lizenznr2"] = $index;
else if ($bezeichnung == "verein2" || $bezeichnung == "vereinsname2" || $bezeichnung == "vereinsname 2") else if ($bezeichnung == "verein2" || $bezeichnung == "vereinsname2" || $bezeichnung == "vereinsname 2")
$spalte["verein1"] = $index; $spalte["verein1"] = $index;
} }
@@ -12597,11 +12601,13 @@ function adminImportTurnierdisziplinMeldungenSpieleForm(): void
$nachname1 = ""; $nachname1 = "";
$vorname1 = ""; $vorname1 = "";
$spielernr1 = ""; $spielernr1 = "";
$lizenznr1 = "";
$verein1 = ""; $verein1 = "";
if ($ist_doppel) { if ($ist_doppel) {
$nachname2 = ""; $nachname2 = "";
$vorname2 = ""; $vorname2 = "";
$spielernr2 = ""; $spielernr2 = "";
$lizenznr2 = "";
$verein2 = ""; $verein2 = "";
} }
@@ -12690,6 +12696,7 @@ function adminImportTurnierdisziplinMeldungenSpieleForm(): void
$nachname1 = $daten[$spalte["nachname1"]]; $nachname1 = $daten[$spalte["nachname1"]];
$vorname1 = $daten[$spalte["vorname1"]]; $vorname1 = $daten[$spalte["vorname1"]];
$spielernr1 = isset($spalte["spielernr1"]) && isset($daten[$spalte["spielernr1"]]) ? $daten[$spalte["spielernr1"]] : ""; $spielernr1 = isset($spalte["spielernr1"]) && isset($daten[$spalte["spielernr1"]]) ? $daten[$spalte["spielernr1"]] : "";
$lizenznr1 = isset($spalte["lizenznr1"]) && isset($daten[$spalte["lizenznr1"]]) ? $daten[$spalte["lizenznr1"]] : "";
$verein1 = isset($spalte["verein1"]) && isset($daten[$spalte["verein1"]]) ? $daten[$spalte["verein1"]] : ""; $verein1 = isset($spalte["verein1"]) && isset($daten[$spalte["verein1"]]) ? $daten[$spalte["verein1"]] : "";
if ($vorname1 == "" || $nachname1 == "") if ($vorname1 == "" || $nachname1 == "")
@@ -12702,6 +12709,7 @@ function adminImportTurnierdisziplinMeldungenSpieleForm(): void
$nachname2 = $daten[$spalte["nachname2"]]; $nachname2 = $daten[$spalte["nachname2"]];
$vorname2 = $daten[$spalte["vorname2"]]; $vorname2 = $daten[$spalte["vorname2"]];
$spielernr2 = isset($spalte["spielernr2"]) && isset($daten[$spalte["spielernr2"]]) ? $daten[$spalte["spielernr2"]] : ""; $spielernr2 = isset($spalte["spielernr2"]) && isset($daten[$spalte["spielernr2"]]) ? $daten[$spalte["spielernr2"]] : "";
$lizenznr2 = isset($spalte["lizenznr2"]) && isset($daten[$spalte["lizenznr2"]]) ? $daten[$spalte["lizenznr2"]] : "";
$verein2 = isset($spalte["verein2"]) && isset($daten[$spalte["verein2"]]) ? $daten[$spalte["verein2"]] : ""; $verein2 = isset($spalte["verein2"]) && isset($daten[$spalte["verein2"]]) ? $daten[$spalte["verein2"]] : "";
if ($vorname2 == "" || $nachname2 == "") if ($vorname2 == "" || $nachname2 == "")
@@ -12721,6 +12729,15 @@ function adminImportTurnierdisziplinMeldungenSpieleForm(): void
if (count($s) == 1) if (count($s) == 1)
$spieler2_id = $s[0]->spieler_id; $spieler2_id = $s[0]->spieler_id;
} }
if ($spieler2_id == null && !empty($lizenznr2)) {
$query = "SELECT spieler_id"
. "\n FROM #__sportsmanager_spieler"
. "\n WHERE " . $wertungsbedingung . "STRCMP(lizenznr, '" . $db->escape($lizenznr2) . "') = 0"
. "\n LIMIT 2";
$s = loadObjectList($db, $query);
if (count($s) == 1)
$spieler2_id = $s[0]->spieler_id;
}
if ($spieler2_id == null) { if ($spieler2_id == null) {
$query = "SELECT spieler_id" $query = "SELECT spieler_id"
. "\n FROM #__sportsmanager_spieler" . "\n FROM #__sportsmanager_spieler"
@@ -12744,6 +12761,15 @@ function adminImportTurnierdisziplinMeldungenSpieleForm(): void
if (count($s) == 1) if (count($s) == 1)
$spieler1_id = $s[0]->spieler_id; $spieler1_id = $s[0]->spieler_id;
} }
if ($spieler1_id == null && !empty($lizenznr1)) {
$query = "SELECT spieler_id"
. "\n FROM #__sportsmanager_spieler"
. "\n WHERE " . $wertungsbedingung . "STRCMP(lizenznr, '" . $db->escape($lizenznr1) . "') = 0"
. "\n LIMIT 2";
$s = loadObjectList($db, $query);
if (count($s) == 1)
$spieler1_id = $s[0]->spieler_id;
}
if ($spieler1_id == null) { if ($spieler1_id == null) {
$query = "SELECT spieler_id" $query = "SELECT spieler_id"
. "\n FROM #__sportsmanager_spieler" . "\n FROM #__sportsmanager_spieler"
@@ -12777,6 +12803,121 @@ function adminImportTurnierdisziplinMeldungenSpieleForm(): void
fclose($handle); fclose($handle);
} }
// json Datei von Coral (nur Endergebnis einer Disziplin)
if ($ext === "json"){
$FehlerJason = "";
$ist_doppel = false;
if ($_FILES['daten']['error'] !== UPLOAD_ERR_OK)
$FehlerJason = "Fehler beim Hochladen der json-Datei.";
$json = file_get_contents($_FILES['daten']['tmp_name']);
// JSON validieren
$data = json_decode($json, true);
if ($data === null) {
$FehlerJason = "Ungültige JSON-Datei!";
} elseif (!is_array($data)) {
$FehlerJason = "JSON hat nicht das erwartete Array-Format.";
} else {
// Struktur prüfen: jeder Eintrag sollte 'rank' und 'players' haben
$valid = true;
foreach ($data as $entry) {
if (!isset($entry['rank']) || !isset($entry['players']) || !is_array($entry['players'])) {
$valid = false;
break;
}
}
if (!$valid) {
$FehlerJason = "JSON-Format stimmt nicht: Jeder Eintrag muss 'rank' und 'players' als Array enthalten.";
} else {
$capitalizeName = function(string $name): string {
$parts = explode('-', $name);
$parts = array_map(function($part) {
return ucfirst(mb_strtolower($part, 'UTF-8'));
}, $parts);
return implode('-', $parts);
};
$splitName = function(string $fullName) use ($capitalizeName): array {
$parts = explode(' ', $fullName);
$lastNameParts = [];
$firstNameParts = [];
foreach ($parts as $part) {
if (mb_strtoupper($part, 'UTF-8') === $part) {
$lastNameParts[] = $capitalizeName($part);
} else {
$firstNameParts[] = $part;
}
}
return [
implode(' ', $lastNameParts),
implode(' ', $firstNameParts)
];
};
// maximale Spieleranzahl
$maxPlayers = 0;
foreach ($data as $entry) {
$count = count($entry['players'] ?? []);
if ($count > $maxPlayers) $maxPlayers = $count;
}
$spielerMeldungen = [];
foreach ($data as $entry) {
$row = ['p' => $entry['rank'] ?? null];
$i = 1;
foreach ($entry['players'] ?? [] as $player) {
if ($i > 1) $ist_doppel = true;
[$nachname, $vorname] = $splitName($player['name'] ?? "");
// Spielernummern und -namen ermitteln
$spieler_id = null;
if (!empty($player['license'])) {
$query = "SELECT spieler_id"
. "\n FROM #__sportsmanager_spieler"
. "\n WHERE " . $wertungsbedingung . "STRCMP(lizenznr, '" . $db->escape($player['license']) . "') = 0"
. "\n LIMIT 2";
$s = loadObjectList($db, $query);
if (count($s) == 1)
$spieler_id = $s[0]->spieler_id;
}
if ($spieler_id == null) {
$query = "SELECT spieler_id"
. "\n FROM #__sportsmanager_spieler"
. "\n WHERE " . $wertungsbedingung . "STRCMP(vorname, '" . $db->escape($vorname) . "') = 0"
. "\n AND STRCMP(nachname, '" . $db->escape($nachname) . "') = 0"
. "\n LIMIT 2";
$s = loadObjectList($db, $query);
if (count($s) == 1)
$spieler_id = $s[0]->spieler_id;
}
if (!empty($spieler_id)){
$row[$i] = $spieler_id;
} else {
$row[$i."n"] = $nachname;
$row[$i."v"] = $vorname;
$row[$i."vn"] = "";
}
$i++;
}
$spielerMeldungen[] = $row;
}
}
}
if ($FehlerJason != "")
redirectSportsManagerURL('&task=admin_turnierdisziplin_meldungen_spiele&turnierdisziplinid=' . $id, $FehlerJason);
}
if (in_array(strtolower($ext), ["csv","json"], true) && !empty($spielerMeldungen)){ if (in_array(strtolower($ext), ["csv","json"], true) && !empty($spielerMeldungen)){
foreach ($spielerMeldungen as $spielerMeldung) { foreach ($spielerMeldungen as $spielerMeldung) {