if ($submissionid) {
         $subinstance = $DB->get_record('vpl_submissions', array('id' => $submissionid));
     } else {
         $subinstance = $vpl->last_user_submission($userid);
     }
 } else {
     //Download own submission
     $vpl->require_capability(VPL_VIEW_CAPABILITY);
     $userid = $USER->id;
     $grader = FALSE;
     if ($submissionid && $vpl->has_capability(VPL_GRADE_CAPABILITY)) {
         $subinstance = $DB->get_record('vpl_submissions', array('id' => $submissionid));
     } else {
         $subinstance = $vpl->last_user_submission($userid);
     }
     $vpl->password_check();
 }
 //Check consistence
 if (!$subinstance) {
     throw new Exception(get_string('nosubmission', VPL));
 }
 if ($subinstance->vpl != $vpl->get_instance()->id) {
     throw new Exception(get_string('invalidcourseid'));
 }
 $submissionid = $subinstance->id;
 if ($vpl->is_inconsistent_user($subinstance->userid, $userid)) {
     throw new Exception('vpl submission user inconsistence');
 }
 if ($vpl->get_instance()->id != $subinstance->vpl) {
     throw new Exception('vpl submission vpl inconsistence');
 }