/** * Process assignment grading function called by event trigger (see db/events.php). * It unlocks pages on Mahara when submission has been graded. * * @param object $event Event data object passed over by mod_assign * @return void */ public static function submission_graded(\mod_assign\event\submission_graded $event) { global $DB; $eventdata = $event->get_data(); $grade = $event->get_record_snapshot('assign_grades', $eventdata['objectid']); $assign = $event->get_assign(); $maharasubmissionplugin = $assign->get_submission_plugin_by_type('mahara'); // See if need to unlock anything at all. if ((int) $maharasubmissionplugin->get_config('lock') !== ASSIGNSUBMISSION_MAHARA_SETTING_UNLOCK) { return; } // Get submission if it exists. if (!($submission = $assign->get_user_submission($grade->userid, false))) { return; } // Get Mahara submission. $maharasubmission = $DB->get_record('assignsubmission_mahara', array('submission' => $submission->id)); // Process further only if we are dealing with mahara submission that is locked. if ($maharasubmission && $maharasubmission->viewstatus == assign_submission_mahara::STATUS_SUBMITTED) { // Check if marking workflow is in place, page unlocking will be handled in // assignsubmission_mahara_observers::workflow_state_updated unless . if ($assign->get_instance()->markingworkflow) { return; } // If submission has been "graded" but no grade is selected do not unlock page. if (empty($grade->grade)) { return; } self::release_submited_view($maharasubmissionplugin, $maharasubmission); } }