}
$SESSION->instance = $instance;
$usergraph = get_config('questionnaire', 'usergraph');
if (!($questionnaire = $DB->get_record("questionnaire", array("id" => $instance)))) {
    print_error('incorrectquestionnaire', 'questionnaire');
}
if (!($course = $DB->get_record("course", array("id" => $questionnaire->course)))) {
    print_error('coursemisconf');
}
if (!($cm = get_coursemodule_from_instance("questionnaire", $questionnaire->id, $course->id))) {
    print_error('invalidcoursemodule');
}
require_course_login($course, true, $cm);
$questionnaire = new questionnaire(0, $questionnaire, $course, $cm);
// Add renderer and page objects to the questionnaire object for display use.
$questionnaire->add_renderer($PAGE->get_renderer('mod_questionnaire'));
$questionnaire->add_page(new \mod_questionnaire\output\reportpage());
// If you can't view the questionnaire, or can't view a specified response, error out.
$context = context_module::instance($cm->id);
if (!has_capability('mod/questionnaire:readallresponseanytime', $context) && !($questionnaire->capabilities->view && $questionnaire->can_view_response($rid))) {
    // Should never happen, unless called directly by a snoop...
    print_error('nopermissions', 'moodle', $CFG->wwwroot . '/mod/questionnaire/view.php?id=' . $cm->id);
}
$questionnaire->canviewallgroups = has_capability('moodle/site:accessallgroups', $context);
$sid = $questionnaire->survey->id;
$url = new moodle_url($CFG->wwwroot . '/mod/questionnaire/report.php');
if ($instance) {
    $url->param('instance', $instance);
}
$url->param('action', $action);
if ($type) {