$admin_modules = array(MODULE_ID_COURSEINFO => array('title' => $langCourseInfo, 'link' => 'course_info', 'image' => 'course_info'), MODULE_ID_USERS => array('title' => $langUsers, 'link' => 'user', 'image' => 'users'), MODULE_ID_USAGE => array('title' => $langUsage, 'link' => 'usage', 'image' => 'usage'), MODULE_ID_TOOLADMIN => array('title' => $langToolManagement, 'link' => 'course_tools', 'image' => 'tooladmin'), MODULE_ID_ABUSE_REPORT => array('title' => $langAbuseReports, 'link' => 'abuse_report', 'image' => 'abuse')); // modules which can't be enabled or disabled $static_module_paths = array('user' => MODULE_ID_USERS, 'usage' => MODULE_ID_USAGE, 'course_info' => MODULE_ID_COURSEINFO, 'course_tools' => MODULE_ID_TOOLADMIN, 'units' => MODULE_ID_UNITS, 'weeks' => MODULE_ID_WEEKS, 'search' => MODULE_ID_SEARCH, 'contact' => MODULE_ID_CONTACT, 'comments' => MODULE_ID_COMMENTS, 'rating' => MODULE_ID_RATING, 'sharing' => MODULE_ID_SHARING, 'abuse_report' => MODULE_ID_ABUSE_REPORT, 'notes' => MODULE_ID_NOTES); // the system admin and power users have rights to all courses if ($is_admin or $is_power_user) { $is_course_admin = true; if (isset($course_code)) { $_SESSION['courses'][$course_code] = USER_TEACHER; } } else { $is_course_admin = false; } $is_editor = false; if (isset($_SESSION['courses'])) { if (isset($course_code)) { if (check_editor()) { // check if user is editor of course $is_editor = true; } if (@$_SESSION['courses'][$course_code] == USER_TEACHER or @$_SESSION['courses'][$course_code] == USER_DEPARTMENTMANAGER) { $is_course_admin = true; $is_editor = true; } } } else { unset($status); } // Temporary student view if (isset($_SESSION['student_view'])) { if (isset($course_code) and $_SESSION['student_view'] === $course_code) { $_SESSION['courses'][$course_code] = $courses[$course_code] = USER_STUDENT;
/** * Clone an Exercise */ function duplicate() { global $langCopy2, $course_id; $clone_course_id = $_POST['clone_to_course_id']; if (!check_editor(null, $clone_course_id)) { forbidden(); } $id = $this->id; $exercise = $this->exercise.(($clone_course_id == $course_id)? " ($langCopy2)" : ''); $description = standard_text_escape($this->description); $type = $this->type; $startDate = $this->startDate; $endDate = $this->endDate; $tempSave = $this->tempSave; $timeConstraint = $this->timeConstraint; $attemptsAllowed = $this->attemptsAllowed; $random = $this->random; $active = $this->active; $public = $this->public; $results = $this->results; $score = $this->score; $ip_lock = $this->ip_lock; $password_lock = $this->password_lock; $assign_to_specific = $this->assign_to_specific; $clone_id = Database::get()->query("INSERT INTO `exercise` (course_id, title, description, type, start_date, end_date, temp_save, time_constraint, attempts_allowed, random, active, results, score, ip_lock, password_lock, assign_to_specific) VALUES (?d, ?s, ?s, ?d, ?t, ?t, ?d, ?d, ?d, ?d, ?d, ?d, ?d, ?s, ?s, ?d)", $clone_course_id, $exercise, $description, $type, $startDate, $endDate, $tempSave, $timeConstraint, $attemptsAllowed, $random, $active, $results, $score, $ip_lock, $password_lock, $assign_to_specific)->lastInsertID; if ($assign_to_specific) { Database::get()->query("INSERT INTO `exercise_to_specific` (user_id, group_id, exercise_id) SELECT user_id, group_id, ?d FROM `exercise_to_specific` WHERE exercise_id = ?d", $clone_id, $id)->lastInsertID; } if ($clone_course_id != $course_id) { // copy questions and answers to new course question pool Database::get()->queryFunc("SELECT question_id AS id FROM exercise_with_questions WHERE exercise_id = ?d", function ($question) use ($clone_id, $clone_course_id) { $question_clone_id = Database::get()->query("INSERT INTO exercise_question (course_id, question, description, weight, q_position, type, difficulty, category) SELECT ?d, question, description, weight, q_position, type, difficulty, 0 FROM `exercise_question` WHERE id = ?d", $clone_course_id, $question->id)->lastInsertID; Database::get()->query("INSERT INTO exercise_with_questions (question_id, exercise_id) VALUES (?d, ?d)", $question_clone_id, $clone_id); Database::get()->query("INSERT INTO exercise_answer (question_id, answer, correct, comment, weight, r_position) SELECT ?d, answer, correct, comment, weight, r_position FROM exercise_answer WHERE question_id = ?d", $question_clone_id, $question->id); }, $id); } else { // add question to new exercise Database::get()->query("INSERT INTO `exercise_with_questions` (question_id, exercise_id) SELECT question_id, ?d FROM `exercise_with_questions` WHERE exercise_id = ?d", $clone_id, $id); } }