mirror of
https://github.com/moodle/moodle.git
synced 2025-08-08 02:16:41 +02:00
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:
parent
bf6c1d0997
commit
df211804f1
26 changed files with 1839 additions and 262 deletions
|
@ -449,4 +449,35 @@ class assign_submission_file extends assign_submission_plugin {
|
|||
return array(ASSIGNSUBMISSION_FILE_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.
|
||||
$contextid = $this->assignment->get_context()->id;
|
||||
$fs = get_file_storage();
|
||||
$files = $fs->get_area_files($contextid,
|
||||
'assignsubmission_file',
|
||||
ASSIGNSUBMISSION_FILE_FILEAREA,
|
||||
$sourcesubmission->id,
|
||||
'id',
|
||||
false);
|
||||
foreach ($files as $file) {
|
||||
$fieldupdates = array('itemid' => $destsubmission->id);
|
||||
$fs->create_file_from_storedfile($fieldupdates, $file);
|
||||
}
|
||||
|
||||
// Copy the assignsubmission_file record.
|
||||
if ($filesubmission = $this->get_file_submission($sourcesubmission->id)) {
|
||||
unset($filesubmission->id);
|
||||
$filesubmission->submission = $destsubmission->id;
|
||||
$DB->insert_record('assignsubmission_file', $filesubmission);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue