} } } $qtypeobj = question_bank::get_qtype($question->qtype); // Validate the question category. if (!($category = $DB->get_record('question_categories', array('id' => $question->category)))) { print_error('categorydoesnotexist', 'question', $returnurl); } // Check permissions $question->formoptions = new stdClass(); $categorycontext = context::instance_by_id($category->contextid); $addpermission = has_capability('moodle/question:add', $categorycontext); if ($id) { if ($movecontext) { $question->formoptions->canedit = false; $question->formoptions->canmove = question_has_capability_on($question, 'move') && $contexts->have_cap('moodle/question:add'); $question->formoptions->cansaveasnew = false; $question->formoptions->repeatelements = false; $question->formoptions->movecontext = true; $formeditable = true; question_require_capability_on($question, 'move'); } else { $question->formoptions->canedit = question_has_capability_on($question, 'edit'); $question->formoptions->canmove = $addpermission && question_has_capability_on($question, 'move'); $question->formoptions->cansaveasnew = $addpermission && (question_has_capability_on($question, 'view') || $question->formoptions->canedit); $question->formoptions->repeatelements = $question->formoptions->canedit || $question->formoptions->cansaveasnew; $formeditable = $question->formoptions->canedit || $question->formoptions->cansaveasnew || $question->formoptions->canmove; $question->formoptions->movecontext = false; if (!$formeditable) { question_require_capability_on($question, 'view'); }
/** * Return random question form. * @param \moodle_url $thispageurl the canonical URL of this page. * @param \question_edit_contexts $contexts the relevant question bank contexts. * @param array $pagevars the variables from {@link \question_edit_setup()}. * @return string HTML to output. */ protected function random_question_form(\moodle_url $thispageurl, \question_edit_contexts $contexts, array $pagevars) { if (!$contexts->have_cap('moodle/question:useall')) { return ''; } $randomform = new \quiz_add_random_form(new \moodle_url('/mod/quiz/addrandom.php'), array('contexts' => $contexts, 'cat' => $pagevars['cat'])); $randomform->set_data(array('category' => $pagevars['cat'], 'returnurl' => $thispageurl->out_as_local_url(true), 'randomnumber' => 1, 'cmid' => $thispageurl->param('cmid'))); return html_writer::div($randomform->render(), 'randomquestionformforpopup'); }