/** * Test the question category created event. */ public function test_question_category_created() { $this->setAdminUser(); $course = $this->getDataGenerator()->create_course(); $quiz = $this->getDataGenerator()->create_module('quiz', array('course' => $course->id)); $contexts = new question_edit_contexts(context_module::instance($quiz->cmid)); $defaultcategoryobj = question_make_default_categories(array($contexts->lowest())); $defaultcategory = $defaultcategoryobj->id . ',' . $defaultcategoryobj->contextid; $qcobject = new question_category_object(1, new moodle_url('/mod/quiz/edit.php', array('cmid' => $quiz->cmid)), $contexts->having_one_edit_tab_cap('categories'), $defaultcategoryobj->id, $defaultcategory, null, $contexts->having_cap('moodle/question:add')); // Trigger and capture the event. $sink = $this->redirectEvents(); $categoryid = $qcobject->add_category($defaultcategory, 'newcategory', '', true); $events = $sink->get_events(); $event = reset($events); // Check that the event data is valid. $this->assertInstanceOf('\\core\\event\\question_category_created', $event); $this->assertEquals(context_module::instance($quiz->cmid), $event->get_context()); $expected = array($course->id, 'quiz', 'addcategory', 'view.php?id=' . $quiz->cmid, $categoryid, $quiz->cmid); $this->assertEventLegacyLogData($expected, $event); $this->assertEventContextNotUsed($event); }
$defaultcategoryobj = question_make_default_categories($contexts->all()); $defaultcategory = $defaultcategoryobj->id . ',' . $defaultcategoryobj->contextid; $qcobject = new question_category_object($pagevars['cpage'], $thispageurl, $contexts->having_one_edit_tab_cap('categories'), $defaultcategoryobj->id, $defaultcategory, null, $contexts->having_cap('moodle/question:add')); $mform = new quiz_add_random_form(new moodle_url('/mod/quiz/addrandom.php'), $contexts); if ($mform->is_cancelled()) { redirect($returnurl); } if ($data = $mform->get_data()) { if (!empty($data->existingcategory)) { list($categoryid) = explode(',', $data->category); $includesubcategories = !empty($data->includesubcategories); $returnurl->param('cat', $data->category); } else { if (!empty($data->newcategory)) { list($parentid, $contextid) = explode(',', $data->parent); $categoryid = $qcobject->add_category($data->parent, $data->name, '', true); $includesubcategories = 0; add_to_log($quiz->course, 'quiz', 'addcategory', 'view.php?id=' . $cm->id, $categoryid, $cm->id); $returnurl->param('cat', $categoryid . ',' . $contextid); } else { throw new coding_exception('It seems a form was submitted without any button being pressed???'); } } quiz_add_random_questions($quiz, $addonpage, $categoryid, 1, $includesubcategories); quiz_delete_previews($quiz); quiz_update_sumgrades($quiz); redirect($returnurl); } $mform->set_data(array('addonpage' => $addonpage, 'returnurl' => $returnurl, 'cmid' => $cm->id, 'category' => $category)); // Setup $PAGE. $streditingquiz = get_string('editinga', 'moodle', get_string('modulename', 'quiz'));
/// 'confirm' is the category to move existing questions to list($tocategoryid, $tocontextid) = explode(',', $formdata->category); $qcobject->move_questions_and_delete_category($formdata->delete, $tocategoryid); $thispageurl->remove_params('cat', 'category'); redirect($thispageurl->out()); } } else { $questionstomove = 0; } if ($qcobject->catform->is_cancelled()) { redirect($thispageurl->out()); } else { if ($catformdata = $qcobject->catform->get_data()) { if (!$catformdata->id) { //new category $qcobject->add_category($catformdata->parent, $catformdata->name, $catformdata->info); } else { $qcobject->update_category($catformdata->id, $catformdata->parent, $catformdata->name, $catformdata->info); } redirect($thispageurl->out()); } else { if (!empty($param->delete) and !$questionstomove and confirm_sesskey()) { $qcobject->delete_category($param->delete); //delete the category now no questions to move $thispageurl->remove_params('cat', 'category'); redirect($thispageurl->out()); } } } $navlinks = array(); if ($cm !== null) {
$qcobject->move_questions_and_delete_category($formdata->delete, $tocategoryid); $thispageurl->remove_params('cat', 'category'); redirect($thispageurl); } } else { $questionstomove = 0; } if ($qcobject->catform->is_cancelled()) { redirect($thispageurl); } else { if ($catformdata = $qcobject->catform->get_data()) { $catformdata->infoformat = $catformdata->info['format']; $catformdata->info = $catformdata->info['text']; if (!$catformdata->id) { //new category $qcobject->add_category($catformdata->parent, $catformdata->name, $catformdata->info, false, $catformdata->infoformat); } else { $qcobject->update_category($catformdata->id, $catformdata->parent, $catformdata->name, $catformdata->info, $catformdata->infoformat); } redirect($thispageurl); } else { if (!empty($param->delete) and !$questionstomove and confirm_sesskey()) { $qcobject->delete_category($param->delete); //delete the category now no questions to move $thispageurl->remove_params('cat', 'category'); redirect($thispageurl); } } } if ($param->edit) { $PAGE->navbar->add(get_string('editingcategory', 'question'));
} else { if (!empty($param->hide)) { $qcobject->publish_category(false, $param->hide); } else { if (!empty($param->move)) { $qcobject->move_category($param->move, $param->moveto); } else { if (!empty($param->publish)) { $qcobject->publish_category(true, $param->publish); } else { if (!empty($param->addcategory)) { $param->newparent = required_param('newparent', PARAM_INT); $param->newcategory = required_param('newcategory', PARAM_NOTAGS); $param->newinfo = required_param('newinfo', PARAM_NOTAGS); $param->newpublish = required_param('newpublish', PARAM_INT); $qcobject->add_category($param->newparent, $param->newcategory, $param->newinfo, $param->newpublish, $course->id); } else { if (!empty($param->edit)) { $qcobject->edit_single_category($param->edit, $param->page); } else { if (!empty($param->updateid)) { $param->updateparent = required_param('updateparent', PARAM_INT); $param->updatename = required_param('updatename', PARAM_NOTAGS); $param->updateinfo = required_param('updateinfo', PARAM_NOTAGS); $param->updatepublish = required_param('updatepublish', PARAM_INT); $qcobject->update_category($param->updateid, $param->updateparent, $param->updatename, $param->updateinfo, $param->updatepublish, $course->id); } } } } }