MDL-34658 - Saving failed because missing or false values
authorAndreas Grabs <moodle@grabs-edv.de>
Thu, 2 Aug 2012 22:24:55 +0000 (00:24 +0200)
committerAndreas Grabs <moodle@grabs-edv.de>
Fri, 3 Aug 2012 10:01:21 +0000 (12:01 +0200)
mod/feedback/item/numeric/lib.php
mod/feedback/lib.php

index 829dd1b..86d4be0 100644 (file)
@@ -540,8 +540,13 @@ class feedback_item_numeric extends feedback_item_base {
     }
 
     public function clean_input_value($value) {
+        $value = str_replace($this->sep_dec, FEEDBACK_DECIMAL, $value);
         if (!is_numeric($value)) {
-            return null;
+            if ($value == '') {
+                return null; //an empty string should be null
+            } else {
+                return clean_param($value, PARAM_TEXT); //we have to know the value if it is wrong
+            }
         }
         return clean_param($value, $this->value_type());
     }
index 8705bbc..8c6dd59 100644 (file)
@@ -2203,10 +2203,13 @@ function feedback_check_values($firstitem, $lastitem) {
         $formvalname = $item->typ . '_' . $item->id;
 
         if ($itemobj->value_is_array()) {
-            $value = optional_param_array($formvalname, null, $itemobj->value_type());
+            //get the raw value here. It is cleaned after that by the object itself
+            $value = optional_param_array($formvalname, null, PARAM_RAW);
         } else {
-            $value = optional_param($formvalname, null, $itemobj->value_type());
+            //get the raw value here. It is cleaned after that by the object itself
+            $value = optional_param($formvalname, null, PARAM_RAW);
         }
+        $value = $itemobj->clean_input_value($value);
 
         //check if the value is set
         if (is_null($value) AND $item->required == 1) {