]> git.mjollnir.org Git - moodle.git/commitdiff
MDL-12154 used proper cast to float before !== comparison
authorskodak <skodak>
Tue, 13 Nov 2007 16:08:39 +0000 (16:08 +0000)
committerskodak <skodak>
Tue, 13 Nov 2007 16:08:39 +0000 (16:08 +0000)
lib/grade/grade_category.php
lib/grade/grade_item.php

index ebaae4aa46e8b6a9b6d51e60e2664e808cc0ebe5..c6e7e3484ef2b2155fbca4f4b10ac1b743a0dc19 100644 (file)
@@ -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
index 286f0a6f87cf3e0237a43c2644584c8cb3ae57be..f2f1f001efa863119df8b82a977afcf7cff07e2d 100644 (file)
@@ -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) {