]> git.mjollnir.org Git - moodle.git/commitdiff
MDL-12458 fixed gradebook upgrade/update problems when not grades yet in activities...
authorskodak <skodak>
Tue, 25 Dec 2007 20:51:23 +0000 (20:51 +0000)
committerskodak <skodak>
Tue, 25 Dec 2007 20:51:23 +0000 (20:51 +0000)
mod/assignment/lib.php
mod/data/lib.php
mod/forum/lib.php
mod/glossary/lib.php
mod/hotpot/lib.php
mod/lesson/lib.php
mod/quiz/lib.php
mod/scorm/lib.php

index 496f60f4d42e6529dae5962a86449f311b07e163..7ec070fc2632c93d8b0aac45a5e241eed4d7624b 100644 (file)
@@ -2147,7 +2147,7 @@ function assignment_update_grades($assignment=null, $userid=0, $nullifnone=true)
             }
             assignment_grade_item_update($assignment, $grades);
         } else {
-            assignment_grade_item_update($assignment, NULL);
+            assignment_grade_item_update($assignment);
         }
 
     } else {
index 1b3a9e86f58cad8b6f38f8a2625fdf3278358f7e..0c5388b5875c230ff43cd0d2b9c2577967c76184 100755 (executable)
@@ -767,13 +767,16 @@ function data_update_grades($data=null, $userid=0, $nullifnone=true) {
 
     if ($data != null) {
         if ($grades = data_get_user_grades($data, $userid)) {
-            grade_update('mod/data', $data->course, 'mod', 'data', $data->id, 0, $grades);
+            data_grade_item_update($data, $grades);
 
         } else if ($userid and $nullifnone) {
             $grade = new object();
             $grade->userid   = $userid;
             $grade->rawgrade = NULL;
-            grade_update('mod/data', $data->course, 'mod', 'data', $data->id, 0, $grade);
+            data_grade_item_update($data, $grade);
+
+        } else {
+            data_grade_item_update($data);
         }
 
     } else {
@@ -782,9 +785,10 @@ function data_update_grades($data=null, $userid=0, $nullifnone=true) {
                  WHERE m.name='data' AND m.id=cm.module AND cm.instance=d.id";
         if ($rs = get_recordset_sql($sql)) {
             while ($data = rs_fetch_next_record($rs)) {
-                data_grade_item_update($data);
                 if ($data->assessed) {
                     data_update_grades($data, 0, false);
+                } else {
+                    data_grade_item_update($data);
                 }
             }
             rs_close($rs);
index b56c3cd57e38030a0a667fa1c3328398eb925a62..cddf6a6f5bb653bc12a5faacd3f2271a68f3adcc 100644 (file)
@@ -1123,13 +1123,16 @@ function forum_update_grades($forum=null, $userid=0, $nullifnone=true) {
     if ($forum != null) {
         require_once($CFG->libdir.'/gradelib.php');
         if ($grades = forum_get_user_grades($forum, $userid)) {
-            grade_update('mod/forum', $forum->course, 'mod', 'forum', $forum->id, 0, $grades);
+            forum_grade_item_update($forum, $grades);
 
         } else if ($userid and $nullifnone) {
             $grade = new object();
             $grade->userid   = $userid;
             $grade->rawgrade = NULL;
-            grade_update('mod/forum', $data->course, 'mod', 'forum', $forum->id, 0, $grade);
+            forum_grade_item_update($forum, $grade);
+
+        } else {
+            forum_grade_item_update($forum);
         }
 
     } else {
@@ -1138,9 +1141,10 @@ function forum_update_grades($forum=null, $userid=0, $nullifnone=true) {
                  WHERE m.name='forum' AND m.id=cm.module AND cm.instance=f.id";
         if ($rs = get_recordset_sql($sql)) {
             while ($forum = rs_fetch_next_record($rs)) {
-                forum_grade_item_update($forum);
                 if ($forum->assessed) {
                     forum_update_grades($forum, 0, false);
+                } else {
+                    forum_grade_item_update($forum);
                 }
             }
             rs_close($rs);
index a57f80ce726191dbb062631e2d1c9fa5e0febab9..177910f93474f8bd3bb18a000a50a9071f8b7a27 100644 (file)
@@ -318,13 +318,16 @@ function glossary_update_grades($glossary=null, $userid=0, $nullifnone=true) {
 
     if ($glossary != null) {
         if ($grades = glossary_get_user_grades($glossary, $userid)) {
-            grade_update('mod/glossary', $glossary->course, 'mod', 'glossary', $glossary->id, 0, $grades);
+            glossary_grade_item_update($glossary, $grades);
 
         } else if ($userid and $nullifnone) {
             $grade = new object();
             $grade->userid   = $userid;
             $grade->rawgrade = NULL;
-            grade_update('mod/glossary', $glossary->course, 'mod', 'glossary', $glossary->id, 0, $grade);
+            glossary_grade_item_update($glossary, $grade);
+
+        } else {
+            glossary_grade_item_update($glossary);
         }
 
     } else {
@@ -333,9 +336,10 @@ function glossary_update_grades($glossary=null, $userid=0, $nullifnone=true) {
                  WHERE m.name='glossary' AND m.id=cm.module AND cm.instance=g.id";
         if ($rs = get_recordset_sql($sql)) {
             while ($glossary = rs_fetch_next_record($rs)) {
-                glossary_grade_item_update($glossary);
                 if ($glossary->assessed) {
                     glossary_update_grades($glossary, 0, false);
+                } else {
+                    glossary_grade_item_update($glossary);
                 }
             }
             rs_close($rs);
index bc893c1b700bf37ade0e7b27dae7976288436e12..0c20858f25bd08a6fc24c16ff80811ae0fa5f283 100644 (file)
@@ -1230,13 +1230,16 @@ function hotpot_update_grades($hotpot=null, $userid=0, $nullifnone=true) {
     }
     if ($hotpot) {
         if ($grades = hotpot_get_user_grades($hotpot, $userid)) {
-            grade_update('mod/hotpot', $hotpot->course, 'mod', 'hotpot', $hotpot->id, 0, $grades);
+            hotpot_grade_item_update($hotpot, $grades);
 
         } else if ($userid && $nullifnone) {
             $grade = new object();
             $grade->userid   = $userid;
             $grade->rawgrade = null;
-            grade_update('mod/hotpot', $hotpot->course, 'mod', 'hotpot', $hotpot->id, 0, $grade);
+            hotpot_grade_item_update($hotpot, $grade);
+
+        } else {
+            hotpot_grade_item_update($hotpot);            
         }
     } else {
         $sql = "SELECT h.*, cm.idnumber as cmidnumber
@@ -1244,7 +1247,6 @@ function hotpot_update_grades($hotpot=null, $userid=0, $nullifnone=true) {
                  WHERE m.name='hotpot' AND m.id=cm.module AND cm.instance=s.id";
         if ($rs = get_recordset_sql($sql)) {
             while ($hotpot = rs_fetch_next_record($rs)) {
-                hotpot_grade_item_update($hotpot);
                 hotpot_update_grades($hotpot, 0, false);
             }
             rs_close($rs);
@@ -1255,9 +1257,10 @@ function hotpot_update_grades($hotpot=null, $userid=0, $nullifnone=true) {
  * Update/create grade item for given hotpot
  *
  * @param object $hotpot object with extra cmidnumber
+ * @param mixed optional array/object of grade(s); 'reset' means reset grades in gradebook
  * @return object grade_item
  */
-function hotpot_grade_item_update($hotpot) {
+function hotpot_grade_item_update($hotpot, $grades=NULL) {
     global $CFG;
     if (!function_exists('grade_update')) { //workaround for buggy PHP versions
         require_once($CFG->libdir.'/gradelib.php');
@@ -1278,7 +1281,7 @@ function hotpot_grade_item_update($hotpot) {
         $params['gradetype'] = GRADE_TYPE_NONE;
     }
 
-    return grade_update('mod/hotpot', $hotpot->course, 'mod', 'hotpot', $hotpot->id, 0, NULL, $params);
+    return grade_update('mod/hotpot', $hotpot->course, 'mod', 'hotpot', $hotpot->id, 0, $grades, $params);
 }
 /**
  * Delete grade item for given hotpot
index 7b479ee057d02ef186b1ab953531674294635fb0..f9686017cef2a56b7535d18473ee2386411d1478 100644 (file)
@@ -378,13 +378,16 @@ function lesson_update_grades($lesson=null, $userid=0, $nullifnone=true) {
 
     if ($lesson != null) {
         if ($grades = lesson_get_user_grades($lesson, $userid)) {
-            grade_update('mod/lesson', $lesson->course, 'mod', 'lesson', $lesson->id, 0, $grades);
+            lesson_grade_item_update($lesson, $grades);
 
         } else if ($userid and $nullifnone) {
             $grade = new object();
             $grade->userid   = $userid;
             $grade->rawgrade = NULL;
-            grade_update('mod/lesson', $lesson->course, 'mod', 'lesson', $lesson->id, 0, $grade);
+            lesson_grade_item_update($lesson, $grade);
+
+        } else {
+            lesson_grade_item_update($lesson);
         }
 
     } else {
@@ -393,9 +396,10 @@ function lesson_update_grades($lesson=null, $userid=0, $nullifnone=true) {
                  WHERE m.name='lesson' AND m.id=cm.module AND cm.instance=l.id";
         if ($rs = get_recordset_sql($sql)) {
             while ($lesson = rs_fetch_next_record($rs)) {
-                lesson_grade_item_update($lesson);
                 if ($lesson->grade != 0) {
                     lesson_update_grades($lesson, 0, false);
+                } else {
+                    lesson_grade_item_update($lesson);
                 }
             }
             rs_close($rs);
index 30be4d9d8afcc3c656ce069b42e89cab722a5e2e..0fbd83373bc7b5fa8c2f0eb84363b0c1a34eb249 100644 (file)
@@ -299,6 +299,9 @@ function quiz_update_grades($quiz=null, $userid=0, $nullifnone=true) {
             $grade->userid   = $userid;
             $grade->rawgrade = NULL;
             quiz_grade_item_update($quiz, $grade);
+
+        } else {
+            quiz_grade_item_update($quiz);
         }
 
     } else {
index f2048534e5f9e093b35857bc43da7f06a156f858..5adfe0161aa6d0a836907619b66c750679a621b7 100755 (executable)
@@ -461,13 +461,16 @@ function scorm_update_grades($scorm=null, $userid=0, $nullifnone=true) {
 
     if ($scorm != null) {
         if ($grades = scorm_get_user_grades($scorm, $userid)) {
-            grade_update('mod/scorm', $scorm->course, 'mod', 'scorm', $scorm->id, 0, $grades[$userid]);
+            scorm_grade_item_update($scorm, $grades[$userid]);
 
         } else if ($userid and $nullifnone) {
             $grade = new object();
             $grade->userid   = $userid;
             $grade->rawgrade = NULL;
-            grade_update('mod/scorm', $scorm->course, 'mod', 'scorm', $scorm->id, 0, $grade);
+            scorm_grade_item_update($scorm, $grade);
+
+        } else {
+            scorm_grade_item_update($scorm);
         }
 
     } else {
@@ -476,7 +479,6 @@ function scorm_update_grades($scorm=null, $userid=0, $nullifnone=true) {
                  WHERE m.name='scorm' AND m.id=cm.module AND cm.instance=s.id";
         if ($rs = get_recordset_sql($sql)) {
             while ($scorm = rs_fetch_next_record($rs)) {
-                scorm_grade_item_update($scorm);
                 scorm_update_grades($scorm, 0, false);
             }
             rs_close($rs);