user_import.php 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. <?php
  2. /* For licensing terms, see /license.txt */
  3. $language_file = array('registration', 'admin', 'userInfo');
  4. require_once '../inc/global.inc.php';
  5. require_once api_get_path(LIBRARY_PATH).'import.lib.php';
  6. $this_section = SECTION_COURSES;
  7. // notice for unauthorized people.
  8. api_protect_course_script(true);
  9. $tool_name = get_lang('ImportUsersToACourse');
  10. $interbreadcrumb[] = array ("url" => "user.php", "name" => get_lang("Users"));
  11. $interbreadcrumb[] = array ("url" => "#", "name" => get_lang("ImportUsersToACourse"));
  12. $form = new FormValidator('user_import','post','user_import.php');
  13. $form->addElement('header', $tool_name);
  14. $form->addElement('file', 'import_file', get_lang('ImportCSVFileLocation'));
  15. $form->addElement('checkbox', 'unsubscribe_users', null, get_lang('UnsubscribeUsersAlreadyAddedInCourse'));
  16. $form->addElement('style_submit_button', 'submit', get_lang('Import'), 'class="save"');
  17. $course_code = api_get_course_id();
  18. if (empty($course_code)) {
  19. api_not_allowed(true);
  20. }
  21. $session_id = api_get_session_id();
  22. $message = '';
  23. $user_to_show = array();
  24. $type = '';
  25. if ($form->validate()) {
  26. if (isset($_FILES['import_file']['size']) && $_FILES['import_file']['size'] !== 0) {
  27. $unsubscribe_users = isset($_POST['unsubscribe_users']) ? true : false;
  28. $users = Import::csv_to_array($_FILES['import_file']['tmp_name']);
  29. $invalid_users = array();
  30. $clean_users = array();
  31. if (!empty($users)) {
  32. foreach ($users as $user_data) {
  33. $username = $user_data['username'];
  34. $user_id = UserManager::get_user_id_from_username($username);
  35. $user_info = api_get_user_info($user_id);
  36. if ($user_id && !empty($user_info)) {
  37. $clean_users[$user_id] = $user_info;
  38. } else {
  39. $invalid_users[] = $user_id;
  40. }
  41. }
  42. if (empty($invalid_users)) {
  43. $type = 'confirmation';
  44. $message = get_lang('ListOfUsersSubscribedToCourse');
  45. if ($unsubscribe_users) {
  46. $current_user_list = CourseManager::get_user_list_from_course_code($course_code, $session_id);
  47. if (!empty($current_user_list)) {
  48. $user_ids = array();
  49. foreach ($current_user_list as $user) {
  50. $user_ids[]= $user['user_id'];
  51. }
  52. CourseManager::unsubscribe_user($user_ids, $course_code, $session_id);
  53. }
  54. }
  55. foreach ($clean_users as $user_info) {
  56. $user_id = $user_info['user_id'];
  57. CourseManager :: subscribe_user($user_id, $course_code, STUDENT, $session_id);
  58. if (empty($session_id)) {
  59. //just to make sure
  60. if (CourseManager :: is_user_subscribed_in_course($user_id, $course_code)) {
  61. $user_to_show[]= $user_info['complete_name'];
  62. }
  63. } else {
  64. //just to make sure
  65. if (CourseManager :: is_user_subscribed_in_course($user_id, $course_code, true, $session_id)) {
  66. $user_to_show[]= $user_info['complete_name'];
  67. }
  68. }
  69. }
  70. } else {
  71. $message = get_lang('CheckUsersWithId');
  72. $type = 'warning';
  73. foreach ($invalid_users as $invalid_user) {
  74. $user_to_show[]= $invalid_user;
  75. }
  76. }
  77. }
  78. }
  79. }
  80. Display::display_header();
  81. if (!empty($message)) {
  82. if (!empty($user_to_show)) {
  83. if ($type == 'confirmation') {
  84. Display::display_confirmation_message($message.': <br />'.implode(', ', $user_to_show), false);
  85. } else {
  86. Display::display_warning_message($message.': '.implode(', ', $user_to_show));
  87. }
  88. } else {
  89. Display::display_error_message(get_lang('ErrorsWhenImportingFile'));
  90. }
  91. }
  92. $form->display();
  93. echo get_lang('CSVMustLookLike');
  94. echo '<blockquote><pre>
  95. username;
  96. jdoe;
  97. jmontoya;
  98. </pre>
  99. </blockquote>';
  100. Display::display_footer();