diff --git a/lib/grade/grade_category.php b/lib/grade/grade_category.php index f024bcb5a16..9764dc2a327 100644 --- a/lib/grade/grade_category.php +++ b/lib/grade/grade_category.php @@ -466,7 +466,7 @@ class grade_category extends grade_object { WHERE id $usql"; $items = $DB->get_records_sql($sql, $params); foreach ($items as $id => $item) { - $items[$id] = new grade_item($item); + $items[$id] = new grade_item($item, false); } } @@ -501,10 +501,13 @@ class grade_category extends grade_object { $grademinoverrides = array(); foreach ($rs as $used) { - $grade = new grade_grade($used); + $grade = new grade_grade($used, false); if (isset($items[$grade->itemid])) { // Prevent grade item to be fetched from DB. $grade->grade_item =& $items[$grade->itemid]; + } else if ($grade->itemid == $this->grade_item->id) { + // This grade's grade item is not in $items. + $grade->grade_item =& $this->grade_item; } if ($grade->userid != $prevuser) { $this->aggregate_grades($prevuser, @@ -882,7 +885,7 @@ class grade_category extends grade_object { & $weights = null, $grademinoverrides = array(), $grademaxoverrides = array()) { - $category_item = $this->get_grade_item(); + $category_item = $this->load_grade_item(); $grademin = $category_item->grademin; $grademax = $category_item->grademax; diff --git a/lib/grade/grade_item.php b/lib/grade/grade_item.php index 6e23c3b2878..0d7cb1a7efc 100644 --- a/lib/grade/grade_item.php +++ b/lib/grade/grade_item.php @@ -680,7 +680,7 @@ class grade_item extends grade_object { // aggregate the category grade } else if ($this->is_category_item() or $this->is_course_item()) { // aggregate category grade item - $category = $this->get_item_category(); + $category = $this->load_item_category(); $category->grade_item =& $this; if ($category->generate_grades($userid)) { return true;