Fixing delete student works when removing a user from a course see BT#7027

1.9.x
Julio Montoya 13 years ago
parent e45738d72c
commit b690fcb75a
  1. 95
      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);
}
}
}

Loading…
Cancel
Save