require_once($CFG->libdir . '/questionlib.php'); require_once(dirname(__FILE__) . '/previewlib.php'); // Get and validate question id. $id = required_param('id', PARAM_INT); $question = question_bank::load_question($id); require_login(); $category = $DB->get_record('question_categories', array('id' => $question->category), '*', MUST_EXIST); question_require_capability_on($question, 'use'); $PAGE->set_pagelayout('popup'); $PAGE->set_context(get_context_instance_by_id($category->contextid)); // Get and validate display options. $maxvariant = $question->get_num_variants(); $options = new question_preview_options($question); $options->load_user_defaults(); $options->set_from_request(); $PAGE->set_url(question_preview_url($id, $options->behaviour, $options->maxmark, $options)); // Get and validate exitsing preview, or start a new one. $previewid = optional_param('previewid', 0, PARAM_INT); if ($previewid) { if (!isset($SESSION->question_previews[$previewid])) { print_error('notyourpreview', 'question'); } try { $quba = question_engine::load_questions_usage_by_activity($previewid); } catch (Exception $e) { print_error('submissionoutofsequencefriendlymessage', 'question',
/** * The the URL to use for actions relating to this preview. * @param int $questionid the question being previewed. * @param int $qubaid the id of the question usage for this preview. * @param question_preview_options $options the options in use. */ function question_preview_action_url($questionid, $qubaid, question_preview_options $options, $context) { $params = array('id' => $questionid, 'previewid' => $qubaid); if ($context->contextlevel == CONTEXT_MODULE) { $params['cmid'] = $context->instanceid; } else { if ($context->contextlevel == CONTEXT_COURSE) { $params['courseid'] = $context->instanceid; } } $params = array_merge($params, $options->get_url_params()); return new moodle_url('/question/preview.php', $params); }
/** * The the URL to use for actions relating to this preview. * @param int $questionid the question being previewed. * @param int $qubaid the id of the question usage for this preview. * @param question_preview_options $options the options in use. */ function question_preview_action_url($questionid, $qubaid, question_preview_options $options) { $params = array( 'id' => $questionid, 'previewid' => $qubaid, ); $params = array_merge($params, $options->get_url_params()); return new moodle_url('/question/preview.php', $params); }