$strategy = $workshopplus->grading_strategy_instance(); if (is_null($assessment->grade) and !$assessmenteditable) { $mform = null; } else { // Are there any other pending assessments to do but this one? if ($assessmenteditable) { $pending = $workshopplus->get_pending_assessments_by_reviewer($assessment->reviewerid, $assessment->id); } else { $pending = array(); } // load the assessment form and process the submitted data eventually $mform = $strategy->get_assessment_form($PAGE->url, 'assessment', $assessment, $assessmenteditable, array('editableweight' => $cansetassessmentweight, 'pending' => !empty($pending))); // Set data managed by the workshopplus core, subplugins set their own data themselves. $currentdata = (object) array('feedbackauthor' => $assessment->feedbackauthor, 'feedbackauthorformat' => $assessment->feedbackauthorformat); if ($assessmenteditable and $workshopplus->overallfeedbackmode) { $currentdata = file_prepare_standard_editor($currentdata, 'feedbackauthor', $workshopplus->overall_feedback_content_options(), $workshopplus->context, 'mod_workshopplus', 'overallfeedback_content', $assessment->id); if ($workshopplus->overallfeedbackfiles) { $currentdata = file_prepare_standard_filemanager($currentdata, 'feedbackauthorattachment', $workshopplus->overall_feedback_attachment_options(), $workshopplus->context, 'mod_workshopplus', 'overallfeedback_attachment', $assessment->id); } } $mform->set_data($currentdata); if ($mform->is_cancelled()) { redirect($workshopplus->view_url()); } elseif ($assessmenteditable and $data = $mform->get_data()) { if (is_null($assessment->grade)) { $workshopplus->log('add assessment', $workshopplus->assess_url($assessment->id), $assessment->submissionid); } else { $workshopplus->log('update assessment', $workshopplus->assess_url($assessment->id), $assessment->submissionid); } // Let the grading strategy subplugin save its data. $rawgrade = $strategy->save_assessment($assessment, $data);