示例#1
0
 /**
  * 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);
 }
示例#2
0
$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) {
示例#4
0
        $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'));
示例#5
0
 } 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);
                         }
                     }
                 }
             }
         }