MDL-36804 mod_assign - allow students to resubmit work and display a submission + grading history

This is based on work by Davo Smith with input from Fernando Oliveira (Thanks guys!).
This commit is contained in:
Damyon Wiese 2013-03-13 11:36:23 +08:00
parent bf6c1d0997
commit df211804f1
26 changed files with 1839 additions and 262 deletions

View file

@ -470,6 +470,34 @@ class assign_submission_onlinetext extends assign_submission_plugin {
return array(ASSIGNSUBMISSION_ONLINETEXT_FILEAREA=>$this->get_name());
}
/**
* Copy the student's submission from a previous submission. Used when a student opts to base their resubmission
* on the last submission.
* @param stdClass $sourcesubmission
* @param stdClass $destsubmission
*/
public function copy_submission(stdClass $sourcesubmission, stdClass $destsubmission) {
global $DB;
// Copy the files across (attached via the text editor).
$contextid = $this->assignment->get_context()->id;
$fs = get_file_storage();
$files = $fs->get_area_files($contextid, 'assignsubmission_onlinetext',
ASSIGNSUBMISSION_ONLINETEXT_FILEAREA, $sourcesubmission->id, 'id', false);
foreach ($files as $file) {
$fieldupdates = array('itemid' => $destsubmission->id);
$fs->create_file_from_storedfile($fieldupdates, $file);
}
// Copy the assignsubmission_onlinetext record.
$onlinetextsubmission = $this->get_onlinetext_submission($sourcesubmission->id);
if ($onlinetextsubmission) {
unset($onlinetextsubmission->id);
$onlinetextsubmission->submission = $destsubmission->id;
$DB->insert_record('assignsubmission_onlinetext', $onlinetextsubmission);
}
return true;
}
}