|
18 | 18 | * Performs actions on the capquiz
|
19 | 19 | *
|
20 | 20 | * @package mod_capquiz
|
| 21 | + * @author Sebastian Gundersen <sebastian@sgundersen.com> |
21 | 22 | * @author Aleksander Skrede <aleksander.l.skrede@ntnu.no>
|
22 |
| - * @copyright 2018 NTNU |
| 23 | + * @copyright 2024 Norwegian University of Science and Technology (NTNU) |
23 | 24 | * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
24 | 25 | */
|
25 | 26 |
|
26 |
| -namespace mod_capquiz; |
| 27 | +use mod_capquiz\api; |
| 28 | +use mod_capquiz\capquiz; |
| 29 | +use mod_capquiz\capquiz_question; |
| 30 | +use mod_capquiz\capquiz_question_list; |
| 31 | + |
| 32 | +require_once ("../../config.php"); |
| 33 | + |
| 34 | +global $CFG, $DB, $PAGE; |
27 | 35 |
|
28 |
| -require_once("../../config.php"); |
29 | 36 | require_once($CFG->libdir . '/formslib.php');
|
30 | 37 | require_once($CFG->dirroot . '/mod/capquiz/lib.php');
|
31 |
| -require_once($CFG->dirroot . '/mod/capquiz/classes/capquiz_action_performer.php'); |
32 | 38 |
|
33 |
| -$cmid = capquiz_urls::require_course_module_id_param(); |
| 39 | +$cmid = required_param('id', PARAM_INT); |
34 | 40 | $cm = get_coursemodule_from_id('capquiz', $cmid, 0, false, MUST_EXIST);
|
35 | 41 | require_login($cm->course, false, $cm);
|
36 | 42 |
|
37 |
| -$context = \context_module::instance($cmid); |
| 43 | +$context = context_module::instance($cmid); |
38 | 44 | require_capability('mod/capquiz:instructor', $context);
|
39 |
| - |
40 | 45 | $action = required_param('action', PARAM_TEXT);
|
41 | 46 |
|
42 |
| -$capquiz = new capquiz($cmid); |
43 |
| -capquiz_urls::set_page_url($capquiz, capquiz_urls::$urlasync); |
44 |
| -capquiz_action_performer::perform($action, $capquiz); |
| 47 | +$PAGE->set_context($context); |
| 48 | +$PAGE->set_cm($cm); |
| 49 | +$PAGE->set_url(new moodle_url('/mod/capquiz/action.php')); |
| 50 | + |
| 51 | +$capquiz = new capquiz($cm->instance); |
| 52 | + |
| 53 | +switch ($action) { |
| 54 | + case 'remove-question': |
| 55 | + $questionid = required_param('questionid', PARAM_INT); |
| 56 | + $qlist = capquiz_question_list::get_record(['capquiz_id' => $capquiz->get('id')]); |
| 57 | + if ($qlist) { |
| 58 | + $DB->delete_records('capquiz_question', ['id' => $questionid, 'question_list_id' => $qlist->get('id')]); |
| 59 | + } |
| 60 | + exit; |
| 61 | + |
| 62 | + case 'publish-question-list': |
| 63 | + $qlist = capquiz_question_list::get_record(['capquiz_id' => $capquiz->get('id')]); |
| 64 | + if (capquiz_question::count_records(['question_list_id' => $qlist->get('id')])) { |
| 65 | + $capquiz->set('published', 1); |
| 66 | + $capquiz->save(); |
| 67 | + } |
| 68 | + break; |
| 69 | + |
| 70 | + case 'set-question-list': |
| 71 | + $qlistid = required_param('question-list-id', PARAM_INT); |
| 72 | + api::copy_question_list($qlistid, $capquiz->get('id')); |
| 73 | + break; |
| 74 | + |
| 75 | + case 'create-question-list-template': |
| 76 | + $qlist = capquiz_question_list::get_record(['capquiz_id' => $capquiz->get('id')]); |
| 77 | + api::copy_question_list($qlist->get('id'), null); |
| 78 | + break; |
| 79 | + |
| 80 | + case 'merge_qlist': |
| 81 | + $sourceqlistid = required_param('qlistid', PARAM_INT); |
| 82 | + $qlist = capquiz_question_list::get_record(['capquiz_id' => $capquiz->get('id')]); |
| 83 | + foreach (capquiz_question::get_records(['question_list_id' => $sourceqlistid]) as $sourcequestion) { |
| 84 | + $existingquestion = capquiz_question::get_record([ |
| 85 | + 'question_list_id' => $qlist->get('id'), |
| 86 | + 'question_id' => $sourcequestion->get('question_id'), |
| 87 | + ]); |
| 88 | + if (!$existingquestion) { |
| 89 | + $question = new capquiz_question(); |
| 90 | + $question->set('question_list_id', $qlist->get('id')); |
| 91 | + $question->set('question_id', $sourcequestion->get('question_id')); |
| 92 | + $question->save(); |
| 93 | + api::set_question_rating($question->get('id'), $sourcequestion->get('rating'), false); |
| 94 | + } |
| 95 | + } |
| 96 | + redirect(new moodle_url('/mod/capquiz/view.php', ['id' => $PAGE->cm->id, 'page' => 'questions'])); |
| 97 | + break; |
| 98 | + |
| 99 | + case 'delete_qlist': |
| 100 | + $srcqlistid = required_param('qlistid', PARAM_INT); |
| 101 | + $DB->delete_records('capquiz_question', ['question_list_id' => $srcqlistid]); |
| 102 | + $DB->delete_records('capquiz_question_list', ['id' => $srcqlistid]); |
| 103 | + break; |
| 104 | + |
| 105 | + case 'regrade-all': |
| 106 | + capquiz_update_grades($capquiz->to_record()); |
| 107 | + break; |
| 108 | + |
| 109 | + default: |
| 110 | + break; |
| 111 | +} |
45 | 112 |
|
46 |
| -capquiz_urls::redirect_to_dashboard(); |
| 113 | +redirect(new moodle_url('/mod/capquiz/view.php', ['id' => $cmid])); |
0 commit comments