Überprüfung Format Spielernummer bei Import (issue #59)

This commit is contained in:
Jürgen Meyer
2025-07-14 08:23:34 +02:00
parent 77e2c6e910
commit ca4ce6060e
4 changed files with 41 additions and 23 deletions
@@ -2677,6 +2677,22 @@ function adminImportSpielerVorschau(): void
$n++; $n++;
} }
//check Passnummer auf gueltiges Format
$query = "SELECT nachname, vorname, spielernr, spielernr_alt"
. "\n FROM #__sportsmanager_spieler_import"
. "\n WHERE (spielernr NOT REGEXP '^[0-9]{2}-[0-9]{4,6}$' AND spielernr <> '')"
. "\n OR (spielernr_alt NOT REGEXP '^[0-9]{2}-[0-9]{4,6}$' AND spielernr_alt <> '');";
$db->setQuery($query);
if (!$db->execute()) {
die($db->stderr(true));
}
$spielerfehler = $db->loadObjectList();
if (count($spielerfehler) > 0) {
HTML_sportsmanager_admin::adminImportSpielerFehler($spielerfehler, $fehler="Passnummer");
return;
}
$spielernr_aendern = false; $spielernr_aendern = false;
if (isset($spalten["spielernr_alt"])) { if (isset($spalten["spielernr_alt"])) {
$query = "SELECT nachname, vorname, spielernr, spielernr_alt" $query = "SELECT nachname, vorname, spielernr, spielernr_alt"
@@ -2713,9 +2729,8 @@ function adminImportSpielerVorschau(): void
$spielernr_aendern = false; $spielernr_aendern = false;
} }
} }
if ($spielernr_aendern) { if ($spielernr_aendern) {
$query = "SELECT nachname, vorname" $query = "SELECT nachname, vorname, bestand.spielernr"
. "\n FROM" . "\n FROM"
. "\n (SELECT nachname, vorname, spielernr, spielernr_alt" . "\n (SELECT nachname, vorname, spielernr, spielernr_alt"
. "\n FROM #__sportsmanager_spieler_import" . "\n FROM #__sportsmanager_spieler_import"
@@ -2734,8 +2749,7 @@ function adminImportSpielerVorschau(): void
$konflikte = $db->loadObjectList(); $konflikte = $db->loadObjectList();
if (count($konflikte) > 0) { if (count($konflikte) > 0) {
HTML_sportsmanager_admin::adminImportSpielerFehler($konflikte); HTML_sportsmanager_admin::adminImportSpielerFehler($konflikte, $fehler="konflikt");
return; return;
} }
} }
@@ -2755,7 +2769,6 @@ function adminImportSpielerVorschau(): void
die($db->stderr(true)); die($db->stderr(true));
} }
$spieler_import = $db->loadObjectList(); $spieler_import = $db->loadObjectList();
$import_verweigern = false; $import_verweigern = false;
if ($beschraenkter_zugriff) { if ($beschraenkter_zugriff) {
foreach ($spieler_import as $s) { foreach ($spieler_import as $s) {
@@ -2804,7 +2817,6 @@ function adminImportSpielerVorschau(): void
die($db->stderr(true)); die($db->stderr(true));
} }
} }
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('lizenznr_beibehalten', 0, 'INT'), $jInput->get('spalten', '', 'RAW'));
} }
@@ -2880,7 +2892,7 @@ function adminImportSpieler(): void
* sonst Spielernr. übernehmen * sonst Spielernr. übernehmen
*/ */
if (isset($spalten["spielernr_alt"])) { if (isset($spalten["spielernr_alt"])) {
$query = "SELECT nachname, vorname" $query = "SELECT nachname, vorname, bestand.spielernr"
. "\n FROM" . "\n FROM"
. "\n (SELECT nachname, vorname, spielernr, spielernr_alt" . "\n (SELECT nachname, vorname, spielernr, spielernr_alt"
. "\n FROM #__sportsmanager_spieler_import" . "\n FROM #__sportsmanager_spieler_import"
@@ -2897,10 +2909,8 @@ function adminImportSpieler(): void
die($db->stderr(true)); die($db->stderr(true));
} }
$konflikte = $db->loadObjectList(); $konflikte = $db->loadObjectList();
if (count($konflikte) > 0) { if (count($konflikte) > 0) {
HTML_sportsmanager_admin::adminImportSpielerFehler($konflikte); HTML_sportsmanager_admin::adminImportSpielerFehler($konflikte, $fehler="konflikt");
return; return;
} }
@@ -2276,23 +2276,21 @@ class HTML_sportsmanager_admin
<?php <?php
} }
static function adminImportSpielerFehler($spieler): void static function adminImportSpielerFehler($spieler, $fehler): void
{ {
global $params; global $params;
$spieler_anzahl = count($spieler); $spieler_anzahl = count($spieler);
?> ?>
<div <div class="componentheading<?php echo $params->get('pageclass_sfx'); ?>">
class="componentheading<?php echo $params->get('pageclass_sfx'); ?>"><?php echo Text::_('COM_SPORTSMANAGER_PLAYERS_IMPORT2'); ?></div> <?php echo Text::_('COM_SPORTSMANAGER_PLAYERS_IMPORT2'); ?>
</div>
<table class="contentpaneopen<?php echo $params->get('pageclass_sfx'); ?>"> <table class="contentpaneopen<?php echo $params->get('pageclass_sfx'); ?>">
<tr> <tr>
<td> <td>
<?php <?php
if ($spieler_anzahl > 0) { if ($spieler_anzahl > 0) {
?> echo Text::_('COM_SPORTSMANAGER_IMPORT_CONFLICTS_MESSAGE');
<?php echo Text::_('COM_SPORTSMANAGER_IMPORT_CONFLICTS_MESSAGE'); ?>
<?php
} }
?> ?>
</td> </td>
@@ -2305,12 +2303,20 @@ class HTML_sportsmanager_admin
<table class="contentpaneopen<?php echo $params->get('pageclass_sfx'); ?>"> <table class="contentpaneopen<?php echo $params->get('pageclass_sfx'); ?>">
<tr> <tr>
<td nowrap class="contentheading<?php echo $params->get('pageclass_sfx'); ?>" <td nowrap class="contentheading<?php echo $params->get('pageclass_sfx'); ?>"
style="width: 100%"><?php echo Text::_('COM_SPORTSMANAGER_IMPORT_DUPLICATE_MESSAGE'); ?></td> style="width: 100%">
<?php
if ($fehler == "konflikt")
echo Text::_('COM_SPORTSMANAGER_IMPORT_DUPLICATE_MESSAGE');
if ($fehler == "Passnummer")
echo Text::_('COM_SPORTSMANAGER_IMPORT_WRONG_FORMAT_PLAYERNUMBER');
?>
</td>
</tr> </tr>
</table> </table>
<table class="contentpaneopen<?php echo $params->get('pageclass_sfx'); ?>"> <table class="contentpaneopen<?php echo $params->get('pageclass_sfx'); ?>">
<tr class="sectiontableheader<?php echo $params->get('pageclass_sfx'); ?>"> <tr class="sectiontableheader<?php echo $params->get('pageclass_sfx'); ?>">
<th nowrap><strong><?php echo Text::_('COM_SPORTSMANAGER_PLAYER_NUMBER_SHORT'); ?></strong></th>
<th nowrap><strong><?php echo Text::_('COM_SPORTSMANAGER_NAME'); ?></strong></th> <th nowrap><strong><?php echo Text::_('COM_SPORTSMANAGER_NAME'); ?></strong></th>
</tr> </tr>
<?php <?php
@@ -2320,6 +2326,7 @@ class HTML_sportsmanager_admin
?> ?>
<tr class="sectiontableentry<?php echo $k + 1; <tr class="sectiontableentry<?php echo $k + 1;
$k = ($k + 1) % 2; ?><?php echo $params->get('pageclass_sfx'); ?>"> $k = ($k + 1) % 2; ?><?php echo $params->get('pageclass_sfx'); ?>">
<td nowrap><?php echo htmlentities_utf8($s->spielernr); ?></td>
<td nowrap><?php echo htmlentities_utf8($s->nachname . ", " . $s->vorname); ?></td> <td nowrap><?php echo htmlentities_utf8($s->nachname . ", " . $s->vorname); ?></td>
</tr> </tr>
<?php <?php
@@ -2342,7 +2349,6 @@ class HTML_sportsmanager_admin
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, $lizenznr_beibehalten, $spalten): void
{ {
global $params; global $params;
$spieler_anzahl = count($spieler); $spieler_anzahl = count($spieler);
?> ?>
@@ -404,8 +404,9 @@ 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."
COM_SPORTSMANAGER_CHECK="Pr&uuml;fen" COM_SPORTSMANAGER_CHECK="Pr&uuml;fen"
COM_SPORTSMANAGER_IMPORT_CONFLICTS_MESSAGE="Im Import sind 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"
COM_SPORTSMANAGER_IMPORT_WRONG_FORMAT_PLAYERNUMBER="Eine oder mehrere Spielernummer enthalten ein ung&uuml;ltiges Format"
COM_SPORTSMANAGER_NAME2="Name" COM_SPORTSMANAGER_NAME2="Name"
COM_SPORTSMANAGER_DATA_IMPORT_ABORT_MESSAGE="Der Import wird abgebrochen, da Konflikte bei den zu importierenden Spielerdaten bestehen. Bitte kontaktiere einen Moderator und sende dabei die Importdatei mit!" COM_SPORTSMANAGER_DATA_IMPORT_ABORT_MESSAGE="Der Import wird abgebrochen, da Konflikte bei den zu importierenden Spielerdaten bestehen. Bitte kontaktiere einen Moderator und sende dabei die Importdatei mit!"
COM_SPORTSMANAGER_DATA_IMPORT_NO_CONFLICTS="Es bestehen keine Konflikte bei den zu importierenden Spielerdaten." COM_SPORTSMANAGER_DATA_IMPORT_NO_CONFLICTS="Es bestehen keine Konflikte bei den zu importierenden Spielerdaten."
@@ -404,8 +404,9 @@ 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."
COM_SPORTSMANAGER_CHECK="Check" COM_SPORTSMANAGER_CHECK="Check"
COM_SPORTSMANAGER_IMPORT_CONFLICTS_MESSAGE="There are 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."
COM_SPORTSMANAGER_IMPORT_WRONG_FORMAT_PLAYERNUMBER="One or more player numbers contain an invalid format"
COM_SPORTSMANAGER_NAME2="Name" COM_SPORTSMANAGER_NAME2="Name"
COM_SPORTSMANAGER_DATA_IMPORT_ABORT_MESSAGE="The import has been aborted because there are conflicts in the containing player information. Please contact a moderator and attach the import!" COM_SPORTSMANAGER_DATA_IMPORT_ABORT_MESSAGE="The import has been aborted because there are conflicts in the containing player information. Please contact a moderator and attach the import!"
COM_SPORTSMANAGER_DATA_IMPORT_NO_CONFLICTS="There are conflicts in the containing player information." COM_SPORTSMANAGER_DATA_IMPORT_NO_CONFLICTS="There are conflicts in the containing player information."