Example #1
0
/**
 * Creates a new task (directory) in the assignment tool
 * @param array $params
 * @param int $user_id
 * @param array $courseInfo
 * @param int $group_id
 * @param int $session_id
 * @return bool|int
 * @note $params can have the following elements, but should at least have the 2 first ones: (
 *       'new_dir' => 'some-name',
 *       'description' => 'some-desc',
 *       'qualification' => 20 (e.g. 20),
 *       'weight' => 50 (percentage) to add to gradebook (e.g. 50),
 *       'allow_text_assignment' => 0/1/2,
 * @todo Rename createAssignment or createWork, or something like that
 */
function addDir($params, $user_id, $courseInfo, $group_id, $session_id)
{
    $work_table = Database :: get_course_table(TABLE_STUDENT_PUBLICATION);

    $user_id = intval($user_id);
    $group_id = intval($group_id);
    $session_id = intval($session_id);

    $base_work_dir = api_get_path(SYS_COURSE_PATH).$courseInfo['path'].'/work';
    $course_id = $courseInfo['real_id'];

    $directory = replace_dangerous_char($params['new_dir']);
    $directory = disable_dangerous_file($directory);
    $created_dir = create_unexisting_work_directory($base_work_dir, $directory);

    if (!empty($created_dir)) {
        $dirName = '/'.$created_dir;
        $today = api_get_utc_datetime();
        $sql = "INSERT INTO " . $work_table . " SET
                c_id                = $course_id,
                url                 = '".Database::escape_string($dirName)."',
                title               = '".Database::escape_string($params['new_dir'])."',
                description         = '".Database::escape_string($params['description'])."',
                author              = '',
                active              = '1',
                accepted            = '1',
                filetype            = 'folder',
                post_group_id       = '".$group_id."',
                sent_date           = '".$today."',
                qualification       = '".(($params['qualification'] != '') ? Database::escape_string($params['qualification']) : '') ."',
                parent_id           = '',
                qualificator_id     = '',
                date_of_qualification   = '0000-00-00 00:00:00',
                weight              = '".Database::escape_string($params['weight'])."',
                session_id          = '".$session_id."',
                allow_text_assignment = '".Database::escape_string($params['allow_text_assignment'])."',
                contains_file       = 0,
                user_id             = '".$user_id."'";

        Database::query($sql);

        // Add the directory
        $id = Database::insert_id();

        if ($id) {
            // Folder created
            api_item_property_update(
                $courseInfo,
                'work',
                $id,
                'DirectoryCreated',
                $user_id,
                $group_id
            );
            updatePublicationAssignment($id, $params, $courseInfo, $group_id);

            if (api_get_course_setting('email_alert_students_on_new_homework') == 1) {
                send_email_on_homework_creation(api_get_course_id());
            }
            return $id;
        }
    }
    return false;
}
Example #2
0
if ($form->validate()) {
    $params = $form->exportValues();
    $workId = $params['work_id'];
    $editCheck = false;
    $workData = get_work_data_by_id($workId);

    if (!empty($workData)) {
        $editCheck = true;
    } else {
        $editCheck = true;
    }

    if ($editCheck) {
        updateWork($workId, $params, $courseInfo, $sessionId);
        updatePublicationAssignment($workId, $params, $courseInfo, $groupId);
        updateDirName($workData, $params['new_dir']);

        $currentUrl = api_get_path(WEB_CODE_PATH).'work/edit_work.php?id='.$workId.'&'.api_get_cidreq();
        Session::write('message', Display::return_message(get_lang('FolderEdited'), 'success'));
        header('Location: '.$currentUrl);
        exit;

    } else {
        Session::write('message', Display::return_message(get_lang('FileExists'), 'warning'));
    }
}

Display::display_header();

$message = Session::read('message');
 /**
  * Restore Works
  * @param int $sessionId
  */
 public function restore_works($sessionId = 0)
 {
     require_once api_get_path(SYS_CODE_PATH) . 'work/work.lib.php';
     if ($this->course->has_resources(RESOURCE_WORK)) {
         $table_work_assignment = Database::get_course_table(TABLE_STUDENT_PUBLICATION_ASSIGNMENT);
         $resources = $this->course->resources;
         foreach ($resources[RESOURCE_WORK] as $obj) {
             // check resources inside html from ckeditor tool and copy correct urls into recipient course
             $obj->params['description'] = DocumentManager::replace_urls_inside_content_html_from_copy_course($obj->params['description'], $this->course->code, $this->course->destination_path, $this->course->backup_path, $this->course->info['path']);
             $id_work = $obj->params['id'];
             $obj->params['id'] = null;
             $obj->params['c_id'] = $this->destination_course_info['real_id'];
             // re-create dir
             // @todo check security against injection of dir in crafted course backup here!
             $path = $obj->params['url'];
             $path = '/' . str_replace('/', '', substr($path, 1));
             $workData = array();
             switch ($this->file_option) {
                 case FILE_SKIP:
                     $workData = get_work_data_by_path($path, $this->destination_course_info['real_id']);
                     if (!empty($workData)) {
                         continue;
                     }
                 case FILE_OVERWRITE:
                     // Creating folder.
                     $workData = get_work_data_by_path($path, $this->destination_course_info['real_id']);
                 case FILE_RENAME:
                     $obj->params['new_dir'] = $obj->params['title'];
                     if (!empty($this->course_origin_id)) {
                         $sql = 'SELECT * FROM ' . $table_work_assignment . '
                                 WHERE
                                     c_id = ' . $this->course_origin_id . ' AND
                                     publication_id = ' . $id_work;
                         $result = Database::query($sql);
                         $cant = Database::num_rows($result);
                         if ($cant > 0) {
                             $row = Database::fetch_assoc($result);
                         }
                         //$obj->params['qualification'] = empty($row['enable_qualification']) ? true : false;
                         $obj->params['enableExpiryDate'] = $row['expires_on'] == '0000-00-00 00:00:00' ? false : true;
                         $obj->params['enableEndDate'] = $row['ends_on'] == '0000-00-00 00:00:00' ? false : true;
                         $obj->params['expires_on'] = $row['expires_on'];
                         $obj->params['ends_on'] = $row['ends_on'];
                         $obj->params['enable_qualification'] = $row['enable_qualification'];
                         $obj->params['add_to_calendar'] = !empty($row['add_to_calendar']) ? 1 : 0;
                         if (empty($workData)) {
                             addDir($obj->params, api_get_user_id(), $this->destination_course_info, 0, $sessionId);
                         } else {
                             $workId = $workData['id'];
                             updateWork($workId, $obj->params, $this->destination_course_info, $sessionId);
                             updatePublicationAssignment($workId, $obj->params, $this->destination_course_info, 0);
                         }
                     }
                     break;
             }
         }
     }
 }
Example #4
0
/**
 * Creates a new task (directory) in the assignment tool
 * @param array $params
 * @param int $user_id
 * @param array $courseInfo
 * @param int $group_id
 * @param int $session_id
 * @return bool|int
 * @note $params can have the following elements, but should at least have the 2 first ones: (
 *       'new_dir' => 'some-name',
 *       'description' => 'some-desc',
 *       'qualification' => 20 (e.g. 20),
 *       'weight' => 50 (percentage) to add to gradebook (e.g. 50),
 *       'allow_text_assignment' => 0/1/2,
 * @todo Rename createAssignment or createWork, or something like that
 */
function addDir($formValues, $user_id, $courseInfo, $group_id, $session_id)
{
    $work_table = Database::get_course_table(TABLE_STUDENT_PUBLICATION);
    $user_id = intval($user_id);
    $group_id = intval($group_id);
    $session_id = intval($session_id);
    $base_work_dir = api_get_path(SYS_COURSE_PATH) . $courseInfo['path'] . '/work';
    $course_id = $courseInfo['real_id'];
    $directory = api_replace_dangerous_char($formValues['new_dir']);
    $directory = disable_dangerous_file($directory);
    $created_dir = create_unexisting_work_directory($base_work_dir, $directory);
    if (!empty($created_dir)) {
        $dirName = '/' . $created_dir;
        $today = api_get_utc_datetime();
        $params = ['c_id' => $course_id, 'url' => $dirName, 'title' => $formValues['new_dir'], 'description' => $formValues['description'], 'author' => '', 'active' => '1', 'accepted' => '1', 'filetype' => 'folder', 'post_group_id' => $group_id, 'sent_date' => $today, 'qualification' => $formValues['qualification'] != '' ? $formValues['qualification'] : '', 'parent_id' => '', 'qualificator_id' => '', 'weight' => $formValues['weight'], 'session_id' => $session_id, 'allow_text_assignment' => $formValues['allow_text_assignment'], 'contains_file' => 0, 'user_id' => $user_id];
        $id = Database::insert($work_table, $params);
        if ($id) {
            $sql = "UPDATE {$work_table} SET id = iid WHERE iid = {$id}";
            Database::query($sql);
            // Folder created
            api_item_property_update($courseInfo, 'work', $id, 'DirectoryCreated', $user_id, $group_id);
            updatePublicationAssignment($id, $formValues, $courseInfo, $group_id);
            if (api_get_course_setting('email_alert_students_on_new_homework') == 1) {
                send_email_on_homework_creation($course_id, $session_id, $id);
            }
            return $id;
        }
    }
    return false;
}