]> git.mjollnir.org Git - moodle.git/commitdiff
MDL-19210 eliminate the generation of multiple dataitems having the same item number
authorpichetp <pichetp>
Thu, 21 May 2009 12:10:42 +0000 (12:10 +0000)
committerpichetp <pichetp>
Thu, 21 May 2009 12:10:42 +0000 (12:10 +0000)
question/type/calculated/questiontype.php

index 31428e287b1acd7d1fc3504de1dd16f5a1b599e1..3be9faa2f7eedcf8faa725bb612fb0409658e69b 100644 (file)
@@ -976,8 +976,19 @@ class question_calculated_qtype extends default_questiontype {
                             WHERE definition = ? ORDER BY itemnumber", array($datasetdef->id));
                 }
                 for ($numberadded =$maxnumber+1 ; $numberadded <= $maxnumber+$numbertoadd ; $numberadded++){
-                    if (isset($datasetdefs[$defid]->items[$numberadded]) && ! $regenerate ){
-                        //  echo "<p>Reuse an previously used record".$numberadded."id".$datasetdef->id."</p>";
+                    if (isset($datasetdefs[$defid]->items[$numberadded])  ){
+                               // in case of regenerate it modifies the already existing record
+                               if ( $regenerate ) {
+                                       $datasetitem = new stdClass;
+                                       $datasetitem->id = $datasetdefs[$defid]->items[$numberadded]->id;
+                                       $datasetitem->definition = $datasetdef->id ;
+                                       $datasetitem->itemnumber = $numberadded;
+                                               $datasetitem->value = $this->generate_dataset_item($datasetdef->options);
+                                                               if (!$DB->update_record('question_dataset_items', $datasetitem)) {
+                                                                   print_error('cannotupdateitem', 'question');
+                                                               }
+                                                     }
+                                             //if not regenerate do nothing as there is already a record
                     } else {
                         $datasetitem = new stdClass;
                         $datasetitem->definition = $datasetdef->id ;