]> git.mjollnir.org Git - moodle.git/commitdiff
MDL-10105 some more idnumber fixes
authorskodak <skodak>
Thu, 2 Aug 2007 11:07:44 +0000 (11:07 +0000)
committerskodak <skodak>
Thu, 2 Aug 2007 11:07:44 +0000 (11:07 +0000)
grade/edit/tree/calculation_form.php
lib/grade/grade_item.php

index c98204e8b923abc19a2128eba631c938fc512966..8a8f1601e3ad12dca4d89bb380d25f39bcc3a61e 100644 (file)
@@ -94,17 +94,40 @@ class edit_calculation_form extends moodleform {
     function validation($data){
         $errors = array();
 
-        //first validate and store the new idnubmers
+        $mform =& $this->_form;
+
+        //first validate and store the new idnumbers
         if ($this->noidnumbers and $this->showing) {
-            foreach ($this->noidnumbers as $item) {
-                if (!empty($data['idnumber_'.$item->id])) {
-                    if(!$item->add_idnumber(stripslashes($data['idnumber_'.$item->id]))) {
-                        $errors['idnumber_'.$item->id] = get_string('error');
+            foreach ($this->noidnumbers as $grade_item) {
+                $idnumber = 'idnumber_'.$grade_item->id;
+                if (!empty($data[$idnumber])) {
+                    if ($grade_item->itemtype == 'mod') {
+                        $cm = get_coursemodule_from_instance($grade_item->itemmodule, $grade_item->iteminstance, $grade_item->courseid);
+                    } else {
+                        $cm = null;
+                    }
+
+                    if (!grade_verify_idnumber($data[$idnumber], $grade_item, $cm)) {
+                        $errors[$idnumber] = get_string('idnumbertaken');
+                        continue;
+                    }
+
+                    if (empty($grade_item->idnumber) and !$grade_item->add_idnumber(stripslashes($data['idnumber_'.$grade_item->id]))) {
+                        $errors[$idnumber] = get_string('error');
+                        continue;
                     }
                 }
+
+                // lock the adding field if idnumber already present or just changed
+                if (!empty($grade_item->idnumber)) {
+                    $el =& $mform->getElement($idnumber);
+                    $el->setValue($grade_item->idnumber);
+                    $mform->hardFreeze($idnumber);
+                }
             }
         }
 
+        // check the calculation formula
         if ($data['calculation'] != '') {
             $grade_item = grade_item::fetch(array('id'=>$data['id'], 'courseid'=>$data['courseid']));
             $result = $grade_item->validate_formula(stripslashes($data['calculation']));
@@ -112,6 +135,7 @@ class edit_calculation_form extends moodleform {
                 $errors['calculation'] = $result;
             }
         }
+
         if (0 == count($errors)){
             return true;
         } else {
index 6a996469103df41f0b041572bcef051628a9f6ba..c1a4092655cdf321c42c03c1e44e779c4753f4c1 100644 (file)
@@ -365,11 +365,10 @@ class grade_item extends grade_object {
 
     /**
      * Set idnumber of grade item, updates also course_modules table
-     * @param string $idnumber
+     * @param string $idnumber (without magic quotes)
      * @return boolean success
      */
     function add_idnumber($idnumber) {
-        //TODO: add uniqueness checking
         if (!empty($this->idnumber)) {
             return false;
         }
@@ -381,10 +380,7 @@ class grade_item extends grade_object {
             if (!empty($cm->idnumber)) {
                 return false;
             }
-            $ncm = new object();
-            $ncm->id = $cm->id;
-            $ncm->idnumber = $idnumber();
-            if(update_record('course_modules', $ncm)) {
+            if (set_field('course_modules', 'idnumber', addslashes($idnumber), 'id', $cm->id)) {
                 $this->idnumber = $idnumber;
                 return $this->update();
             }