From 2a35d8250acfd4cd114c52186b66314e63234aeb Mon Sep 17 00:00:00 2001
From: David Mudrak <david.mudrak@gmail.com>
Date: Tue, 1 Jun 2010 22:25:03 +0200
Subject: [PATCH 2/3] MDL-22062 Grade item's idnumber can be added from the calculation form

Before this patch, if activity module used multiply grade items (as
workshop does), the method add_idnumber() returned false because it
required empty idnumber in course_modules. The patch makes this check
only for grade_items with itemnumber 0.
---
 lib/grade/grade_item.php |   20 +++++++++++++-------
 1 files changed, 13 insertions(+), 7 deletions(-)

diff --git a/lib/grade/grade_item.php b/lib/grade/grade_item.php
index 8c4a7a2..09a897b 100644
--- a/lib/grade/grade_item.php
+++ b/lib/grade/grade_item.php
@@ -422,13 +422,19 @@ class grade_item extends grade_object {
         }
 
         if ($this->itemtype == 'mod' and !$this->is_outcome_item()) {
-            if (!$cm = get_coursemodule_from_instance($this->itemmodule, $this->iteminstance, $this->courseid)) {
-                return false;
-            }
-            if (!empty($cm->idnumber)) {
-                return false;
-            }
-            if ($DB->set_field('course_modules', 'idnumber', $idnumber, array('id' => $cm->id))) {
+            if ($this->itemnumber === 0) {
+                // for activity modules, itemnumber 0 is synced with the course_modules
+                if (!$cm = get_coursemodule_from_instance($this->itemmodule, $this->iteminstance, $this->courseid)) {
+                    return false;
+                }
+                if (!empty($cm->idnumber)) {
+                    return false;
+                }
+                if ($DB->set_field('course_modules', 'idnumber', $idnumber, array('id' => $cm->id))) {
+                    $this->idnumber = $idnumber;
+                    return $this->update();
+                }
+            } else {
                 $this->idnumber = $idnumber;
                 return $this->update();
             }
-- 
1.6.4.4

