mirror of
https://github.com/Deutscher-Tischfussballbund/com_sportsmanager.git
synced 2026-06-10 14:37:52 +00:00
json Import implementiert. csv-Import um Lizenznummer erweitert.
This commit is contained in:
@@ -12545,6 +12545,8 @@ function adminImportTurnierdisziplinMeldungenSpieleForm(): void
|
||||
$spalte["vorname1"] = $index;
|
||||
else if ($bezeichnung == "spielernr" || $bezeichnung == "spielernr1" || $bezeichnung == "spielernr. 1")
|
||||
$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")
|
||||
$spalte["verein1"] = $index;
|
||||
else if ($bezeichnung == "name2" || $bezeichnung == "nachname2" || $bezeichnung == "nachname 2")
|
||||
@@ -12553,6 +12555,8 @@ function adminImportTurnierdisziplinMeldungenSpieleForm(): void
|
||||
$spalte["vorname2"] = $index;
|
||||
else if ($bezeichnung == "spielernr2" || $bezeichnung == "spielernr. 2")
|
||||
$spalte["spielernr2"] = $index;
|
||||
else if ($bezeichnung == "linzenznr2" || $bezeichnung == "license2")
|
||||
$spalte["lizenznr2"] = $index;
|
||||
else if ($bezeichnung == "verein2" || $bezeichnung == "vereinsname2" || $bezeichnung == "vereinsname 2")
|
||||
$spalte["verein1"] = $index;
|
||||
}
|
||||
@@ -12597,11 +12601,13 @@ function adminImportTurnierdisziplinMeldungenSpieleForm(): void
|
||||
$nachname1 = "";
|
||||
$vorname1 = "";
|
||||
$spielernr1 = "";
|
||||
$lizenznr1 = "";
|
||||
$verein1 = "";
|
||||
if ($ist_doppel) {
|
||||
$nachname2 = "";
|
||||
$vorname2 = "";
|
||||
$spielernr2 = "";
|
||||
$lizenznr2 = "";
|
||||
$verein2 = "";
|
||||
}
|
||||
|
||||
@@ -12690,6 +12696,7 @@ function adminImportTurnierdisziplinMeldungenSpieleForm(): void
|
||||
$nachname1 = $daten[$spalte["nachname1"]];
|
||||
$vorname1 = $daten[$spalte["vorname1"]];
|
||||
$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"]] : "";
|
||||
|
||||
if ($vorname1 == "" || $nachname1 == "")
|
||||
@@ -12702,6 +12709,7 @@ function adminImportTurnierdisziplinMeldungenSpieleForm(): void
|
||||
$nachname2 = $daten[$spalte["nachname2"]];
|
||||
$vorname2 = $daten[$spalte["vorname2"]];
|
||||
$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"]] : "";
|
||||
|
||||
if ($vorname2 == "" || $nachname2 == "")
|
||||
@@ -12721,6 +12729,15 @@ function adminImportTurnierdisziplinMeldungenSpieleForm(): void
|
||||
if (count($s) == 1)
|
||||
$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) {
|
||||
$query = "SELECT spieler_id"
|
||||
. "\n FROM #__sportsmanager_spieler"
|
||||
@@ -12744,6 +12761,15 @@ function adminImportTurnierdisziplinMeldungenSpieleForm(): void
|
||||
if (count($s) == 1)
|
||||
$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) {
|
||||
$query = "SELECT spieler_id"
|
||||
. "\n FROM #__sportsmanager_spieler"
|
||||
@@ -12777,6 +12803,121 @@ function adminImportTurnierdisziplinMeldungenSpieleForm(): void
|
||||
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)){
|
||||
|
||||
foreach ($spielerMeldungen as $spielerMeldung) {
|
||||
|
||||
Reference in New Issue
Block a user