mirror of
https://github.com/Deutscher-Tischfussballbund/com_sportsmanager.git
synced 2026-06-10 06:27: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;
|
$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) {
|
||||||
|
|||||||
Reference in New Issue
Block a user