From 78f69e51fcfb1123cdd76a0cca690ef3eb79a2ef Mon Sep 17 00:00:00 2001 From: Frederic Massart Date: Thu, 5 Jun 2014 15:56:13 +0800 Subject: [PATCH] MDL-45870 mod_assign: Outcomes are saved for each group member --- mod/assign/locallib.php | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/mod/assign/locallib.php b/mod/assign/locallib.php index 647f1ab1527..88cb336fc3e 100644 --- a/mod/assign/locallib.php +++ b/mod/assign/locallib.php @@ -6313,12 +6313,14 @@ class assign { /** - * Save outcomes submitted from grading form + * Save outcomes submitted from grading form. * * @param int $userid * @param stdClass $formdata + * @param int $sourceuserid The user ID under which the outcome data is accessible. This is relevant + * for an outcome set to a user but applied to an entire group. */ - protected function process_outcomes($userid, $formdata) { + protected function process_outcomes($userid, $formdata, $sourceuserid = null) { global $CFG, $USER; if (empty($CFG->enableoutcomes)) { @@ -6340,9 +6342,10 @@ class assign { if (!empty($gradinginfo->outcomes)) { foreach ($gradinginfo->outcomes as $index => $oldoutcome) { $name = 'outcome_'.$index; - if (isset($formdata->{$name}[$userid]) && - $oldoutcome->grades[$userid]->grade != $formdata->{$name}[$userid]) { - $data[$index] = $formdata->{$name}[$userid]; + $sourceuserid = $sourceuserid !== null ? $sourceuserid : $userid; + if (isset($formdata->{$name}[$sourceuserid]) && + $oldoutcome->grades[$userid]->grade != $formdata->{$name}[$sourceuserid]) { + $data[$index] = $formdata->{$name}[$sourceuserid]; } } } @@ -6389,7 +6392,7 @@ class assign { foreach ($members as $member) { // User may exist in multple groups (which should put them in the default group). $this->apply_grade_to_user($data, $member->id, $data->attemptnumber); - $this->process_outcomes($member->id, $data); + $this->process_outcomes($member->id, $data, $userid); } } else { $this->apply_grade_to_user($data, $userid, $data->attemptnumber);