/** * 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; }
$inserted_id = Database::insert_id(); $sql_add_publication = "UPDATE {$work_table} SET has_properties = {$inserted_id}, view_properties = 0 WHERE c_id = {$course_id} AND id = {$id}"; Database::query($sql_add_publication); } if (!empty($_POST['category_id'])) { if (isset($_POST['make_calification']) && $_POST['make_calification'] == 1) { require_once api_get_path(SYS_CODE_PATH) . 'gradebook/lib/be/gradebookitem.class.php'; require_once api_get_path(SYS_CODE_PATH) . 'gradebook/lib/be/evaluation.class.php'; require_once api_get_path(SYS_CODE_PATH) . 'gradebook/lib/be/abstractlink.class.php'; require_once api_get_path(SYS_CODE_PATH) . 'gradebook/lib/gradebook_functions.inc.php'; $resource_name = $_POST['new_dir']; add_resource_to_course_gradebook($_POST['category_id'], api_get_course_id(), 3, $id, $resource_name, $_POST['weight'], $_POST['qualification_value'], $_POST['description'], 1, api_get_session_id()); } } if (api_get_course_setting('email_alert_students_on_new_homework') == 1) { send_email_on_homework_creation(api_get_course_id()); } } else { Display::display_error_message(get_lang('CannotCreateDir')); } } else { $form->display(); } } case 'make_visible': case 'delete': case 'make_invisible': case 'move': case 'move_to': case 'list': /* Move file command */
/** * 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; }