// workshopplus renderer
echo $output->header();
echo $output->heading(format_string($workshopplus->name));
echo $output->heading(get_string('assessedsubmission', 'workshopplus'), 3);
$submission = $workshopplus->get_submission_by_id($submission->id);
// reload so can be passed to the renderer
echo $output->render($workshopplus->prepare_submission($submission, has_capability('mod/workshopplus:viewauthornames', $workshopplus->context)));
// show instructions for assessing as they may contain important information
// for evaluating the assessment
if (trim($workshopplus->instructreviewers)) {
    $instructions = file_rewrite_pluginfile_urls($workshopplus->instructreviewers, 'pluginfile.php', $PAGE->context->id, 'mod_workshopplus', 'instructreviewers', 0, workshopplus::instruction_editors_options($PAGE->context));
    print_collapsible_region_start('', 'workshopplus-viewlet-instructreviewers', get_string('instructreviewers', 'workshopplus'));
    echo $output->box(format_text($instructions, $workshopplus->instructreviewersformat, array('overflowdiv' => true)), array('generalbox', 'instructions'));
    print_collapsible_region_end();
}
// extend the current assessment record with user details
$assessment = $workshopplus->get_assessment_by_id($assessment->id);
if ($isreviewer) {
    $options = array('showreviewer' => true, 'showauthor' => has_capability('mod/workshopplus:viewauthornames', $workshopplus->context), 'showform' => $assessmenteditable or !is_null($assessment->grade), 'showweight' => true);
    $assessment = $workshopplus->prepare_assessment($assessment, $mform, $options);
    $assessment->title = get_string('assessmentbyyourself', 'workshopplus');
    echo $output->render($assessment);
} else {
    $options = array('showreviewer' => has_capability('mod/workshopplus:viewreviewernames', $workshopplus->context), 'showauthor' => has_capability('mod/workshopplus:viewauthornames', $workshopplus->context), 'showform' => $assessmenteditable or !is_null($assessment->grade), 'showweight' => true);
    $assessment = $workshopplus->prepare_assessment($assessment, $mform, $options);
    echo $output->render($assessment);
}
if (!$assessmenteditable and $canoverridegrades) {
    $feedbackform->display();
}
echo $output->footer();
$sid = required_param('sid', PARAM_INT);
// example submission id
$aid = required_param('aid', PARAM_INT);
// the user's assessment id
$cm = get_coursemodule_from_id('workshopplus', $cmid, 0, false, MUST_EXIST);
$course = $DB->get_record('course', array('id' => $cm->course), '*', MUST_EXIST);
require_login($course, false, $cm);
if (isguestuser()) {
    print_error('guestsarenotallowed');
}
$workshopplus = $DB->get_record('workshopplus', array('id' => $cm->instance), '*', MUST_EXIST);
$workshopplus = new workshopplus($workshopplus, $cm, $course);
$strategy = $workshopplus->grading_strategy_instance();
$PAGE->set_url($workshopplus->excompare_url($sid, $aid));
$example = $workshopplus->get_example_by_id($sid);
$assessment = $workshopplus->get_assessment_by_id($aid);
if ($assessment->submissionid != $example->id) {
    print_error('invalidarguments');
}
$mformassessment = $strategy->get_assessment_form($PAGE->url, 'assessment', $assessment, false);
if ($refasid = $DB->get_field('workshopplus_assessments', 'id', array('submissionid' => $example->id, 'weight' => 1))) {
    $reference = $workshopplus->get_assessment_by_id($refasid);
    $mformreference = $strategy->get_assessment_form($PAGE->url, 'assessment', $reference, false);
}
$canmanage = has_capability('mod/workshopplus:manageexamples', $workshopplus->context);
$isreviewer = $USER->id == $assessment->reviewerid;
if ($canmanage) {
    // ok you can go
} elseif ($isreviewer and $workshopplus->assessing_examples_allowed()) {
    // ok you can go
} else {