diff --git a/main/inc/lib/course.lib.php b/main/inc/lib/course.lib.php index 76de7a9c7b..5e3a878283 100644 --- a/main/inc/lib/course.lib.php +++ b/main/inc/lib/course.lib.php @@ -254,12 +254,11 @@ class CourseManager if (!is_array($user_id)) { $user_id = array($user_id); } + if (count($user_id) == 0) { return; } - $table_user = Database::get_main_table(TABLE_MAIN_USER); - if (!empty($session_id)) { $session_id = intval($session_id); } else { @@ -282,77 +281,75 @@ class CourseManager $user_list[] = $user_id; } - $course_info = api_get_course_info($course_code); $course_id = $course_info['real_id']; // Unsubscribe user from all groups in the course. - Database::query("DELETE FROM ".Database::get_course_table(TABLE_GROUP_USER)." WHERE c_id = $course_id AND user_id IN (".$user_ids.")"); - Database::query("DELETE FROM ".Database::get_course_table(TABLE_GROUP_TUTOR)." WHERE c_id = $course_id AND user_id IN (".$user_ids.")"); + $sql = "DELETE FROM ".Database::get_course_table(TABLE_GROUP_USER)." WHERE c_id = $course_id AND user_id IN (".$user_ids.")"; + Database::query($sql); + $sql = "DELETE FROM ".Database::get_course_table(TABLE_GROUP_TUTOR)." WHERE c_id = $course_id AND user_id IN (".$user_ids.")"; + Database::query($sql); // Erase user student publications (works) in the course - by André Boivin - /* - $sqlu = "SELECT * FROM $table_user WHERE user_id IN (".$user_ids.")"; - $resu = Database::query($sqlu); - $username = Database::fetch_array($resu,'ASSOC'); - $userfirstname = $username['firstname']; - $userlastname = $username['lastname']; - $publication_name = $userfirstname.' '.$userlastname ; - - $table_course_user_publication = Database :: get_course_table(TABLE_STUDENT_PUBLICATION); - $sql = "DELETE FROM $table_course_user_publication WHERE c_id = $course_id AND author = '".Database::escape_string($publication_name)."'"; - Database::query($sql);*/ - - foreach ($user_ids as $userId) { - // Getting all work from user - $workList = getWorkPerUser($userId); - if (!empty($workList)) { - foreach ($workList as $work) { - $work = $work['work']; - // Getting user results - if (!empty($work->user_results)) { - foreach ($work->user_results as $workSent) { - deleteWorkItem($workSent['id'], $course_info); + if (!empty($user_list)) { + foreach ($user_list as $userId) { + // Getting all work from user + $workList = getWorkPerUser($userId); + if (!empty($workList)) { + foreach ($workList as $work) { + $work = $work['work']; + // Getting user results + if (!empty($work->user_results)) { + foreach ($work->user_results as $workSent) { + deleteWorkItem($workSent['id'], $course_info); + } } } } } } - // Unsubscribe user from all blogs in the course. Database::query("DELETE FROM ".Database::get_course_table(TABLE_BLOGS_REL_USER)." WHERE c_id = $course_id AND user_id IN (".$user_ids.")"); Database::query("DELETE FROM ".Database::get_course_table(TABLE_BLOGS_TASKS_REL_USER)." WHERE c_id = $course_id AND user_id IN (".$user_ids.")"); - //Deleting users in forum_notification and mailqueue course tables - $sql_delete_forum_notification = "DELETE FROM ".Database::get_course_table(TABLE_FORUM_NOTIFICATION)." WHERE c_id = $course_id AND user_id IN (".$user_ids.")"; - Database::query($sql_delete_forum_notification); + // Deleting users in forum_notification and mailqueue course tables + $sql = "DELETE FROM ".Database::get_course_table(TABLE_FORUM_NOTIFICATION)." + WHERE c_id = $course_id AND user_id IN (".$user_ids.")"; + Database::query($sql); - $sql_delete_mail_queue = "DELETE FROM ".Database::get_course_table(TABLE_FORUM_MAIL_QUEUE)." WHERE c_id = $course_id AND user_id IN (".$user_ids.")"; - Database::query($sql_delete_mail_queue); + $sql = "DELETE FROM ".Database::get_course_table(TABLE_FORUM_MAIL_QUEUE)." + WHERE c_id = $course_id AND user_id IN (".$user_ids.")"; + Database::query($sql); // Unsubscribe user from the course. if (!empty($session_id)) { + // Delete in table session_rel_course_rel_user $sql = "DELETE FROM ".Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER)." - WHERE id_session ='".$session_id."' AND course_code = '".Database::escape_string($course_info['code'])."' AND id_user IN ($user_ids)"; + WHERE id_session ='".$session_id."' AND + course_code = '".Database::escape_string($course_info['code'])."' AND + id_user IN ($user_ids)"; Database::query($sql); - foreach ($user_id as $uid) { + foreach ($user_list as $uid) { // check if a user is register in the session with other course - $sql = "SELECT id_user FROM ".Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER)." WHERE id_session='$session_id' AND id_user='$uid'"; + $sql = "SELECT id_user FROM ".Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER)." + WHERE id_session='$session_id' AND id_user='$uid'"; $rs = Database::query($sql); + if (Database::num_rows($rs) == 0) { // Delete in table session_rel_user - Database::query("DELETE FROM ".Database::get_main_table(TABLE_MAIN_SESSION_USER)." - WHERE id_session ='".$session_id."' AND id_user='$uid' AND relation_type<>".SESSION_RELATION_TYPE_RRHH.""); + $sql = "DELETE FROM ".Database::get_main_table(TABLE_MAIN_SESSION_USER)." + WHERE id_session ='".$session_id."' AND id_user='$uid' AND relation_type<>".SESSION_RELATION_TYPE_RRHH.""; + Database::query($sql); } } // Update the table session $sql = "SELECT COUNT(*) FROM ".Database::get_main_table(TABLE_MAIN_SESSION_USER)." - WHERE id_session = '".$session_id."' AND relation_type<>".SESSION_RELATION_TYPE_RRHH; + WHERE id_session = '".$session_id."' AND relation_type <> ".SESSION_RELATION_TYPE_RRHH; $row = Database::fetch_array(Database::query($sql)); $count = $row[0]; // number of users by session @@ -361,24 +358,32 @@ class CourseManager Database::query($sql); // Update the table session_rel_course - $sql = "SELECT COUNT(*) FROM ".Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER)." WHERE id_session = '$session_id' AND course_code = '$course_code' AND status<>2"; + $sql = "SELECT COUNT(*) FROM ".Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER)." + WHERE id_session = '$session_id' AND course_code = '$course_code' AND status<>2"; $row = Database::fetch_array(@Database::query($sql)); $count = $row[0]; + // number of users by session and course - Database::query("UPDATE ".Database::get_main_table(TABLE_MAIN_SESSION_COURSE)." SET nbr_users = '$count' WHERE id_session = '$session_id' AND course_code = '$course_code'"); + $sql = "UPDATE ".Database::get_main_table(TABLE_MAIN_SESSION_COURSE)." + SET nbr_users = '$count' + WHERE id_session = '$session_id' AND course_code = '$course_code'"; + Database::query($sql); } else { $sql = "DELETE FROM ".Database::get_main_table(TABLE_MAIN_COURSE_USER)." - WHERE user_id IN (".$user_ids.") AND relation_type<>".COURSE_RELATION_TYPE_RRHH." AND course_code = '".$course_code."'"; + WHERE + user_id IN (".$user_ids.") AND + relation_type<>".COURSE_RELATION_TYPE_RRHH." AND + course_code = '".$course_code."'"; Database::query($sql); // add event to system log $user_id = api_get_user_id(); event_system(LOG_UNSUBSCRIBE_USER_FROM_COURSE, LOG_COURSE_CODE, $course_code, api_get_utc_datetime(), $user_id); - foreach ($user_list as $user_id_to_delete) { - $user_info = api_get_user_info($user_id_to_delete); - event_system(LOG_UNSUBSCRIBE_USER_FROM_COURSE, LOG_USER_OBJECT, $user_info, api_get_utc_datetime(), $user_id); + foreach ($user_list as $userId) { + $userInfo = api_get_user_info($userId); + event_system(LOG_UNSUBSCRIBE_USER_FROM_COURSE, LOG_USER_OBJECT, $userInfo, api_get_utc_datetime(), $user_id); } } }