Merge pull request #253 from Deutscher-Tischfussballbund/sportsmanager2-dev

dev to stage merge
This commit is contained in:
MarvinF
2026-02-03 19:09:10 +01:00
committed by GitHub
6 changed files with 219 additions and 198 deletions
@@ -112,27 +112,58 @@ function renderTemplate($template, $vars = []): string
); );
} }
function CSVfromArray($rows,$dateiname) function exportCSV(array $rows, string $dateiname): void
{ {
$dateiname = bereinigterDateiname($dateiname); if (empty($rows)) {
ob_end_clean(); // Wegen UTF-8-Zeichen, die in der ausgabe vorhanden sind // Keine Daten → nichts exportieren
Header("Content-Type: text/x-csv"); return;
Header('Expires: ' . gmdate('D, d M Y H:i:s') . ' GMT');
Header('Content-Disposition: attachment; filename="' . $dateiname . '"');
Header("Pragma: no-cache");
$data = "";
$trennzeichen = ";";
$header = "";
$header .= implode(';', array_keys($rows[0]));
foreach ($rows as $row) {
$data .= implode(';', $row)."\n";
} }
echo $header . "\n" . utf8_decode(trim($data)); // Dateiname absichern
$dateiname = bereinigterDateiname($dateiname);
die(); // Output Buffer nur beenden, wenn aktiv
if (ob_get_level() > 0) {
ob_end_clean();
}
// CSV-Header für Browser
header('Content-Type: text/csv; charset=UTF-8');
header('Content-Disposition: attachment; filename="' . $dateiname . '"; filename*=UTF-8\'\'' . rawurlencode($dateiname));
header('Cache-Control: no-store, no-cache, must-revalidate');
header('Pragma: no-cache');
header('Expires: 0');
// BOM für Excel
echo "\xEF\xBB\xBF";
// Stream öffnen
$out = fopen('php://output', 'w');
$delimiter = ';';
$enclosure = '"';
$escape = '\\';
// Header-Zeile: keys aus erstem Datensatz (Array oder stdClass)
$firstRow = $rows[0] instanceof stdClass ? (array) $rows[0] : $rows[0];
$header = array_keys($firstRow);
fputcsv($out, $header, $delimiter, $enclosure, $escape);
// Datenzeilen
foreach ($rows as $row) {
$rowArray = $row instanceof stdClass ? (array) $row : $row;
// Sicherstellen, dass alle Header-Spalten vorhanden sind
$line = [];
foreach ($header as $key) {
$line[] = $rowArray[$key] ?? '';
}
fputcsv($out, $line, $delimiter, $enclosure, $escape);
}
fclose($out);
exit;
} }
function adminUebersicht(): void function adminUebersicht(): void
@@ -2319,7 +2350,7 @@ function adminImportSpielerDetailsForm(): void
adminDeleteSpielerImport($session_id); adminDeleteSpielerImport($session_id);
HTML_sportsmanager_admin::adminImportSpielerBericht($lizenzen_aktualisiert, array(), 0, array(), array(), array(), false, redirectSessionIdEmpty() ? null : redirectSessionIdSetzen()); HTML_sportsmanager_admin::adminImportSpielerBericht($lizenzen_aktualisiert, array(), array(), 0, array(), array(), array(), false, redirectSessionIdEmpty() ? null : redirectSessionIdSetzen());
return; return;
} }
@@ -2575,7 +2606,7 @@ function adminImportSpielerVorschau(): void
if ($import_verweigern) { if ($import_verweigern) {
adminDeleteSpielerImport($session_id); adminDeleteSpielerImport($session_id);
} }
HTML_sportsmanager_admin::adminImportSpielerVorschau($import_verweigern, $spieler_import, $veranstalter, $session_id, $jInput->get('persoenliche_daten', 0, 'INT'), $jInput->get('lizenznr_beibehalten', 0, 'INT'), $jInput->get('spalten', '', 'RAW')); HTML_sportsmanager_admin::adminImportSpielerVorschau($import_verweigern, $spieler_import, $veranstalter, $session_id, $jInput->get('persoenliche_daten', 0, 'INT'), $jInput->get('spalten', '', 'RAW'));
} }
function adminImportSpieler(): void function adminImportSpieler(): void
@@ -2605,7 +2636,6 @@ function adminImportSpieler(): void
$persoenliche_daten = $jInput->get('persoenliche_daten', 0, 'INT'); // 0: "Vor- und Nachname, Geschlecht, Spielernr., Lizenznr.", 1: "Vor- und Nachname, Geschlecht, Spielernr., Lizenznr., Geburtsdatum", "Alle" $persoenliche_daten = $jInput->get('persoenliche_daten', 0, 'INT'); // 0: "Vor- und Nachname, Geschlecht, Spielernr., Lizenznr.", 1: "Vor- und Nachname, Geschlecht, Spielernr., Lizenznr., Geburtsdatum", "Alle"
else else
$persoenliche_daten = 0; $persoenliche_daten = 0;
$lizenznr_beibehalten = $jInput->get('lizenznr_beibehalten', 0, 'INT');
$session_id = $jInput->get('session_id', '', 'RAW'); $session_id = $jInput->get('session_id', '', 'RAW');
$query = "SELECT DISTINCT veranstalterbezeichnung" $query = "SELECT DISTINCT veranstalterbezeichnung"
@@ -2757,6 +2787,8 @@ function adminImportSpieler(): void
} }
$aktualisierungen = 0; $aktualisierungen = 0;
$index_nicht_akt_unt = 0;
$nichtAktualisierteUnterschiede = array();
$spielerHinzugefuegt = array(); $spielerHinzugefuegt = array();
$vereineHinzugefuegt = 0; $vereineHinzugefuegt = 0;
$vereineManuell = array(); $vereineManuell = array();
@@ -2806,17 +2838,20 @@ function adminImportSpieler(): void
// Spieler aktualisieren bzw. ergänzen // Spieler aktualisieren bzw. ergänzen
if ($spieler_id != null) { // Spieler aktualisieren if ($spieler_id != null) { // Spieler aktualisieren
$query = "SELECT * FROM #__sportsmanager_spieler WHERE spieler_id = $spieler_id";
$spieler_buffer = loadObjectList($db, $query);
$query = "UPDATE #__sportsmanager_spieler" $query = "UPDATE #__sportsmanager_spieler"
. "\n SET vorname = '" . $db->escape($vorname) . "'," . "\n SET vorname = '" . $db->escape($vorname) . "',"
. "\n nachname = '" . $db->escape($nachname) . "'"; . "\n nachname = '" . $db->escape($nachname) . "'";
//. "\n spielernr = '" . $db->escape($spielernr) . "'"; if (isset($spalten["lizenznr"]) && !empty($lizenznr) && empty($spieler_buffer[0]->lizenznr))
if (isset($spalten["lizenznr"]) && ($lizenznr_beibehalten == 0 || !empty($lizenznr)))
$query .= ",\n lizenznr = '" . $db->escape($lizenznr) . "'"; $query .= ",\n lizenznr = '" . $db->escape($lizenznr) . "'";
if (isset($spalten["pseudonym"])) if (isset($spalten["pseudonym"]))
$query .= ",\n pseudonym = '" . $db->escape($pseudonym) . "'"; $query .= ",\n pseudonym = '" . $db->escape($pseudonym) . "'";
if (isset($spalten["geschlecht"])) if (isset($spalten["geschlecht"]))
$query .= ",\n geschlecht = '" . $db->escape($geschlecht) . "'"; $query .= ",\n geschlecht = '" . $db->escape($geschlecht) . "'";
if ((isset($spalten["geburtsdatum"]) || isset($spalten["geburtsjahr"])) && $geburtsjahr != null) if ((isset($spalten["geburtsdatum"]) || isset($spalten["geburtsjahr"])) && empty($spieler_buffer[0]->lizenznr) && $geburtsjahr != null)
$query .= ",\n geburtsjahr = " . ("'" . $db->escape($geburtsjahr) . "'"); $query .= ",\n geburtsjahr = " . ("'" . $db->escape($geburtsjahr) . "'");
if ($persoenliche_daten == 2) { if ($persoenliche_daten == 2) {
if (isset($spalten["strasse"])) if (isset($spalten["strasse"]))
@@ -2839,7 +2874,24 @@ function adminImportSpieler(): void
if (!$db->execute()) { if (!$db->execute()) {
die($db->stderr(true)); die($db->stderr(true));
} }
if (!empty($spieler_buffer[0]->lizenznr)){
if (isset($spalten["lizenznr"]) && !empty($lizenznr) && $lizenznr != $spieler_buffer[0]->lizenznr){
$nichtAktualisierteUnterschiede[$index_nicht_akt_unt] = new stdClass();
$nichtAktualisierteUnterschiede[$index_nicht_akt_unt]->spieler = $spieler_buffer[0]->nachname . " " . $spieler_buffer[0]->vorname;
$nichtAktualisierteUnterschiede[$index_nicht_akt_unt]->feld = "Linzenznr";
$nichtAktualisierteUnterschiede[$index_nicht_akt_unt]->db = $spieler_buffer[0]->lizenznr;
$nichtAktualisierteUnterschiede[$index_nicht_akt_unt]->csv = $lizenznr;
$index_nicht_akt_unt++;
}
if (isset($spalten["geburtsjahr"]) && !empty($geburtsjahr) && $geburtsjahr != $spieler_buffer[0]->geburtsjahr){
$nichtAktualisierteUnterschiede[$index_nicht_akt_unt] = new stdClass();
$nichtAktualisierteUnterschiede[$index_nicht_akt_unt]->spieler = $spieler_buffer[0]->nachname . " " . $spieler_buffer[0]->vorname;
$nichtAktualisierteUnterschiede[$index_nicht_akt_unt]->feld = "Geburtsjahr";
$nichtAktualisierteUnterschiede[$index_nicht_akt_unt]->db = $spieler_buffer[0]->geburtsjahr;
$nichtAktualisierteUnterschiede[$index_nicht_akt_unt]->csv = $geburtsjahr;
$index_nicht_akt_unt++;
}
}
$aktualisierungen++; $aktualisierungen++;
} else { // Spieler ergänzen } else { // Spieler ergänzen
// Neuen Spieler anlegen // Neuen Spieler anlegen
@@ -3061,7 +3113,7 @@ function adminImportSpieler(): void
einstufungAktualisieren(); einstufungAktualisieren();
} }
HTML_sportsmanager_admin::adminImportSpielerBericht($aktualisierungen, $spielerHinzugefuegt, $vereineHinzugefuegt, $spieler_import, $vereineManuell, $ausgetreteneVereineMitAktivenMitgliedern, $kategorie_potentiell_geaendert, redirectSessionIdEmpty() ? null : redirectSessionIdSetzen()); HTML_sportsmanager_admin::adminImportSpielerBericht($aktualisierungen, $spielerHinzugefuegt, $nichtAktualisierteUnterschiede, $vereineHinzugefuegt, $spieler_import, $vereineManuell, $ausgetreteneVereineMitAktivenMitgliedern, $kategorie_potentiell_geaendert, redirectSessionIdEmpty() ? null : redirectSessionIdSetzen());
} }
function adminExportSpielerInternationalForm(): void function adminExportSpielerInternationalForm(): void
@@ -5041,7 +5093,7 @@ function adminEditSpielverlegung(): void
$zeile++; $zeile++;
} }
CSVfromArray($rows,"Spielverlegungen.csv"); exportCSV($rows,"Spielverlegungen.csv");
} }
function adminSpielverlegungMailen(): void function adminSpielverlegungMailen(): void
@@ -12240,41 +12292,8 @@ function adminBegegnungenExportForm(): void
} }
$dateiname .= ".csv"; $dateiname .= ".csv";
$dateiname = bereinigterDateiname($dateiname);
ob_end_clean(); // Wegen UTF-8-Zeichen, die in der ausgabe vorhanden sind
Header("Content-Type: text/x-csv");
Header('Expires: ' . gmdate('D, d M Y H:i:s') . ' GMT');
Header('Content-Disposition: attachment; filename="' . $dateiname . '"');
Header("Pragma: no-cache");
$data = ""; exportCSV($rows, $dateiname);
$trennzeichen = ";";
$spalte = 0;
$header = "";
foreach ($rows[0] as $field => $value) {
if ($spalte != 0) {
$header .= $trennzeichen;
}
$header .= $field;
$spalte++;
}
foreach ($rows as $row) {
$line = '';
$spalte = 0;
foreach ($row as $value) {
if ($spalte != 0) {
$line .= $trennzeichen;
}
$line .= $value;
$spalte++;
}
$data .= trim($line) . "\n";
}
echo $header . "\n" . utf8_decode($data);
die();
} }
function adminEditTurnier(): void function adminEditTurnier(): void
@@ -3103,7 +3103,9 @@ function spielerDetails(): void
$spieler = $rows[0]; $spieler = $rows[0];
// Aktive Vereinsmitgliedschaften ermitteln // Aktive Vereinsmitgliedschaften ermitteln
$query = "SELECT vereinsname" $query = "SELECT vereinsname,"
. "\n CASE #__sportsmanager_mitglied_von_verein.mitgliedsstatus"
. "\n WHEN 1 THEN 'Aktiv' WHEN 2 THEN 'Eingeschränkt' END AS status"
. "\n FROM #__sportsmanager_mitglied_von_verein, #__sportsmanager_verein" . "\n FROM #__sportsmanager_mitglied_von_verein, #__sportsmanager_verein"
. "\n LEFT JOIN #__sportsmanager_veranstalter USING (veranstalter_id)" . "\n LEFT JOIN #__sportsmanager_veranstalter USING (veranstalter_id)"
. "\n WHERE #__sportsmanager_mitglied_von_verein.spieler_id = $id " . "\n WHERE #__sportsmanager_mitglied_von_verein.spieler_id = $id "
@@ -4538,7 +4538,7 @@ if ($bild != null) {
<td nowrap style="text-align: right"> <td nowrap style="text-align: right">
<?php <?php
foreach ($vereine as $verein) foreach ($vereine as $verein)
echo htmlentities_utf8($verein->vereinsname) . "<br />"; echo htmlentities_utf8($verein->vereinsname) . " (" . htmlentities_utf8($verein->status) . ")<br />";
?> ?>
</td> </td>
</tr> </tr>
@@ -2268,28 +2268,20 @@ class HTML_sportsmanager_admin
<form action="<?php echo SportsManagerURL(); ?>" method="post" name="adminForm" id="adminForm" <form action="<?php echo SportsManagerURL(); ?>" method="post" name="adminForm" id="adminForm"
enctype="multipart/form-data"> enctype="multipart/form-data">
<div class="uk-overflow-auto"> <div class="uk-overflow-auto">
<table class="uk-table" style="width: 100%"> <table style="width: 60%">
<tr> <tr>
<td nowrap style="width: 60%; vertical-align: top"> <td nowrap style="width: 20%; text-align: right">
<div class="uk-overflow-auto"> <?php echo Text::_('COM_SPORTSMANAGER_PLAYERS'); ?>:
<table class="uk-table" style="width: 100%"> </td>
<tr> <td nowrap>
<td nowrap style="width: 20%; text-align: right"> <input type="file" name="daten" size="30"/>
<?php echo Text::_('COM_SPORTSMANAGER_PLAYERS'); ?>: </td>
</td> </tr>
<td nowrap> <tr>
<input type="file" name="daten" size="30"/> <td nowrap colspan="2">&nbsp;
</td>
</tr>
<tr>
<td nowrap colspan="2">&nbsp;
</td> </td>
</tr> </tr>
</table>
</div>
</td>
</tr>
</table> </table>
</div> </div>
@@ -2340,109 +2332,89 @@ class HTML_sportsmanager_admin
<form action="<?php echo SportsManagerURL(); ?>" method="post" name="adminForm" id="adminForm" <form action="<?php echo SportsManagerURL(); ?>" method="post" name="adminForm" id="adminForm"
enctype="multipart/form-data"> enctype="multipart/form-data">
<div class="uk-overflow-auto"> <div class="uk-overflow-auto">
<table class="uk-table" style="width: 100%"> <br>
<tr> <table style="width: 100%">
<td nowrap style="width: 60%; vertical-align: top"> <?php
<div class="uk-overflow-auto"> if (!$beschraenkter_zugriff || $ansprechpartner_importieren != 1) {
<table class="uk-table" style="width: 100%"> ?>
<?php <tr>
if (!$beschraenkter_zugriff || $ansprechpartner_importieren != 1) { <td nowrap style="width: 20%; text-align: right">
?> <label
<tr> for="personal_data"><?php echo Text::_('COM_SPORTSMANAGER_PERSONAL_DATA'); ?>
<td nowrap style="width: 20%; text-align: right"> :</label>
<label </td>
for="personal_data"><?php echo Text::_('COM_SPORTSMANAGER_PERSONAL_DATA'); ?> <td nowrap>
:</label> <select class="uk-select uk-form-width-large" name="persoenliche_daten"
</td> style="width: 700px;" id="personal_data" size="1">
<td nowrap> <?php
<select class="uk-select uk-form-width-medium" name="persoenliche_daten" $status = array("0" => Text::_('COM_SPORTSMANAGER_FIRST_AND_LAST_NAME_AND_BIRTHYEAR'), "1" => Text::_('COM_SPORTSMANAGER_FIRST_AND_LAST_NAME_AND_BIRTHYEAR'), "2" => Text::_('COM_SPORTSMANAGER_FIRST_AND_LAST_NAME_AND_PSEUDONYM'));
id="personal_data" foreach ($status as $wert => $bezeichnung) {
size="1"> echo "<option value=\"" . $wert . "\"" . ($wert == $persoenliche_daten_vorauswahl ? " selected" : "") . ">" . htmlentities_utf8($bezeichnung) . "</option>";
<?php }
$status = array("0" => Text::_('COM_SPORTSMANAGER_FIRST_AND_LAST_NAME_AND_BIRTHYEAR'), "1" => Text::_('COM_SPORTSMANAGER_FIRST_AND_LAST_NAME_AND_BIRTHYEAR'), "2" => Text::_('COM_SPORTSMANAGER_FIRST_AND_LAST_NAME_AND_PSEUDONYM')); ?>
foreach ($status as $wert => $bezeichnung) { </select>
echo "<option value=\"" . $wert . "\"" . ($wert == $persoenliche_daten_vorauswahl ? " selected" : "") . ">" . htmlentities_utf8($bezeichnung) . "</option>"; </td>
} </tr>
?> <?php
</select> }
</td> $n = 1;
</tr> foreach ($veranstalter_import as $v) {
<?php ?>
} <tr>
?> <td nowrap style="width: 20%; text-align: right">
<tr> <label for="organizer_<?php echo $n; ?>"><?php
<td nowrap style="width: 20%; text-align: right"> echo htmlentities_utf8(empty($v->veranstalterbezeichnung) ? Text::_('COM_SPORTSMANAGER_CLUB_WITHOUT_ORGANISATION') : (Text::_('COM_SPORTSMANAGER_CLUBS') . $v->veranstalterbezeichnung));
</td> ?></label>
<td nowrap> </td>
<label> <td nowrap>
<input type="checkbox" name="lizenznr_beibehalten" value="1" <select class="uk-select uk-form-width-medium"
checked><?php echo Text::_('COM_SPORTSMANAGER_INTERNATIONAL_PLATYERS_OVERWRITE'); ?> name="veranstalter_<?php echo $n; ?>_id"
</label> id="organizer_<?php echo $n; ?>" style="width: 700px;" size="1">
</td> <option
</tr> value=""><?php echo Text::_('COM_SPORTSMANAGER_NO_IMPORT'); ?></option>
<?php <optgroup
$n = 1; label="<?php echo Text::_('COM_SPORTSMANAGER_ORGANISATIONS'); ?>">
foreach ($veranstalter_import as $v) { <?php
?> if (!$beschraenkter_zugriff) {
<tr> ?>
<td nowrap style="width: 20%; text-align: right"> <option
<label for="organizer_<?php echo $n; ?>"><?php value="0"><?php echo Text::_('COM_SPORTSMANAGER_LOOSER_CLUB'); ?></option>
echo htmlentities_utf8(empty($v->veranstalterbezeichnung) ? Text::_('COM_SPORTSMANAGER_CLUB_WITHOUT_ORGANISATION') : (Text::_('COM_SPORTSMANAGER_CLUBS') . $v->veranstalterbezeichnung)); <?php
?></label> }
</td> foreach ($veranstalter as $veranstalter_row) {
<td nowrap> echo "<option value=\"" . $veranstalter_row->veranstalter_id . "\" " . (empty($verein_import) && ($v->veranstalterbezeichnung == $veranstalter_row->veranstalterbezeichnung || (isset($veranstalter_zugehoerigkeit[$v->veranstalterbezeichnung]) && $veranstalter_zugehoerigkeit[$v->veranstalterbezeichnung] == $veranstalter_row->veranstalter_id)) ? "selected" : "") . ">" . htmlentities_utf8($veranstalter_row->veranstalterbezeichnung) . "</option>";
<select class="uk-select uk-form-width-medium" }
name="veranstalter_<?php echo $n; ?>_id" ?>
id="organizer_<?php echo $n; ?>" size="1"> </optgroup>
<option <?php
value=""><?php echo Text::_('COM_SPORTSMANAGER_NO_IMPORT'); ?></option> if (!empty($verein_import)) {
<optgroup $veranstalterbezeichnung = -1;
label="<?php echo Text::_('COM_SPORTSMANAGER_ORGANISATIONS'); ?>"> foreach ($vereine as $verein) {
<?php if ($veranstalterbezeichnung != $verein->veranstalterbezeichnung) {
if (!$beschraenkter_zugriff) { if ($veranstalterbezeichnung != -1)
?> echo "</optgroup>";
<option echo "<optgroup label=\"" . Text::_('COM_SPORTSMANAGER_CLUBS') . " " . htmlentities_utf8($verein->veranstalterbezeichnung != null ? $verein->veranstalterbezeichnung : "") . "\">";
value="0"><?php echo Text::_('COM_SPORTSMANAGER_LOOSER_CLUB'); ?></option> $veranstalterbezeichnung = $verein->veranstalterbezeichnung;
<?php }
} echo "<option value=\"-" . $verein->verein_id . "\"" . ($verein_import_id == $verein->verein_id ? " selected" : "") . ">" . htmlentities_utf8($verein->vereinsname) . "</option>";
foreach ($veranstalter as $veranstalter_row) { }
echo "<option value=\"" . $veranstalter_row->veranstalter_id . "\" " . (empty($verein_import) && ($v->veranstalterbezeichnung == $veranstalter_row->veranstalterbezeichnung || (isset($veranstalter_zugehoerigkeit[$v->veranstalterbezeichnung]) && $veranstalter_zugehoerigkeit[$v->veranstalterbezeichnung] == $veranstalter_row->veranstalter_id)) ? "selected" : "") . ">" . htmlentities_utf8($veranstalter_row->veranstalterbezeichnung) . "</option>"; if ($veranstalterbezeichnung != -1)
} echo "</optgroup>";
?>
</optgroup>
<?php
if (!empty($verein_import)) {
$veranstalterbezeichnung = -1;
foreach ($vereine as $verein) {
if ($veranstalterbezeichnung != $verein->veranstalterbezeichnung) {
if ($veranstalterbezeichnung != -1)
echo "</optgroup>";
echo "<optgroup label=\"" . Text::_('COM_SPORTSMANAGER_CLUBS') . " " . htmlentities_utf8($verein->veranstalterbezeichnung != null ? $verein->veranstalterbezeichnung : "") . "\">";
$veranstalterbezeichnung = $verein->veranstalterbezeichnung;
}
echo "<option value=\"-" . $verein->verein_id . "\"" . ($verein_import_id == $verein->verein_id ? " selected" : "") . ">" . htmlentities_utf8($verein->vereinsname) . "</option>";
}
if ($veranstalterbezeichnung != -1)
echo "</optgroup>";
} }
?> ?>
</select> </select>
</td> </td>
</tr> </tr>
<?php <?php
$n++; $n++;
} }
?> ?>
<tr> <tr>
<td nowrap colspan="2">&nbsp; <td nowrap colspan="2">&nbsp;
</td> </td>
</tr> </tr>
</table>
</div>
</td>
</tr>
</table> </table>
</div> </div>
@@ -2526,7 +2498,7 @@ class HTML_sportsmanager_admin
<?php <?php
} }
static function adminImportSpielerVorschau($import_verweigern, $spieler, $veranstalter, $session_id, $persoenliche_daten, $lizenznr_beibehalten, $spalten): void static function adminImportSpielerVorschau($import_verweigern, $spieler, $veranstalter, $session_id, $persoenliche_daten, $spalten): void
{ {
global $params; global $params;
$spieler_anzahl = count($spieler); $spieler_anzahl = count($spieler);
@@ -2663,17 +2635,14 @@ class HTML_sportsmanager_admin
} }
?> ?>
<input type="hidden" name="session_id" value="<?php echo htmlentities_utf8($session_id); ?>"/> <input type="hidden" name="session_id" value="<?php echo htmlentities_utf8($session_id); ?>"/>
<input type="hidden" name="persoenliche_daten" <input type="hidden" name="persoenliche_daten" value="<?php echo htmlentities_utf8($persoenliche_daten); ?>"/>
value="<?php echo htmlentities_utf8($persoenliche_daten); ?>"/>
<input type="hidden" name="lizenznr_beibehalten"
value="<?php echo htmlentities_utf8($lizenznr_beibehalten); ?>"/>
<input type="hidden" name="spalten" value="<?php echo htmlentities_utf8($spalten); ?>"/> <input type="hidden" name="spalten" value="<?php echo htmlentities_utf8($spalten); ?>"/>
<input type="hidden" name="task" value="admin_spieler_import"/> <input type="hidden" name="task" value="admin_spieler_import"/>
</form> </form>
<?php <?php
} }
static function adminImportSpielerBericht($aktualisierungen, $spielerHinzugefuegt, $vereineHinzugefuegt, $spieler_import, $vereineManuell, $ausgetreteneVereineMitAktivenMitgliedern, $kategorie_potentiell_geaendert, $rsession_id): void static function adminImportSpielerBericht($aktualisierungen, $spielerHinzugefuegt, $nichtAktualisierteUnterschiede, $vereineHinzugefuegt, $spieler_import, $vereineManuell, $ausgetreteneVereineMitAktivenMitgliedern, $kategorie_potentiell_geaendert, $rsession_id): void
{ {
global $params; global $params;
@@ -2905,6 +2874,35 @@ class HTML_sportsmanager_admin
<span class="article_seperator<?php echo $params->get('pageclass_sfx'); ?>">&nbsp;</span> <span class="article_seperator<?php echo $params->get('pageclass_sfx'); ?>">&nbsp;</span>
<?php <?php
} }
if (!empty($nichtAktualisierteUnterschiede)){
?>
<table class="contentpaneopen<?php echo $params->get('pageclass_sfx'); ?>">
<tr>
<th nowrap class="contentheading<?php echo $params->get('pageclass_sfx'); ?>"
style="width: 100%"><?php echo Text::_('COM_SPORTSMANAGER_NOT_ACTUALIZED_DATA'); ?></th>
</tr>
</table>
<table class="contentpaneopen<?php echo $params->get('pageclass_sfx'); ?>">
<?php
$k = 0;
foreach ($nichtAktualisierteUnterschiede as $s) {
?>
<tr class="sectiontableentry<?php echo $k + 1;
$k = ($k + 1) % 2; ?><?php echo $params->get('pageclass_sfx'); ?>">
<td nowrap style="width: 250px;"><?php echo htmlentities_utf8($s->spieler); ?></td>
<td nowrap style="width: 150px;"><?php echo htmlentities_utf8($s->feld); ?></td>
<td nowrap style="width: 120px;"><?php echo htmlentities_utf8($s->db); ?></td>
<td nowrap style="width: 120px;"><?php echo htmlentities_utf8($s->csv); ?></td>
</tr>
<?php
}
?>
</table>
<span class="article_seperator<?php echo $params->get('pageclass_sfx'); ?>">&nbsp;</span>
<?php
}
} }
static function adminVerteiler($verteiler, $organisationen, $organisationen_mailverteiler, $veranstaltungen, $veranstaltungen_mailverteiler, $saisons, $filter_saison_id, $moderator_zugriff): void static function adminVerteiler($verteiler, $organisationen, $organisationen_mailverteiler, $veranstaltungen, $veranstaltungen_mailverteiler, $saisons, $filter_saison_id, $moderator_zugriff): void
@@ -10325,14 +10323,14 @@ class HTML_sportsmanager_admin
:</label> :</label>
</td> </td>
<td nowrap> <td nowrap>
<?php if ($neuer_eintrag) {$row->spiel_nr = "";} ?> <?php $spiel_nr = ($neuer_eintrag || $row == null) ? null : ($row->spiel_nr ?? null); ?>
<select class="uk-select uk-form-width-xsmall" id="game_nr" size="1" <select class="uk-select uk-form-width-xsmall" id="game_nr" size="1"
title="Spielnummer (optional)" name="spiel_nr"> title="Spielnummer (optional)" name="spiel_nr">
<option value=""></option> <option value=""></option>
<?php <?php
for ($i = 1; $i <= 99; $i++) for ($i = 1; $i <= 99; $i++)
{ {
echo "<option value=\"" . $i . "\"" . ($row->spiel_nr == $i ? " selected" : "") . ">" . $i . "</option>"; echo "<option value=\"" . $i . "\"" . ($spiel_nr == $i ? " selected" : "") . ">" . $i . "</option>";
} }
?> ?>
</select> </select>
@@ -415,7 +415,7 @@ COM_SPORTSMANAGER_EXPORT="Exportieren"
COM_SPORTSMANAGER_INTERNATIONAL_PLAYERS="Spieler (international)" COM_SPORTSMANAGER_INTERNATIONAL_PLAYERS="Spieler (international)"
COM_SPORTSMANAGER_COUNTRY_CODE="Landeskennung" COM_SPORTSMANAGER_COUNTRY_CODE="Landeskennung"
COM_SPORTSMANAGER_IMPORT="Importieren" COM_SPORTSMANAGER_IMPORT="Importieren"
COM_SPORTSMANAGER_IMPORT_MESSAGE="Im Import sind ausschlie&szlig;lich Spielerdaten zum Verein %s enthalten. Soll ausschlie&szlig;lich der Spielerbestand des einen Vereins aktualisiert werden, muss der zugeh&ouml;rige Verein unten ausgew&auml;hlt werden. Beinhaltet der Import den gesamten Spielerbestand einer Organisation, muss die zugeh&ouml;rige Organisation gew&auml;hlt werden." COM_SPORTSMANAGER_IMPORT_MESSAGE="Im Import sind ausschlie&szlig;lich Spielerdaten zum Verein %s enthalten. Soll ausschlie&szlig;lich der Spielerbestand des einen Vereins aktualisiert werden, muss der zugeh&ouml;rige Verein unten ausgew&auml;hlt werden. Beinhaltet der Import den gesamten Spielerbestand einer Organisation, muss die zugeh&ouml;rige Organisation gew&auml;hlt werden.<br />Bei schon vorhandener Lizenznummer wird die Lizenznummer und das Geburtsjahr nicht &uuml;berschrieben!"
COM_SPORTSMANAGER_CHECK="Pr&uuml;fen" COM_SPORTSMANAGER_CHECK="Pr&uuml;fen"
COM_SPORTSMANAGER_IMPORT_CONFLICTS_MESSAGE="Im Import sind Fehler oder Konflikte enthalten, die im Vorfeld manuell beseitigt werden müssen." COM_SPORTSMANAGER_IMPORT_CONFLICTS_MESSAGE="Im Import sind Fehler oder Konflikte enthalten, die im Vorfeld manuell beseitigt werden müssen."
COM_SPORTSMANAGER_IMPORT_DUPLICATE_MESSAGE="Versuch, Spielernr. auf eine bereits für einen anderen Spieler vergebene Spielernr. zu ändern" COM_SPORTSMANAGER_IMPORT_DUPLICATE_MESSAGE="Versuch, Spielernr. auf eine bereits für einen anderen Spieler vergebene Spielernr. zu ändern"
@@ -1070,3 +1070,4 @@ COM_SPORTSMANAGER_NOT_VALID_TIME="Ung&uuml;ltige Uhrzeit"
COM_SPORTSMANAGER_REALLY_MATCH_RESCHEDULING="Willst Du diesen Spielverlegung wirklich entfernen?" COM_SPORTSMANAGER_REALLY_MATCH_RESCHEDULING="Willst Du diesen Spielverlegung wirklich entfernen?"
COM_SPORTSMANAGER_REST_DAYS="Ruhetage" COM_SPORTSMANAGER_REST_DAYS="Ruhetage"
COM_SPORTSMANAGER_TRAINING_DAYS="Trainingstage" COM_SPORTSMANAGER_TRAINING_DAYS="Trainingstage"
COM_SPORTSMANAGER_NOT_ACTUALIZED_DATA="Nicht aktualisierte Daten"
@@ -415,7 +415,7 @@ COM_SPORTSMANAGER_EXPORT="Export"
COM_SPORTSMANAGER_INTERNATIONAL_PLAYERS="Players (international)" COM_SPORTSMANAGER_INTERNATIONAL_PLAYERS="Players (international)"
COM_SPORTSMANAGER_COUNTRY_CODE="Country code" COM_SPORTSMANAGER_COUNTRY_CODE="Country code"
COM_SPORTSMANAGER_IMPORT="Import" COM_SPORTSMANAGER_IMPORT="Import"
COM_SPORTSMANAGER_IMPORT_MESSAGE="In the import there are only player information about club %s present. Shall only the members of that one club be updated, the associated club has to be selected down here. If the import contains all members of the organisation then the organisation must be selected." COM_SPORTSMANAGER_IMPORT_MESSAGE="In the import there are only player information about club %s present. Shall only the members of that one club be updated, the associated club has to be selected down here. If the import contains all members of the organisation then the organisation must be selected.<br />If a license number already exists, the license number and the year of birth will not be overwritten."
COM_SPORTSMANAGER_CHECK="Check" COM_SPORTSMANAGER_CHECK="Check"
COM_SPORTSMANAGER_IMPORT_CONFLICTS_MESSAGE="There are faults or conflicts in the import which have to be fixed manually first." COM_SPORTSMANAGER_IMPORT_CONFLICTS_MESSAGE="There are faults or conflicts in the import which have to be fixed manually first."
COM_SPORTSMANAGER_IMPORT_DUPLICATE_MESSAGE="Attempt to change player number into one that is already assigned to another player." COM_SPORTSMANAGER_IMPORT_DUPLICATE_MESSAGE="Attempt to change player number into one that is already assigned to another player."
@@ -1070,3 +1070,4 @@ COM_SPORTSMANAGER_NOT_VALID_TIME="Not valid time"
COM_SPORTSMANAGER_REALLY_MATCH_RESCHEDULING="Do you really want to remove this match rescheduling?" COM_SPORTSMANAGER_REALLY_MATCH_RESCHEDULING="Do you really want to remove this match rescheduling?"
COM_SPORTSMANAGER_REST_DAYS="Rest days" COM_SPORTSMANAGER_REST_DAYS="Rest days"
COM_SPORTSMANAGER_TRAINING_DAYS="Training days" COM_SPORTSMANAGER_TRAINING_DAYS="Training days"
COM_SPORTSMANAGER_NOT_ACTUALIZED_DATA="Data not updated"