/** * Unsubscribe one or more users from a course * * @param mixed user_id or an array with user ids * @param string course code * @param int session id * @assert ('', '') === false * */ public static function unsubscribe_user($user_id, $course_code, $session_id = 0) { if (!is_array($user_id)) { $user_id = array($user_id); } if (count($user_id) == 0) { return; } if (!empty($session_id)) { $session_id = intval($session_id); } else { $session_id = api_get_session_id(); } $user_list = array(); // Cleaning the $user_id variable if (is_array($user_id)) { $new_user_id_list = array(); foreach ($user_id as $my_user_id) { $new_user_id_list[] = intval($my_user_id); } $new_user_id_list = array_filter($new_user_id_list); $user_list = $new_user_id_list; $user_ids = implode(',', $new_user_id_list); } else { $user_ids = intval($user_id); $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. $sql = "DELETE FROM " . Database::get_course_table(TABLE_GROUP_USER) . "\n WHERE c_id = {$course_id} AND user_id IN (" . $user_ids . ")"; Database::query($sql); $sql = "DELETE FROM " . Database::get_course_table(TABLE_GROUP_TUTOR) . "\n 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 if (!empty($user_list)) { require_once api_get_path(SYS_CODE_PATH) . 'work/work.lib.php'; 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 FROM " . Database::get_course_table(TABLE_FORUM_NOTIFICATION) . "\n WHERE c_id = {$course_id} AND user_id IN (" . $user_ids . ")"; Database::query($sql); $sql = "DELETE FROM " . Database::get_course_table(TABLE_FORUM_MAIL_QUEUE) . "\n 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) . "\n WHERE\n session_id ='" . $session_id . "' AND\n c_id = '" . $course_id . "' AND\n user_id IN ({$user_ids})"; Database::query($sql); foreach ($user_list as $uid) { // check if a user is register in the session with other course $sql = "SELECT user_id FROM " . Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER) . "\n WHERE session_id='{$session_id}' AND user_id='{$uid}'"; $rs = Database::query($sql); if (Database::num_rows($rs) == 0) { // Delete in table session_rel_user $sql = "DELETE FROM " . Database::get_main_table(TABLE_MAIN_SESSION_USER) . "\n WHERE\n session_id ='" . $session_id . "' AND\n user_id = '{$uid}' AND\n 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) . "\n WHERE session_id = '" . $session_id . "' AND relation_type <> " . SESSION_RELATION_TYPE_RRHH; $row = Database::fetch_array(Database::query($sql)); $count = $row[0]; // number of users by session $sql = "UPDATE " . Database::get_main_table(TABLE_MAIN_SESSION) . " SET nbr_users = '{$count}'\n WHERE id = '" . $session_id . "'"; Database::query($sql); // Update the table session_rel_course $sql = "SELECT COUNT(*) FROM " . Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER) . "\n WHERE session_id = '{$session_id}' AND c_id = '{$course_id}' AND status<>2"; $row = Database::fetch_array(@Database::query($sql)); $count = $row[0]; // number of users by session and course $sql = "UPDATE " . Database::get_main_table(TABLE_MAIN_SESSION_COURSE) . "\n SET nbr_users = '{$count}'\n WHERE session_id = '{$session_id}' AND c_id = '{$course_id}'"; Database::query($sql); } else { $sql = "DELETE FROM " . Database::get_main_table(TABLE_MAIN_COURSE_USER) . "\n WHERE\n user_id IN (" . $user_ids . ") AND\n relation_type<>" . COURSE_RELATION_TYPE_RRHH . " AND\n c_id = '" . $course_id . "'"; Database::query($sql); // add event to system log $user_id = api_get_user_id(); Event::addEvent(LOG_UNSUBSCRIBE_USER_FROM_COURSE, LOG_COURSE_CODE, $course_code, api_get_utc_datetime(), $user_id); foreach ($user_list as $userId) { $userInfo = api_get_user_info($userId); Event::addEvent(LOG_UNSUBSCRIBE_USER_FROM_COURSE, LOG_USER_OBJECT, $userInfo, api_get_utc_datetime(), $user_id); } } }
$error_message = Session::read('error_message'); if (!empty($error_message)) { echo $error_message; Session::erase('error_message'); } if (!empty($my_folder_data['description'])) { echo '<p><div><strong>'.get_lang('Description').':</strong><p>'.Security::remove_XSS($my_folder_data['description']).'</p></div></p>'; } $action = isset($_REQUEST['action']) ? $_REQUEST['action'] : null; $item_id = isset($_REQUEST['item_id']) ? intval($_REQUEST['item_id']) : null; switch ($action) { case 'delete': $fileDeleted = deleteWorkItem($item_id, $courseInfo); if (!$fileDeleted) { Display::display_error_message(get_lang('YouAreNotAllowedToDeleteThisDocument')); } else { Display::display_confirmation_message(get_lang('TheDocumentHasBeenDeleted')); } break; } $result = getWorkDateValidationStatus($work_data); echo $result['message']; $check_qualification = intval($my_folder_data['qualification']); if (!empty($work_data['enable_qualification']) && !empty($check_qualification)) { $type = 'simple';
/** * Delete all work by student * @param int $userId * @param array $courseInfo * @return array return deleted items */ function deleteAllWorkPerUser($userId, $courseInfo) { $deletedItems = array(); $workPerUser = getWorkPerUser($userId); if (!empty($workPerUser)) { foreach ($workPerUser as $work) { $work = $work['work']; foreach ($work->user_results as $userResult) { $result = deleteWorkItem($userResult['id'], $courseInfo); if ($result) { $deletedItems[] = $userResult; } } } } return $deletedItems; }