Example #1
0
 /**
  * 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);
         }
     }
 }
Example #2
0
        api_not_allowed();
    }
    $interbreadcrumb[] = array('url' => '../group/group.php', 'name' => get_lang('Groups'));
    $interbreadcrumb[] = array('url' => '../group/group_space.php?gidReq=' . $group_id, 'name' => get_lang('GroupSpace') . ' ' . $group_properties['name']);
} else {
    if (!api_is_allowed_to_edit(false, true)) {
        api_not_allowed(true);
    }
}
$interbreadcrumb[] = array('url' => api_get_path(WEB_CODE_PATH) . 'work/work.php?' . api_get_cidreq(), 'name' => get_lang('StudentPublications'));
$interbreadcrumb[] = array('url' => '#', 'name' => $userInfo['complete_name']);
Display::display_header(null);
echo '<div class="actions">';
echo '<a href="' . api_get_path(WEB_CODE_PATH) . 'work/work.php?' . api_get_cidreq() . '&origin=' . $origin . '&gradebook=' . $gradebook . '">' . Display::return_icon('back.png', get_lang('BackToWorksList'), '', ICON_SIZE_MEDIUM) . '</a>';
echo '</div>';
$workPerUser = getWorkPerUser($studentId);
$table = new HTML_Table(array('class' => 'data_table'));
$column = 0;
$row = 0;
$headers = array(get_lang('Title'), get_lang('HandedOutDate'), get_lang('HandOutDateLimit'), get_lang('Score'), get_lang('Actions'));
foreach ($headers as $header) {
    $table->setHeaderContents($row, $column, $header);
    $column++;
}
$row++;
$column = 0;
foreach ($workPerUser as $work) {
    $work = $work['work'];
    $scoreWeight = intval($work->qualification) == 0 ? null : $work->qualification;
    $workId = $work->id;
    $workExtraData = get_work_assignment_by_id($workId);
Example #3
0
/**
 * Downloads all user files per user
 * @param int $userId
 * @param array $courseInfo
 * @return bool
 */
function downloadAllFilesPerUser($userId, $courseInfo)
{
    $userInfo = api_get_user_info($userId);

    if (empty($userInfo) || empty($courseInfo)) {
        return false;
    }

    require_once api_get_path(LIBRARY_PATH).'pclzip/pclzip.lib.php';
    $tempZipFile = api_get_path(SYS_ARCHIVE_PATH).api_get_unique_id().".zip";
    $coursePath = api_get_path(SYS_COURSE_PATH).$courseInfo['path'].'/work/';

    $zip  = new PclZip($tempZipFile);

    $workPerUser = getWorkPerUser($userId);

    if (!empty($workPerUser)) {
        $files = array();
        foreach ($workPerUser as $work) {
            $work = $work['work'];
            foreach ($work->user_results as $userResult) {
                if (empty($userResult['url']) || empty($userResult['contains_file'])) {
                    continue;
                }
                $data = getFileContents($userResult['id'], $courseInfo);
                if (!empty($data) && isset($data['path'])) {
                    $files[basename($data['path'])] = array(
                        'title' => $data['title'],
                        'path' => $data['path']
                    );
                }
            }
        }

        if (!empty($files)) {
            Session::write('files', $files);
            foreach ($files as $data) {
                $zip->add(
                    $data['path'],
                    PCLZIP_OPT_REMOVE_PATH,
                    $coursePath,
                    PCLZIP_CB_PRE_ADD,
                    'preAddAllWorkStudentCallback'
                );
            }
        }

        // Start download of created file
        $name = basename(replace_dangerous_char($userInfo['complete_name'])).'.zip';
        event_download($name.'.zip (folder)');
        if (Security::check_abs_path($tempZipFile, api_get_path(SYS_ARCHIVE_PATH))) {
            DocumentManager::file_send_for_download($tempZipFile, true, $name);
            @unlink($tempZipFile);
            exit;
        }
    }
    exit;
}