From d0d8a2da8fe8fecbc5200bce3a59c0fa9851372d Mon Sep 17 00:00:00 2001 From: evltuma Date: Mon, 14 Dec 2015 15:24:42 +0100 Subject: [PATCH 1/2] MDL-52490 assign: download selected assigment submissions as zip file --- mod/assign/gradingbatchoperationsform.php | 2 ++ mod/assign/lang/en/assign.php | 2 ++ mod/assign/locallib.php | 31 +++++++++++++++-------- mod/assign/renderer.php | 1 + 4 files changed, 25 insertions(+), 11 deletions(-) diff --git a/mod/assign/gradingbatchoperationsform.php b/mod/assign/gradingbatchoperationsform.php index 98e16818cb2..de66e908039 100644 --- a/mod/assign/gradingbatchoperationsform.php +++ b/mod/assign/gradingbatchoperationsform.php @@ -46,6 +46,8 @@ class mod_assign_grading_batch_operations_form extends moodleform { $options = array(); $options['lock'] = get_string('locksubmissions', 'assign'); $options['unlock'] = get_string('unlocksubmissions', 'assign'); + // MDL-52490 download selected submissions in zip file. + $options['downloadselected'] = get_string('downloadselectedsubmissions', 'assign'); if ($instance['submissiondrafts']) { $options['reverttodraft'] = get_string('reverttodraft', 'assign'); } diff --git a/mod/assign/lang/en/assign.php b/mod/assign/lang/en/assign.php index b600f73c746..bee62ab6458 100644 --- a/mod/assign/lang/en/assign.php +++ b/mod/assign/lang/en/assign.php @@ -93,6 +93,7 @@ $string['batchoperationconfirmreverttodraft'] = 'Revert selected submissions to $string['batchoperationconfirmaddattempt'] = 'Allow another attempt for selected submissions?'; $string['batchoperationconfirmsetmarkingworkflowstate'] = 'Set marking workflow state for all selected submissions?'; $string['batchoperationconfirmsetmarkingallocation'] = 'Set marking allocation for all selected submissions?'; +$string['batchoperationconfirmdownloadselected'] = 'Download all selected submissions?'; $string['batchoperationlock'] = 'lock submissions'; $string['batchoperationunlock'] = 'unlock submissions'; $string['batchoperationreverttodraft'] = 'revert submissions to draft'; @@ -133,6 +134,7 @@ $string['deleteallsubmissions'] = 'Delete all submissions'; $string['description'] = 'Description'; $string['downloadall'] = 'Download all submissions'; $string['download all submissions'] = 'Download all submissions in a zip file.'; +$string['downloadselectedsubmissions'] = 'Download selected submissions in a zip file.'; $string['duedate'] = 'Due date'; $string['duedatecolon'] = 'Due date: {$a}'; $string['duedate_help'] = 'This is when the assignment is due. Submissions will still be allowed after this date but any assignments submitted after this date are marked as late. To prevent submissions after a certain date - set the assignment cut off date.'; diff --git a/mod/assign/locallib.php b/mod/assign/locallib.php index 19cc6546d1c..f9a189d6602 100644 --- a/mod/assign/locallib.php +++ b/mod/assign/locallib.php @@ -2761,9 +2761,10 @@ class assign { /** * Download a zip file of all assignment submissions. * + * @param array $idusers The array of idusers to download assignment submissions in a zip file * @return string - If an error occurs, this will contain the error page. */ - protected function download_submissions() { + protected function download_submissions($idusers='all') { global $CFG, $DB; // More efficient to load this here. @@ -2799,6 +2800,10 @@ class assign { // Get all the files for each student. foreach ($students as $student) { $userid = $student->id; + // Download all assigments submission or only selected users. + if ($idusers != 'all' and !in_array($userid, $idusers)) { + continue; + } if ((groups_is_member($groupid, $userid) or !$groupmode or !$groupid)) { // Get the plugins to add their own files to the zip. @@ -4059,16 +4064,20 @@ class assign { } } - foreach ($userlist as $userid) { - if ($data->operation == 'lock') { - $this->process_lock_submission($userid); - } else if ($data->operation == 'unlock') { - $this->process_unlock_submission($userid); - } else if ($data->operation == 'reverttodraft') { - $this->process_revert_to_draft($userid); - } else if ($data->operation == 'addattempt') { - if (!$this->get_instance()->teamsubmission) { - $this->process_add_attempt($userid); + if ($data->operation == 'downloadselected') { + $this->download_submissions($userlist); + } else { + foreach ($userlist as $userid) { + if ($data->operation == 'lock') { + $this->process_lock_submission($userid); + } else if ($data->operation == 'unlock') { + $this->process_unlock_submission($userid); + } else if ($data->operation == 'reverttodraft') { + $this->process_revert_to_draft($userid); + } else if ($data->operation == 'addattempt') { + if (!$this->get_instance()->teamsubmission) { + $this->process_add_attempt($userid); + } } } } diff --git a/mod/assign/renderer.php b/mod/assign/renderer.php index 9bfedc432f9..7d33d743c51 100644 --- a/mod/assign/renderer.php +++ b/mod/assign/renderer.php @@ -1216,6 +1216,7 @@ class mod_assign_renderer extends plugin_renderer_base { $this->page->requires->string_for_js('batchoperationconfirmreverttodraft', 'assign'); $this->page->requires->string_for_js('batchoperationconfirmunlock', 'assign'); $this->page->requires->string_for_js('batchoperationconfirmaddattempt', 'assign'); + $this->page->requires->string_for_js('batchoperationconfirmdownloadselected', 'assign'); $this->page->requires->string_for_js('batchoperationconfirmsetmarkingworkflowstate', 'assign'); $this->page->requires->string_for_js('batchoperationconfirmsetmarkingallocation', 'assign'); $this->page->requires->string_for_js('editaction', 'assign'); From 064814eabed85036853f5b57c9b8f06084b8375f Mon Sep 17 00:00:00 2001 From: David Monllao Date: Fri, 15 Apr 2016 12:17:24 +0800 Subject: [PATCH 2/2] MDL-52490 mod_assign: Patch refinements --- mod/assign/gradingbatchoperationsform.php | 1 - mod/assign/locallib.php | 6 +++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/mod/assign/gradingbatchoperationsform.php b/mod/assign/gradingbatchoperationsform.php index de66e908039..9502c4021c8 100644 --- a/mod/assign/gradingbatchoperationsform.php +++ b/mod/assign/gradingbatchoperationsform.php @@ -46,7 +46,6 @@ class mod_assign_grading_batch_operations_form extends moodleform { $options = array(); $options['lock'] = get_string('locksubmissions', 'assign'); $options['unlock'] = get_string('unlocksubmissions', 'assign'); - // MDL-52490 download selected submissions in zip file. $options['downloadselected'] = get_string('downloadselectedsubmissions', 'assign'); if ($instance['submissiondrafts']) { $options['reverttodraft'] = get_string('reverttodraft', 'assign'); diff --git a/mod/assign/locallib.php b/mod/assign/locallib.php index f9a189d6602..624a7b84e3c 100644 --- a/mod/assign/locallib.php +++ b/mod/assign/locallib.php @@ -2761,10 +2761,10 @@ class assign { /** * Download a zip file of all assignment submissions. * - * @param array $idusers The array of idusers to download assignment submissions in a zip file + * @param array $userids Array of user ids to download assignment submissions in a zip file * @return string - If an error occurs, this will contain the error page. */ - protected function download_submissions($idusers='all') { + protected function download_submissions($userids = false) { global $CFG, $DB; // More efficient to load this here. @@ -2801,7 +2801,7 @@ class assign { foreach ($students as $student) { $userid = $student->id; // Download all assigments submission or only selected users. - if ($idusers != 'all' and !in_array($userid, $idusers)) { + if ($userids and !in_array($userid, $userids)) { continue; }