case GRADE_AGGREGATE_SUM: // Add up all the items.
$num = count($grade_values);
- $sum = array_sum($grade_values);
- $agg_grade = $sum / $num;
// Excluded items can affect the grademax for this grade_item.
$grademin = 0;
$grademax = 0;
+ $sum = 0;
foreach ($grade_values as $itemid => $grade_value) {
+ $sum += $grade_value * ($items[$itemid]->grademax - $items[$itemid]->grademin);
$grademin += $items[$itemid]->grademin;
$grademax += $items[$itemid]->grademax;
}
+
+ $agg_grade = $sum / ($grademax - $grademin);
break;
case GRADE_AGGREGATE_MEAN: // Arithmetic average of all grade items (if ungraded aggregated, NULL counted as minimum)