|
Moodle
2.2.1
http://www.collinsharper.com
|
00001 <?php 00002 00007 class assignment_offline extends assignment_base { 00008 00009 function assignment_offline($cmid='staticonly', $assignment=NULL, $cm=NULL, $course=NULL) { 00010 parent::assignment_base($cmid, $assignment, $cm, $course); 00011 $this->type = 'offline'; 00012 } 00013 00014 function display_lateness($timesubmitted) { 00015 return ''; 00016 } 00017 function print_student_answer($studentid){ 00018 return '';//does nothing! 00019 } 00020 00021 function prepare_new_submission($userid) { 00022 $submission = new stdClass(); 00023 $submission->assignment = $this->assignment->id; 00024 $submission->userid = $userid; 00025 $submission->timecreated = time(); // needed for offline assignments 00026 $submission->timemodified = $submission->timecreated; 00027 $submission->numfiles = 0; 00028 $submission->data1 = ''; 00029 $submission->data2 = ''; 00030 $submission->grade = -1; 00031 $submission->submissioncomment = ''; 00032 $submission->format = 0; 00033 $submission->teacher = 0; 00034 $submission->timemarked = 0; 00035 $submission->mailed = 0; 00036 return $submission; 00037 } 00038 00039 // needed for the timemodified override 00040 function process_feedback() { 00041 global $CFG, $USER, $DB; 00042 require_once($CFG->libdir.'/gradelib.php'); 00043 00044 if (!$feedback = data_submitted() or !confirm_sesskey()) { // No incoming data? 00045 return false; 00046 } 00047 00051 if ((int)$feedback->saveuserid !== -1){ 00052 $feedback->userid = $feedback->saveuserid; 00053 } 00054 00055 if (!empty($feedback->cancel)) { // User hit cancel button 00056 return false; 00057 } 00058 00059 $grading_info = grade_get_grades($this->course->id, 'mod', 'assignment', $this->assignment->id, $feedback->userid); 00060 00061 // store outcomes if needed 00062 $this->process_outcomes($feedback->userid); 00063 00064 $submission = $this->get_submission($feedback->userid, true); // Get or make one 00065 00066 if (!$grading_info->items[0]->grades[$feedback->userid]->locked and 00067 !$grading_info->items[0]->grades[$feedback->userid]->overridden) { 00068 00069 $submission->grade = $feedback->xgrade; 00070 $submission->submissioncomment = $feedback->submissioncomment_editor['text']; 00071 $submission->teacher = $USER->id; 00072 $mailinfo = get_user_preferences('assignment_mailinfo', 0); 00073 if (!$mailinfo) { 00074 $submission->mailed = 1; // treat as already mailed 00075 } else { 00076 $submission->mailed = 0; // Make sure mail goes out (again, even) 00077 } 00078 $submission->timemarked = time(); 00079 00080 unset($submission->data1); // Don't need to update this. 00081 unset($submission->data2); // Don't need to update this. 00082 00083 if (empty($submission->timemodified)) { // eg for offline assignments 00084 $submission->timemodified = time(); 00085 } 00086 00087 $DB->update_record('assignment_submissions', $submission); 00088 00089 // trigger grade event 00090 $this->update_grade($submission); 00091 00092 add_to_log($this->course->id, 'assignment', 'update grades', 00093 'submissions.php?id='.$this->assignment->id.'&user='.$feedback->userid, $feedback->userid, $this->cm->id); 00094 } 00095 00096 return $submission; 00097 00098 } 00099 00100 } 00101 00102