]> git.mjollnir.org Git - moodle.git/commitdiff
moving event trigger from update_grade() to grade_item->update_raw_grade(); removing...
authorskodak <skodak>
Mon, 25 Jun 2007 07:56:25 +0000 (07:56 +0000)
committerskodak <skodak>
Mon, 25 Jun 2007 07:56:25 +0000 (07:56 +0000)
lib/grade/grade_item.php
lib/gradelib.php

index af7a98201521a4e0de4c77338274d4297d15cb81..ea576a1f61cf9402c5fc2ef68057b4a83ba76aff 100644 (file)
@@ -374,7 +374,7 @@ class grade_item extends grade_object {
                 $this->idnumber = rand(0,9999999999); // TODO replace rand() with proper random generator
             }
         }
-
+/*
         // If a grade_item already exists with these itemtype, itemmodule and iteminstance
         // but not itemnumber, generate an itemnumber.
         if (empty($this->itemnumber) && !empty($this->itemtype) && !empty($this->itemmodule) && !empty($this->iteminstance)) {
@@ -389,7 +389,7 @@ class grade_item extends grade_object {
 
             $this->itemnumber = $existing_item->itemnumber + 1;
         }
-
+*/
 
         $result = parent::insert();
 
@@ -1037,7 +1037,9 @@ class grade_item extends grade_object {
      * @param int $feedbackformat
      * @return mixed grade_grades object if ok, false if error
      */
-    function update_raw_grade($userid, $rawgrade=false, $howmodified='manual', $note=NULL, $feedback=false, $feedbackformat=FORMAT_MOODLE) {
+    function update_raw_grade($userid, $rawgrade=false, $source='manual', $note=NULL, $feedback=false, $feedbackformat=FORMAT_MOODLE) {
+        global $CFG;
+        require_once($CFG->libdir.'/eventslib.php');
 
         // calculated grades can not be updated
         if ($this->is_calculated()) {
@@ -1098,13 +1100,39 @@ class grade_item extends grade_object {
         }
 
         // TODO Handle history recording error, such as displaying a notice, but still return true
-        grade_history::insert_change($userid, $this->id, $grade->rawgrade, $oldgrade, $howmodified, $note);
+        grade_history::insert_change($userid, $this->id, $grade->rawgrade, $oldgrade, $source, $note);
 
         // This grade item needs update
         $this->force_regrading();
 
         if ($result) {
+
+            // trigger grade_updated event notification
+            $eventdata = new object();
+    
+            $eventdata->source       = $source;
+            $eventdata->itemid       = $this->id;
+            $eventdata->courseid     = $this->courseid;
+            $eventdata->itemtype     = $this->itemtype;
+            $eventdata->itemmodule   = $this->itemmodule;
+            $eventdata->iteminstance = $this->iteminstance;
+            $eventdata->itemnumber   = $this->itemnumber;
+            $eventdata->idnumber     = $this->idnumber;
+            $eventdata->userid       = $grade->userid;
+            $eventdata->rawgrade     = $grade->rawgrade;
+    
+            // load existing text annotation
+            if ($grade_text = $grade->load_text()) {
+                $eventdata->feedback          = $grade_text->feedback;
+                $eventdata->feedbackformat    = $grade_text->feedbackformat;
+                $eventdata->information       = $grade_text->information;
+                $eventdata->informationformat = $grade_text->informationformat;
+            }
+    
+            events_trigger('grade_updated', $eventdata);
+
             return $grade;
+
         } else {
             return false;
         }
index 7b30ed7cb895ab0c036098ecb789b9c9b07741da..9479652de56c97fe938c0b31f3e7c11eddb84c6a 100644 (file)
@@ -90,12 +90,15 @@ function grade_update($source, $courseid, $itemtype, $itemmodule, $iteminstance,
     // only following grade_item properties can be changed in this function
     $allowed = array('itemname', 'idnumber', 'gradetype', 'grademax', 'grademin', 'scaleid', 'multfactor', 'plusfactor', 'deleted');
 
+    // grade item identification
+    $params = compact('courseid', 'itemtype', 'itemmodule', 'iteminstance', 'itemnumber');
+
     if (is_null($courseid) or is_null($itemtype)) {
         debugging('Missing courseid or itemtype');
         return GRADE_UPDATE_FAILED;
     }
 
-    if (!$grade_items = grade_item::fetch_all(compact('courseid', 'itemtype', 'itemmodule', 'iteminstance', 'itemnumber'))) {
+    if (!$grade_items = grade_item::fetch_all($params)) {
         // create a new one
         $grade_item = false;
 
@@ -104,14 +107,12 @@ function grade_update($source, $courseid, $itemtype, $itemmodule, $iteminstance,
         unset($grade_items); //release memory
 
     } else {
-
         debugging('Found more than one grade item');
         return GRADE_UPDATE_MULTIPLE;
     }
 
 /// Create or update the grade_item if needed
     if (!$grade_item) {
-        $params = compact('courseid', 'itemtype', 'itemmodule', 'iteminstance', 'itemnumber');
         if ($itemdetails) {
             $itemdetails = (array)$itemdetails;
 
@@ -217,36 +218,9 @@ function grade_update($source, $courseid, $itemtype, $itemmodule, $iteminstance,
         }
 
         // update or insert the grade
-        $grade = $grade_item->update_raw_grade($userid, $rawgrade, $source, null, $feedback, $feedbackformat);
-
-        if (!$grade) {
+        if (!$grade_item->update_raw_grade($userid, $rawgrade, $source, null, $feedback, $feedbackformat)) {
             $failed = true;
-            continue;
-        }
-
-        // trigger grade_updated event notification
-        $eventdata = new object();
-
-        $eventdata->source            = $source;
-        $eventdata->itemid            = $grade_item->id;
-        $eventdata->courseid          = $grade_item->courseid;
-        $eventdata->itemtype          = $grade_item->itemtype;
-        $eventdata->itemmodule        = $grade_item->itemmodule;
-        $eventdata->iteminstance      = $grade_item->iteminstance;
-        $eventdata->itemnumber        = $grade_item->itemnumber;
-        $eventdata->idnumber          = $grade_item->idnumber;
-        $eventdata->userid            = $grade->userid;
-        $eventdata->rawgrade        = $grade->rawgrade;
-
-        // load existing text annotation
-        if ($grade_text = $grade->load_text()) {
-            $eventdata->feedback          = $grade_text->feedback;
-            $eventdata->feedbackformat    = $grade_text->feedbackformat;
-            $eventdata->information       = $grade_text->information;
-            $eventdata->informationformat = $grade_text->informationformat;
         }
-
-        events_trigger('grade_updated', $eventdata);
     }
 
     if (!$failed) {