diff --git a/lib/gradelib.php b/lib/gradelib.php index 02ea8e62317..8c3d495790d 100644 --- a/lib/gradelib.php +++ b/lib/gradelib.php @@ -312,17 +312,21 @@ function grade_update($source, $courseid, $itemtype, $itemmodule, $iteminstance, * @param int $iteminstance id of the item module * @param int $userid ID of the graded user * @param array $data array itemnumber=>outcomegrade + * @return boolean returns true if grade items were found and updated successfully */ function grade_update_outcomes($source, $courseid, $itemtype, $itemmodule, $iteminstance, $userid, $data) { if ($items = grade_item::fetch_all(array('itemtype'=>$itemtype, 'itemmodule'=>$itemmodule, 'iteminstance'=>$iteminstance, 'courseid'=>$courseid))) { + $result = true; foreach ($items as $item) { if (!array_key_exists($item->itemnumber, $data)) { continue; } $grade = $data[$item->itemnumber] < 1 ? null : $data[$item->itemnumber]; - $item->update_final_grade($userid, $grade, $source); + $result = ($item->update_final_grade($userid, $grade, $source) && $result); } + return $result; } + return false; } /**