weekly release 4.5dev
[moodle.git] / mod / quiz / overridedelete.php
blobaa42d2c7a89c28159023ff679d67f0e9b20227ce
1 <?php
2 // This file is part of Moodle - http://moodle.org/
3 //
4 // Moodle is free software: you can redistribute it and/or modify
5 // it under the terms of the GNU General Public License as published by
6 // the Free Software Foundation, either version 3 of the License, or
7 // (at your option) any later version.
8 //
9 // Moodle is distributed in the hope that it will be useful,
10 // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 // GNU General Public License for more details.
14 // You should have received a copy of the GNU General Public License
15 // along with Moodle. If not, see <http://www.gnu.org/licenses/>.
17 /**
18 * This page handles deleting quiz overrides
20 * @package mod_quiz
21 * @copyright 2010 Matt Petro
22 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
25 use mod_quiz\form\edit_override_form;
26 use mod_quiz\quiz_settings;
28 require_once(__DIR__ . '/../../config.php');
29 require_once($CFG->dirroot.'/mod/quiz/lib.php');
30 require_once($CFG->dirroot.'/mod/quiz/locallib.php');
32 $overrideid = required_param('id', PARAM_INT);
33 $confirm = optional_param('confirm', false, PARAM_BOOL);
35 $override = $DB->get_record('quiz_overrides', ['id' => $overrideid], '*', MUST_EXIST);
36 $quizobj = quiz_settings::create($override->quiz);
37 $quiz = $quizobj->get_quiz();
38 $cm = $quizobj->get_cm();
39 $course = $quizobj->get_course();
40 $context = $quizobj->get_context();
41 $manager = $quizobj->get_override_manager();
43 require_login($course, false, $cm);
45 // Check the user has the required capabilities to modify an override.
46 $manager->require_manage_capability();
48 if ($override->groupid) {
49 if (!groups_group_visible($override->groupid, $course, $cm)) {
50 throw new \moodle_exception('invalidoverrideid', 'quiz');
52 } else {
53 if (!groups_user_groups_visible($course, $override->userid, $cm)) {
54 throw new \moodle_exception('invalidoverrideid', 'quiz');
58 $url = new moodle_url('/mod/quiz/overridedelete.php', ['id' => $override->id]);
59 $confirmurl = new moodle_url($url, ['id' => $override->id, 'confirm' => 1]);
60 $cancelurl = new moodle_url('/mod/quiz/overrides.php', ['cmid' => $cm->id]);
62 if (!empty($override->userid)) {
63 $cancelurl->param('mode', 'user');
66 // If confirm is set (PARAM_BOOL) then we have confirmation of intention to delete.
67 if ($confirm) {
68 require_sesskey();
69 $manager->delete_overrides(overrides: [$override]);
70 redirect($cancelurl);
73 // Prepare the page to show the confirmation form.
74 $stroverride = get_string('override', 'quiz');
75 $title = get_string('deletecheck', null, $stroverride);
77 $PAGE->set_url($url);
78 $PAGE->set_pagelayout('admin');
79 $PAGE->add_body_class('limitedwidth');
80 $PAGE->navbar->add($title);
81 $PAGE->set_title($title);
82 $PAGE->set_heading($course->fullname);
83 $PAGE->activityheader->set_attrs([
84 "title" => format_string($quiz->name, true, ['context' => $context]),
85 "description" => "",
86 "hidecompletion" => true
87 ]);
88 echo $OUTPUT->header();
90 if ($override->groupid) {
91 $group = $DB->get_record('groups', ['id' => $override->groupid], 'id, name');
92 $confirmstr = get_string("overridedeletegroupsure", "quiz", format_string($group->name, true, ['context' => $context]));
93 } else {
94 $user = $DB->get_record('user', ['id' => $override->userid]);
95 profile_load_custom_fields($user);
97 $confirmstr = get_string('overridedeleteusersure', 'quiz',
98 edit_override_form::display_user_name($user,
99 \core_user\fields::get_identity_fields($context)));
102 echo $OUTPUT->confirm($confirmstr, $confirmurl, $cancelurl);
104 echo $OUTPUT->footer();