/**
  * 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);
     }
 }