Exemplo n.º 1
0
 /**
  * Check and submission
  * @param $userid
  * @param $data Object with submitted data
  * @param & $error string
  * @return false or submission id
  **/
 function add_submission($userid, &$files, $comments, &$error)
 {
     global $USER, $DB;
     if (!$this->pass_submission_restriction($files, $error)) {
         return false;
     }
     if ($this->is_group_activity()) {
         $liderid = $this->get_group_leaderid($userid);
         if ($liderid == 0) {
             //No group or inconsistence
             if ($this->has_capability(VPL_MANAGE_CAPABILITY) || $this->has_capability(VPL_GRADE_CAPABILITY) && $userid == $USER->id) {
                 //Is manager or grader own submission
                 $liderid = $userid;
             } else {
                 $error = get_string('notsaved', VPL) . "\n" . get_string('inconsistentgroup', VPL);
                 return false;
             }
         }
         $userid = $liderid;
     }
     //Grader submmission or group activity
     if ($USER->id != $userid || $this->is_group_activity()) {
         $user = $DB->get_record('user', array('id' => $USER->id));
         $submittedby = get_string('submittedby', VPL, fullname($user)) . "\n";
     } else {
         $submittedby = '';
     }
     if (($last_sub_ins = $this->last_user_submission($userid)) !== false) {
         $last_sub = new mod_vpl_submission($this, $last_sub_ins);
         if ($last_sub->is_equal_to($files, $submittedby . $comments)) {
             //TODO check for concistence: NOT SAVE but say nothing
             //$error=get_string('notsaved',VPL)."\n".get_string('fileNotChanged',VPL);
             return $last_sub_ins->id;
         }
     }
     ignore_user_abort(true);
     //Create submission record
     $submissiondata = new stdClass();
     $submissiondata->vpl = $this->get_instance()->id;
     $submissiondata->userid = $userid;
     $submissiondata->datesubmitted = time();
     $submissiondata->comments = $submittedby . $comments;
     $submissionid = $DB->insert_record('vpl_submissions', $submissiondata, TRUE);
     if (!$submissionid) {
         $error = get_string('notsaved', VPL) . "\ninserting vpl_submissions record";
         return false;
     }
     //Save files
     $submission = new mod_vpl_submission($this, $submissionid);
     $submission->set_submitted_file($files);
     $submission->remove_grade();
     //if no submitted by grader and not group activity
     //remove near submmissions
     if ($submittedby == '') {
         $this->delete_overflow_submissions($userid);
     }
     return $submissionid;
 }
Exemplo n.º 2
0
     $href = 'gradesubmission.php';
 }
 $grade_form = new mod_vpl_grade_form($href, $vpl);
 if ($grade_form->is_cancelled()) {
     //Grading canceled
     vpl_inmediate_redirect($link);
 } else {
     if ($fromform = $grade_form->get_data()) {
         //Grade (new or update)
         if (isset($fromform->evaluate)) {
             $url = vpl_mod_href('forms/evaluation.php', 'id', $fromform->id, 'userid', $fromform->userid, 'grading', 1, 'inpopup', $inpopup);
             vpl_inmediate_redirect($url);
         }
         if (isset($fromform->removegrade)) {
             vpl_grade_header($vpl, $inpopup);
             if ($submission->remove_grade()) {
                 \mod_vpl\event\submission_grade_deleted::log($submission);
                 if ($inpopup) {
                     //FIXME don't work
                     //Change grade info at parent window
                     $jscript .= 'VPL.updatesublist(' . $submission->get_instance()->id . ',';
                     $jscript .= "' ',' ',' ');";
                     echo vpl_include_js($jscript);
                 }
                 vpl_redirect($link, get_string('graderemoved', VPL), 5);
             } else {
                 vpl_redirect($link, get_string('gradenotremoved', VPL), 5);
             }
             die;
         }
         vpl_grade_header($vpl, $inpopup);