From: skodak Date: Tue, 13 Nov 2007 16:08:39 +0000 (+0000) Subject: MDL-12154 used proper cast to float before !== comparison X-Git-Url: http://git.mjollnir.org/gw?a=commitdiff_plain;h=4ac209d5bd56c8c5607fe4f1f4afea750256bab2;p=moodle.git MDL-12154 used proper cast to float before !== comparison --- diff --git a/lib/grade/grade_category.php b/lib/grade/grade_category.php index ebaae4aa46..c6e7e3484e 100644 --- a/lib/grade/grade_category.php +++ b/lib/grade/grade_category.php @@ -159,7 +159,7 @@ class grade_category extends grade_object { } else { $obj = grade_object::get_instance('grade_category'); $parent = $obj->lib_wrapper->get_record('grade_categories', 'id', $grade_category->parent); - var_dump($parent); + var_dump($parent); return grade_category::build_path($parent).$grade_category->id.'/'; } } @@ -474,7 +474,9 @@ class grade_category extends grade_object { } if ($oldgrade) { - if (!is_null($oldgrade->finalgrade)) { + if (is_null($oldgrade->finalgrade)) { + $oldfinalgrade = null; + } else { // we need proper floats here for !== comparison later $oldfinalgrade = (float)$oldgrade->finalgrade; } @@ -913,7 +915,7 @@ class grade_category extends grade_object { } else { $params = array('courseid'=>$this->courseid, 'itemtype'=>'category', 'iteminstance'=>$this->id); } - + $grade_item = grade_object::get_instance('grade_item'); if (!$grade_items = $grade_item->fetch_all($params)) { @@ -1088,7 +1090,7 @@ class grade_category extends grade_object { return $course_category; } - + /** * Is grading object editable? * @return boolean diff --git a/lib/grade/grade_item.php b/lib/grade/grade_item.php index 286f0a6f87..f2f1f001ef 100644 --- a/lib/grade/grade_item.php +++ b/lib/grade/grade_item.php @@ -24,6 +24,7 @@ /////////////////////////////////////////////////////////////////////////// require_once('grade_object.php'); + /** * Class representing a grade item. It is responsible for handling its DB representation, * modifying and returning its metadata. @@ -335,7 +336,7 @@ class grade_item extends grade_object { if (!$this->is_course_item()) { $this->force_regrading(); } - + $grade_grade = grade_object::get_instance('grade_grade'); if ($grades = $grade_grade->fetch_all(array('itemid'=>$this->id))) { foreach ($grades as $grade) { @@ -1638,17 +1639,20 @@ class grade_item extends grade_object { // insert final grade - will be needed later anyway if ($oldgrade) { + if (is_null($oldgrade->finalgrade)) { + $oldfinalgrade = null; + } else { + // we need proper floats here for !== comparison later + $oldfinalgrade = (float)$oldgrade->finalgrade; + } $grade = $this->get_instance('grade_grade', $oldgrade, false); // fetching from db is not needed $grade->grade_item =& $this; } else { $grade = $this->get_instance('grade_grade', array('itemid'=>$this->id, 'userid'=>$userid), false); - $grade->insert('system'); $grade->grade_item =& $this; - - $oldgrade = new object(); - $oldgrade->finalgrade = $grade->finalgrade; - $oldgrade->rawgrade = $grade->rawgrade; + $grade->insert('system'); + $oldfinalgrade = null; } // no need to recalculate locked or overridden grades @@ -1660,10 +1664,6 @@ class grade_item extends grade_object { $this->formula->set_params($params); $result = $this->formula->evaluate(); - // no raw grade for calculated grades - only final - $grade->rawgrade = null; - - if ($result === false) { $grade->finalgrade = null; @@ -1673,14 +1673,12 @@ class grade_item extends grade_object { if ($this->gradetype == GRADE_TYPE_SCALE) { $result = round($result+0.00001); // round scales upwards } - $grade->finalgrade = $result; + $grade->finalgrade = (float)$result; } // update in db if changed - if ( $grade->finalgrade !== $oldgrade->finalgrade - or $grade->rawgrade !== $oldgrade->rawgrade) { - - $grade->update('system'); + if ($grade->finalgrade !== $oldfinalgrade) { + $grade->update('compute'); } if ($result !== false) {