]> git.mjollnir.org Git - moodle.git/commitdiff
MDL-11718 fixed incorrect bounds when altering aggregates for hidden grades
authorskodak <skodak>
Sat, 20 Oct 2007 15:48:46 +0000 (15:48 +0000)
committerskodak <skodak>
Sat, 20 Oct 2007 15:48:46 +0000 (15:48 +0000)
lib/grade/grade_grade.php

index 965eed91f2077bb5da305c8c3fd1e169eaa47196..c061cf12f9782959e35c887296a28aa725eed175 100644 (file)
@@ -555,6 +555,14 @@ class grade_grade extends grade_object {
                                 }
                             }
 
+                            foreach ($values as $itemid=>$value) {
+                                if ($grade_grades[$itemid]->is_excluded()) {
+                                    unset($values[$itemid]);
+                                    continue;
+                                }
+                                $values[$itemid] = grade_grade::standardise_score($value, $grade_items[$itemid]->grademin, $grade_items[$itemid]->grademax, 0, 1);
+                            }
+
                             if ($grade_category->aggregateonlygraded) {
                                 foreach ($values as $itemid=>$value) {
                                     if (is_null($value)) {
@@ -564,17 +572,10 @@ class grade_grade extends grade_object {
                             } else {
                                 foreach ($values as $itemid=>$value) {
                                     if (is_null($value)) {
-                                        $values[$itemid] = $grade_items[$itemid]->grademin;
+                                        $values[$itemid] = 0;
                                     }
                                 }
                             }
-                            foreach ($values as $itemid=>$value) {
-                                if ($grade_grades[$itemid]->is_excluded()) {
-                                    unset($values[$itemid]);
-                                    continue;
-                                }
-                                $values[$itemid] = grade_grade::standardise_score($value, $grade_items[$itemid]->grademin, $grade_items[$itemid]->grademax, 0, 1);
-                            }
 
                             // limit and sort
                             $grade_category->apply_limit_rules($values);
@@ -592,10 +593,10 @@ class grade_grade extends grade_object {
                             $agg_grade = $grade_category->aggregate_values($values, $grade_items);
 
                             // recalculate the rawgrade back to requested range
-                            $finalgrade = grade_grade::standardise_score($agg_grade, 0, 1, $grade_items[$itemid]->grademin, $grade_items[$itemid]->grademax);
+                            $finalgrade = grade_grade::standardise_score($agg_grade, 0, 1, $grade_items[$do]->grademin, $grade_items[$do]->grademax);
 
                             if (!is_null($finalgrade)) {
-                                $finalgrade = bounded_number($grade_items[$itemid]->grademin, $finalgrade, $grade_items[$itemid]->grademax);
+                                $finalgrade = bounded_number($grade_items[$do]->grademin, $finalgrade, $grade_items[$do]->grademax);
                             }
 
                             $altered[$do] = $finalgrade;