|
|
|
@ -1,4 +1,5 @@ |
|
|
|
<?php |
|
|
|
<?php |
|
|
|
|
|
|
|
|
|
|
|
/* For licensing terms, see /license.txt */ |
|
|
|
/* For licensing terms, see /license.txt */ |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
@ -8,13 +9,10 @@ |
|
|
|
use Ddeboer\DataImport\Reader\CsvReader; |
|
|
|
use Ddeboer\DataImport\Reader\CsvReader; |
|
|
|
use Symfony\Component\DomCrawler\Crawler; |
|
|
|
use Symfony\Component\DomCrawler\Crawler; |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
|
|
* Validate the imported data. |
|
|
|
|
|
|
|
*/ |
|
|
|
|
|
|
|
$cidReset = true; |
|
|
|
$cidReset = true; |
|
|
|
require_once __DIR__.'/../inc/global.inc.php'; |
|
|
|
require_once __DIR__.'/../inc/global.inc.php'; |
|
|
|
|
|
|
|
|
|
|
|
// Set this option to true to enforce strict purification for usenames. |
|
|
|
// Set this option to true to enforce strict purification for usernames. |
|
|
|
$purification_option_for_usernames = false; |
|
|
|
$purification_option_for_usernames = false; |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
@ -27,7 +25,6 @@ function validate_data($users) |
|
|
|
global $defined_auth_sources; |
|
|
|
global $defined_auth_sources; |
|
|
|
$errors = []; |
|
|
|
$errors = []; |
|
|
|
$usernames = []; |
|
|
|
$usernames = []; |
|
|
|
|
|
|
|
|
|
|
|
$classExistList = []; |
|
|
|
$classExistList = []; |
|
|
|
$usergroup = new UserGroup(); |
|
|
|
$usergroup = new UserGroup(); |
|
|
|
|
|
|
|
|
|
|
|
@ -108,7 +105,6 @@ function updateUsers($users, $resetPassword = false) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
$user_id = $userInfo['user_id']; |
|
|
|
$user_id = $userInfo['user_id']; |
|
|
|
|
|
|
|
|
|
|
|
$firstName = isset($user['FirstName']) ? $user['FirstName'] : $userInfo['firstname']; |
|
|
|
$firstName = isset($user['FirstName']) ? $user['FirstName'] : $userInfo['firstname']; |
|
|
|
$lastName = isset($user['LastName']) ? $user['LastName'] : $userInfo['lastname']; |
|
|
|
$lastName = isset($user['LastName']) ? $user['LastName'] : $userInfo['lastname']; |
|
|
|
$userName = isset($user['NewUserName']) ? $user['NewUserName'] : $userInfo['username']; |
|
|
|
$userName = isset($user['NewUserName']) ? $user['NewUserName'] : $userInfo['username']; |
|
|
|
@ -141,6 +137,7 @@ function updateUsers($users, $resetPassword = false) |
|
|
|
$hrDeptId = $userInfo['hr_dept_id']; |
|
|
|
$hrDeptId = $userInfo['hr_dept_id']; |
|
|
|
$language = isset($user['Language']) ? $user['Language'] : $userInfo['language']; |
|
|
|
$language = isset($user['Language']) ? $user['Language'] : $userInfo['language']; |
|
|
|
$sendEmail = isset($user['SendEmail']) ? $user['SendEmail'] : $userInfo['language']; |
|
|
|
$sendEmail = isset($user['SendEmail']) ? $user['SendEmail'] : $userInfo['language']; |
|
|
|
|
|
|
|
|
|
|
|
$userUpdated = UserManager::update_user( |
|
|
|
$userUpdated = UserManager::update_user( |
|
|
|
$user_id, |
|
|
|
$user_id, |
|
|
|
$firstName, |
|
|
|
$firstName, |
|
|
|
@ -260,7 +257,6 @@ $this_section = SECTION_PLATFORM_ADMIN; |
|
|
|
api_protect_admin_script(true, null); |
|
|
|
api_protect_admin_script(true, null); |
|
|
|
|
|
|
|
|
|
|
|
$defined_auth_sources[] = PLATFORM_AUTH_SOURCE; |
|
|
|
$defined_auth_sources[] = PLATFORM_AUTH_SOURCE; |
|
|
|
|
|
|
|
|
|
|
|
if (isset($extAuthSource) && is_array($extAuthSource)) { |
|
|
|
if (isset($extAuthSource) && is_array($extAuthSource)) { |
|
|
|
$defined_auth_sources = array_merge($defined_auth_sources, array_keys($extAuthSource)); |
|
|
|
$defined_auth_sources = array_merge($defined_auth_sources, array_keys($extAuthSource)); |
|
|
|
} |
|
|
|
} |
|
|
|
@ -276,76 +272,77 @@ $form->addElement('header', $tool_name); |
|
|
|
$form->addFile('import_file', get_lang('ImportFileLocation'), ['accept' => 'text/csv', 'id' => 'import_file']); |
|
|
|
$form->addFile('import_file', get_lang('ImportFileLocation'), ['accept' => 'text/csv', 'id' => 'import_file']); |
|
|
|
$form->addCheckBox('reset_password', '', get_lang('AutoGeneratePassword')); |
|
|
|
$form->addCheckBox('reset_password', '', get_lang('AutoGeneratePassword')); |
|
|
|
|
|
|
|
|
|
|
|
if ($form->validate() && Security::check_token('post')) { |
|
|
|
if ($form->validate()) { |
|
|
|
Security::clear_token(); |
|
|
|
if (Security::check_token('post')) { |
|
|
|
|
|
|
|
Security::clear_token(); |
|
|
|
$formValues = $form->exportValues(); |
|
|
|
$formValues = $form->exportValues(); |
|
|
|
|
|
|
|
|
|
|
|
if (empty($_FILES['import_file']) || empty($_FILES['import_file']['size'])) { |
|
|
|
if (empty($_FILES['import_file']) || empty($_FILES['import_file']['size'])) { |
|
|
|
header('Location: '.api_get_self()); |
|
|
|
header('Location: '.api_get_self()); |
|
|
|
exit; |
|
|
|
exit; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
$uploadInfo = pathinfo($_FILES['import_file']['name']); |
|
|
|
$uploadInfo = pathinfo($_FILES['import_file']['name']); |
|
|
|
|
|
|
|
|
|
|
|
if ($uploadInfo['extension'] !== 'csv') { |
|
|
|
if ($uploadInfo['extension'] !== 'csv') { |
|
|
|
Display::addFlash( |
|
|
|
Display::addFlash( |
|
|
|
Display::return_message(get_lang('YouMustImportAFileAccordingToSelectedOption'), 'error') |
|
|
|
Display::return_message(get_lang('YouMustImportAFileAccordingToSelectedOption'), 'error') |
|
|
|
); |
|
|
|
); |
|
|
|
|
|
|
|
|
|
|
|
header('Location: '.api_get_self()); |
|
|
|
header('Location: '.api_get_self()); |
|
|
|
exit; |
|
|
|
exit; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
try { |
|
|
|
try { |
|
|
|
$users = parse_csv_data($_FILES['import_file']['tmp_name']); |
|
|
|
$users = parse_csv_data($_FILES['import_file']['tmp_name']); |
|
|
|
} catch (Exception $exception) { |
|
|
|
} catch (Exception $exception) { |
|
|
|
Display::addFlash( |
|
|
|
Display::addFlash( |
|
|
|
Display::return_message($exception->getMessage(), 'error') |
|
|
|
Display::return_message($exception->getMessage(), 'error') |
|
|
|
); |
|
|
|
); |
|
|
|
|
|
|
|
|
|
|
|
header('Location: '.api_get_self()); |
|
|
|
header('Location: '.api_get_self()); |
|
|
|
exit; |
|
|
|
exit; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
$errors = validate_data($users); |
|
|
|
$errors = validate_data($users); |
|
|
|
$errorUsers = array_keys($errors); |
|
|
|
$errorUsers = array_keys($errors); |
|
|
|
$usersToUpdate = []; |
|
|
|
$usersToUpdate = []; |
|
|
|
|
|
|
|
|
|
|
|
foreach ($users as $user) { |
|
|
|
foreach ($users as $user) { |
|
|
|
if (!in_array($user['UserName'], $errorUsers)) { |
|
|
|
if (!in_array($user['UserName'], $errorUsers)) { |
|
|
|
$usersToUpdate[] = $user; |
|
|
|
$usersToUpdate[] = $user; |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
updateUsers($usersToUpdate, isset($formValues['reset_password'])); |
|
|
|
updateUsers($usersToUpdate, isset($formValues['reset_password'])); |
|
|
|
|
|
|
|
|
|
|
|
if (empty($errors)) { |
|
|
|
if (empty($errors)) { |
|
|
|
Display::addFlash( |
|
|
|
Display::addFlash( |
|
|
|
Display::return_message(get_lang('FileImported'), 'success') |
|
|
|
Display::return_message(get_lang('FileImported'), 'success') |
|
|
|
); |
|
|
|
); |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
$warningMessage = ''; |
|
|
|
$warningMessage = ''; |
|
|
|
|
|
|
|
foreach ($errors as $errorUsername => $errorUserMessages) { |
|
|
|
|
|
|
|
$warningMessage .= "<strong>$errorUsername</strong>"; |
|
|
|
|
|
|
|
$warningMessage .= '<ul><li>'.implode('</li><li>', $errorUserMessages).'</li></ul>'; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
foreach ($errors as $errorUsername => $errorUserMessages) { |
|
|
|
Display::addFlash( |
|
|
|
$warningMessage .= "<strong>$errorUsername</strong>"; |
|
|
|
Display::return_message(get_lang('FileImportedJustUsersThatAreNotRegistered'), 'warning') |
|
|
|
$warningMessage .= '<ul><li>'.implode('</li><li>', $errorUserMessages).'</li></ul>'; |
|
|
|
); |
|
|
|
|
|
|
|
Display::addFlash(Display::return_message($warningMessage, 'warning', false)); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
Display::addFlash( |
|
|
|
header('Location: '.api_get_self()); |
|
|
|
Display::return_message(get_lang('FileImportedJustUsersThatAreNotRegistered'), 'warning') |
|
|
|
exit; |
|
|
|
); |
|
|
|
} else { |
|
|
|
Display::addFlash( |
|
|
|
Display::addFlash(Display::return_message(get_lang('LinkExpired'), 'warning', false)); |
|
|
|
Display::return_message($warningMessage, 'warning', false) |
|
|
|
header('Location: '.api_get_self()); |
|
|
|
); |
|
|
|
exit; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
header('Location: '.api_get_self()); |
|
|
|
|
|
|
|
exit; |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
Display::display_header($tool_name); |
|
|
|
Display::display_header($tool_name); |
|
|
|
|
|
|
|
|
|
|
|
$token = Security::get_token(); |
|
|
|
$token = Security::get_token(); |
|
|
|
|
|
|
|
|
|
|
|
$form->addHidden('sec_token', $token); |
|
|
|
$form->addHidden('sec_token', $token); |
|
|
|
|