"user.php", "name" => get_lang("Users")]; $interbreadcrumb[] = ["url" => "#", "name" => get_lang("Import users list")]; $form = new FormValidator('user_import', 'post', 'user_import.php'); $form->addElement('header', $tool_name); $form->addElement('file', 'import_file', get_lang('CSV file import location')); $form->addElement('checkbox', 'unsubscribe_users', null, get_lang('Unsubscribe users already added')); $form->addElement('hidden', 'type', $userType); $form->addButtonImport(get_lang('Import')); $course_code = api_get_course_id(); if (empty($course_code)) { api_not_allowed(true); } $session_id = api_get_session_id(); $message = ''; $user_to_show = []; $type = ''; if ($form->validate()) { if (isset($_FILES['import_file']['size']) && $_FILES['import_file']['size'] !== 0) { $unsubscribe_users = isset($_POST['unsubscribe_users']) ? true : false; //@todo : csvToArray deprecated $users = Import::csvToArray($_FILES['import_file']['tmp_name']); $invalid_users = []; $clean_users = []; if (!empty($users)) { $empty_line = 0; foreach ($users as $user_data) { $user_id = null; $user_data = array_change_key_case($user_data, CASE_LOWER); // Checking "username" field if (isset($user_data['username']) && !empty($user_data['username'])) { $user_id = UserManager::get_user_id_from_username($user_data['username']); } // Checking "id" field if (isset($user_data['id']) && !empty($user_data['id'])) { $user_id = $user_data['id']; } if (UserManager::is_user_id_valid($user_id)) { $clean_users[] = $user_id; } else { $invalid_users[] = $user_data; } } if (empty($invalid_users)) { $type = 'confirmation'; $message = get_lang('List of users subscribed to course'); if ($unsubscribe_users) { $current_user_list = CourseManager::get_user_list_from_course_code( $course_code, $session_id, null, null, $userType ); if (!empty($current_user_list)) { $user_ids = []; foreach ($current_user_list as $user) { if ($userType == COURSEMANAGER) { if (CourseManager::is_course_teacher($user['user_id'], $course_code)) { $user_ids[] = $user['user_id']; } } else { if (!CourseManager::is_course_teacher($user['user_id'], $course_code)) { $user_ids[] = $user['user_id']; } } } CourseManager::unsubscribe_user($user_ids, $course_code, $session_id); } } foreach ($clean_users as $userId) { $userInfo = api_get_user_info($userId); CourseManager::subscribeUser($userId, $course_code, $userType, $session_id); if (empty($session_id)) { //just to make sure if (CourseManager::is_user_subscribed_in_course($userId, $course_code)) { $user_to_show[] = $userInfo['complete_name']; } } else { //just to make sure if (CourseManager::is_user_subscribed_in_course($userId, $course_code, true, $session_id)) { $user_to_show[] = $userInfo['complete_name']; } } } } else { $message = get_lang('Use user\'s IDs from the file to subscribe them'); $type = 'warning'; foreach ($invalid_users as $invalid_user) { $user_to_show[] = $invalid_user; } } } } } Display::display_header(); if (!empty($message)) { if (!empty($user_to_show)) { $userMessage = null; foreach ($user_to_show as $user) { if (!is_array($user)) { $user = [$user]; } $user = array_filter($user); $userMessage .= implode(', ', $user)."
"; } if ($type == 'confirmation') { echo Display::return_message($message.':
'.$userMessage, 'confirm', false); } else { echo Display::return_message($message.':
'.$userMessage, 'warning', false); } } else { $empty_line_msg = ($empty_line == 0) ? get_lang('Errors when importing file') : get_lang('Errors when importing file').': '.get_lang('There are empty lines in the header of selected file'); echo Display::return_message($empty_line_msg, 'error'); } } $form->display(); echo get_lang('The CSV file must look like this'); echo '
    username
    jdoe
    jmontoya
'; echo get_lang('or'); echo '
    id
    23
    1337
'; Display::display_footer();