MDL-52489 mod_assign: Download all submissions as a zip copy.
This commit is contained in:
@@ -81,6 +81,7 @@ class assignfeedback_file_import_zip_form extends moodleform implements renderab
|
||||
if ($importer->is_file_modified($assignment, $user, $plugin, $filename, $unzippedfile)) {
|
||||
// Get a string we can show to identify this user.
|
||||
$userdesc = fullname($user);
|
||||
$path = pathinfo($filename);
|
||||
if ($assignment->is_blind_marking()) {
|
||||
$userdesc = get_string('hiddenuser', 'assign') .
|
||||
$assignment->get_uniqueid_for_user($user->id);
|
||||
@@ -93,8 +94,8 @@ class assignfeedback_file_import_zip_form extends moodleform implements renderab
|
||||
'assignfeedback_file',
|
||||
ASSIGNFEEDBACK_FILE_FILEAREA,
|
||||
$grade->id,
|
||||
'/',
|
||||
$filename);
|
||||
$path['dirname'],
|
||||
$path['basename']);
|
||||
}
|
||||
|
||||
if (!$grade || !$exists) {
|
||||
|
||||
@@ -59,7 +59,7 @@ class assignfeedback_file_zip_importer {
|
||||
return false;
|
||||
}
|
||||
|
||||
$info = explode('_', $fileinfo->get_filename(), 5);
|
||||
preg_match('#.*_([0-9]{1,})_(.*)_(.*)_(.*)#i', $fileinfo->get_filepath().$fileinfo->get_filename(), $info);
|
||||
|
||||
if (count($info) < 5) {
|
||||
return false;
|
||||
@@ -192,18 +192,9 @@ class assignfeedback_file_zip_importer {
|
||||
'assignfeedback_file',
|
||||
ASSIGNFEEDBACK_FILE_IMPORT_FILEAREA,
|
||||
$USER->id,
|
||||
'/import/');
|
||||
'/import/', true); // Get files recursive (all levels).
|
||||
|
||||
$keys = array_keys($files);
|
||||
if (count($files) == 1 && $files[$keys[0]]->is_directory()) {
|
||||
// An entire folder was zipped, rather than its contents.
|
||||
// We need to return the contents of the folder instead, so the import can continue.
|
||||
$files = $fs->get_directory_files($contextid,
|
||||
'assignfeedback_file',
|
||||
ASSIGNFEEDBACK_FILE_IMPORT_FILEAREA,
|
||||
$USER->id,
|
||||
$files[$keys[0]]->get_filepath());
|
||||
}
|
||||
|
||||
return $files;
|
||||
}
|
||||
@@ -245,13 +236,14 @@ class assignfeedback_file_zip_importer {
|
||||
if ($this->is_valid_filename_for_import($assignment, $unzippedfile, $participants, $user, $plugin, $filename)) {
|
||||
if ($this->is_file_modified($assignment, $user, $plugin, $filename, $unzippedfile)) {
|
||||
$grade = $assignment->get_user_grade($user->id, true);
|
||||
$path = pathinfo($filename);
|
||||
|
||||
if ($oldfile = $fs->get_file($contextid,
|
||||
'assignfeedback_file',
|
||||
ASSIGNFEEDBACK_FILE_FILEAREA,
|
||||
$grade->id,
|
||||
'/',
|
||||
$filename)) {
|
||||
$path['dirname'],
|
||||
$path['basename'])) {
|
||||
// Update existing feedback file.
|
||||
$oldfile->replace_file_with($unzippedfile);
|
||||
$feedbackfilesupdated++;
|
||||
@@ -261,8 +253,8 @@ class assignfeedback_file_zip_importer {
|
||||
$newfilerecord->contextid = $contextid;
|
||||
$newfilerecord->component = 'assignfeedback_file';
|
||||
$newfilerecord->filearea = ASSIGNFEEDBACK_FILE_FILEAREA;
|
||||
$newfilerecord->filename = $filename;
|
||||
$newfilerecord->filepath = '/';
|
||||
$newfilerecord->filename = $path['basename'];
|
||||
$newfilerecord->filepath = $path['dirname']."/";
|
||||
$newfilerecord->itemid = $grade->id;
|
||||
$fs->create_file_from_storedfile($newfilerecord, $unzippedfile);
|
||||
$feedbackfilesadded++;
|
||||
|
||||
+15
-6
@@ -2722,26 +2722,35 @@ class assign {
|
||||
|
||||
if ($this->is_blind_marking()) {
|
||||
$prefix = str_replace('_', ' ', $groupname . get_string('participant', 'assign'));
|
||||
$prefix = clean_filename($prefix . '_' . $this->get_uniqueid_for_user($userid) . '_');
|
||||
$prefix = clean_filename($prefix . '_' . $this->get_uniqueid_for_user($userid));
|
||||
} else {
|
||||
$prefix = str_replace('_', ' ', $groupname . fullname($student));
|
||||
$prefix = clean_filename($prefix . '_' . $this->get_uniqueid_for_user($userid) . '_');
|
||||
$prefix = clean_filename($prefix . '_' . $this->get_uniqueid_for_user($userid));
|
||||
}
|
||||
|
||||
if ($submission) {
|
||||
foreach ($this->submissionplugins as $plugin) {
|
||||
if ($plugin->is_enabled() && $plugin->is_visible()) {
|
||||
$pluginfiles = $plugin->get_files($submission, $student);
|
||||
foreach ($pluginfiles as $zipfilename => $file) {
|
||||
foreach ($pluginfiles as $zipfilepath => $file) {
|
||||
$subtype = $plugin->get_subtype();
|
||||
$type = $plugin->get_type();
|
||||
$zipfilename = basename($zipfilepath);
|
||||
$prefixedfilename = clean_filename($prefix .
|
||||
'_' .
|
||||
$subtype .
|
||||
'_' .
|
||||
$type .
|
||||
'_' .
|
||||
$zipfilename);
|
||||
$filesforzipping[$prefixedfilename] = $file;
|
||||
'_');
|
||||
if ($type == 'file') {
|
||||
$pathfilename = $prefixedfilename . $file->get_filepath() . $zipfilename;
|
||||
} else if ($type == 'onlinetext') {
|
||||
$pathfilename = $prefixedfilename . '/' . $zipfilename;
|
||||
} else {
|
||||
$pathfilename = $prefixedfilename . '/' . $zipfilename;
|
||||
}
|
||||
$pathfilename = clean_param($pathfilename, PARAM_PATH);
|
||||
$filesforzipping[$pathfilename] = $file;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -304,7 +304,7 @@ class assign_submission_file extends assign_submission_plugin {
|
||||
false);
|
||||
|
||||
foreach ($files as $file) {
|
||||
$result[$file->get_filename()] = $file;
|
||||
$result[$file->get_filepath().$file->get_filename()] = $file;
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user