MDL-45870 mod_assign: Outcomes are saved for each group member

This commit is contained in:
Frederic Massart
2014-06-05 15:56:13 +08:00
parent 8e478c99d3
commit 78f69e51fc
+9 -6
View File
@@ -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);