added possibility to mark upload columns as containing unique entries
This commit is contained in:
parent
e8a916a68b
commit
81aa810c0c
|
@ -492,7 +492,10 @@ help:</span> help ID</li>
|
|||
<li><span style="font-weight: bold;"><span style="font-style: italic;">string</span>
|
||||
example:</span> example value</li>
|
||||
<li><span style="font-weight: bold;"><span style="font-style: italic;">boolean</span>
|
||||
required:</span> true, if user must set a value for this column<br>
|
||||
required:</span> true, if user must set a value for this column</li>
|
||||
<li><span style="font-weight: bold;">boolean unique:</span> true if
|
||||
all values of this column must be different values <span
|
||||
style="font-style: italic; font-weight: bold;">(optional)</span><br>
|
||||
</li>
|
||||
</ul>
|
||||
<br>
|
||||
|
|
|
@ -59,7 +59,9 @@ class posixGroup extends baseModule {
|
|||
$partialAccounts[$i]['cn'] = $rawAccounts[$i][$ids['posixGroup_cn']];
|
||||
}
|
||||
else {
|
||||
$errors[] =$this->messages['cn'][2];
|
||||
$errMsg = $this->messages['cn'][3];
|
||||
array_push($errMsg, array($i));
|
||||
$errors[] = $errMsg;
|
||||
}
|
||||
// GID
|
||||
if ($rawAccounts[$i][$ids['posixGroup_gid']] == "") {
|
||||
|
@ -69,6 +71,11 @@ class posixGroup extends baseModule {
|
|||
elseif (get_preg($rawAccounts[$i][$ids['posixGroup_gid']], 'digit')) {
|
||||
$partialAccounts[$i]['gidNumber'] = $rawAccounts[$i][$ids['posixGroup_gid']];
|
||||
}
|
||||
else {
|
||||
$errMsg = $this->messages['gidNumber'][8];
|
||||
array_push($errMsg, array($i));
|
||||
$errors[] = $errMsg;
|
||||
}
|
||||
// description (UTF-8, no regex check needed)
|
||||
if ($rawAccounts[$i][$ids['posixGroup_description']] == "") {
|
||||
$partialAccounts[$i]['description'] = $partialAccounts[$i]['cn'];
|
||||
|
@ -293,13 +300,14 @@ class posixGroup extends baseModule {
|
|||
'description' => _('Group name'),
|
||||
'help' => 'cn',
|
||||
'example' => _('adminstrators'),
|
||||
'required' => true
|
||||
'required' => true,
|
||||
'unique' => true
|
||||
),
|
||||
array(
|
||||
'name' => 'posixGroup_gid',
|
||||
'description' => _('GID number'),
|
||||
'help' => 'gidNumber',
|
||||
'example' => _('2034'),
|
||||
'example' => '2034',
|
||||
'required' => false
|
||||
),
|
||||
array(
|
||||
|
@ -410,9 +418,11 @@ class posixGroup extends baseModule {
|
|||
$this->messages['gidNumber'][5] = array('ERROR', _('Minimum GID number'), _('Minimum GID number is invalid or empty!'));
|
||||
$this->messages['gidNumber'][6] = array('ERROR', _('Maximum GID number'), _('Maximum GID number is invalid or empty!'));
|
||||
$this->messages['gidNumber'][7] = array('ERROR', _('Maximum GID number'), _('Maximum GID number must be greater than minimum GID number!'));
|
||||
$this->messages['gidNumber'][8] = array('ERROR', _('Account %s: posixGroup_gid'), _('GID number has to be a numeric value!'));
|
||||
$this->messages['cn'][0] = array('WARN', _('Groupname'), _('You are using a capital letters. This can cause problems because windows isn\'t case-sensitive.'));
|
||||
$this->messages['cn'][1] = array('WARN', _('Groupname'), _('Groupname in use. Selected next free groupname.'));
|
||||
$this->messages['cn'][2] = array('ERROR', _('Groupname'), _('Groupname contains invalid characters. Valid characters are: a-z, A-Z, 0-9 and .-_ !'));
|
||||
$this->messages['cn'][3] = array('ERROR', _('Account %s: posixGroup_cn'), _('Groupname contains invalid characters. Valid characters are: a-z, A-Z, 0-9 and .-_ !'));
|
||||
$this->messages['memberUID'][0] = array('ERROR', 'Account %s: posixGroup_members', _("This value must be a list of user names separated by semicolons."));
|
||||
}
|
||||
|
||||
|
|
|
@ -87,8 +87,8 @@ echo "<body>\n";
|
|||
|
||||
if ($_FILES['inputfile'] && ($_FILES['inputfile']['size'] > 0)) {
|
||||
// check if input file is well formated
|
||||
$data = array();
|
||||
$ids = array();
|
||||
$data = array(); // input values without first row
|
||||
$ids = array(); // <column name> => <column number for $data>
|
||||
// get input fields from modules
|
||||
$columns = getUploadColumns($_POST['scope']);
|
||||
// read input file
|
||||
|
@ -101,8 +101,10 @@ if ($_FILES['inputfile'] && ($_FILES['inputfile']['size'] > 0)) {
|
|||
while (($line = fgetcsv($handle, 2000)) !== false ) { // account rows
|
||||
$data[] = $line;
|
||||
}
|
||||
// check if all required attributes are given
|
||||
|
||||
$errors = array();
|
||||
|
||||
// check if all required columns are present
|
||||
$checkcolumns = array();
|
||||
$columns = call_user_func_array('array_merge', $columns);
|
||||
for ($i = 0; $i < sizeof($columns); $i++) {
|
||||
|
@ -111,6 +113,8 @@ if ($_FILES['inputfile'] && ($_FILES['inputfile']['size'] > 0)) {
|
|||
else $errors[] = array(_("A required column is missing in your CSV file."), $columns[$i]['name']);
|
||||
}
|
||||
}
|
||||
|
||||
// check if all required attributes are given
|
||||
$invalidColumns = array();
|
||||
$id_names = array_keys($ids);
|
||||
for ($i = 0; $i < sizeof($checkcolumns); $i++) {
|
||||
|
@ -130,10 +134,27 @@ if ($_FILES['inputfile'] && ($_FILES['inputfile']['size'] > 0)) {
|
|||
for ($i = 0; $i < sizeof($invalidColumns); $i++) {
|
||||
$errors[] = array(_("One or more values of the required column \"$invalidColumns[$i]\" are missing."), "");
|
||||
}
|
||||
|
||||
// check if values in unique columns are correct
|
||||
for ($i = 0; $i < sizeof($columns); $i++) {
|
||||
if ($columns[$i]['unique'] == true) {
|
||||
$colNumber = $ids[$columns[$i]['name']];
|
||||
$values_given = array();
|
||||
for ($r = 0; $r < sizeof($data); $r++) {
|
||||
$values_given[] = $data[$r][$colNumber];
|
||||
}
|
||||
$values_unique = array_unique($values_given);
|
||||
if (sizeof($values_given) != sizeof($values_unique)) {
|
||||
$errors[] = array(_("This column is defined to include unique entries but duplicates were found:"), $columns[$i]['name']);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// if input data is invalid just display error messages (max 50)
|
||||
if (sizeof($errors) > 0) {
|
||||
for ($i = 0; $i < sizeof($errors); $i++) StatusMessage("ERROR", $errors[$i][0], $errors[$i][1]);
|
||||
}
|
||||
|
||||
// let modules build accounts
|
||||
else {
|
||||
$accounts = buildUploadAccounts($_POST['scope'], $data, $ids);
|
||||
|
|
Loading…
Reference in New Issue