Merge branch 'MDL-27675_master' of git://github.com/grabs/moodle
authorSam Hemelryk <sam@moodle.com>
Wed, 20 Jun 2012 23:25:07 +0000 (11:25 +1200)
committerSam Hemelryk <sam@moodle.com>
Wed, 20 Jun 2012 23:25:07 +0000 (11:25 +1200)
12 files changed:
mod/feedback/complete.php
mod/feedback/complete_guest.php
mod/feedback/item/captcha/lib.php
mod/feedback/item/feedback_item_class.php
mod/feedback/item/info/lib.php
mod/feedback/item/label/lib.php
mod/feedback/item/multichoice/lib.php
mod/feedback/item/multichoicerated/lib.php
mod/feedback/item/numeric/lib.php
mod/feedback/item/textarea/lib.php
mod/feedback/item/textfield/lib.php
mod/feedback/lib.php

index 7fee641..e4c202c 100644 (file)
@@ -507,11 +507,8 @@ if ($feedback_can_submit) {
                 //get the value
                 $frmvaluename = $feedbackitem->typ . '_'. $feedbackitem->id;
                 if (isset($savereturn)) {
-                    if (isset($formdata->{$frmvaluename})) {
-                        $value = $formdata->{$frmvaluename};
-                    } else {
-                        $value = null;
-                    }
+                    $value = isset($formdata->{$frmvaluename}) ? $formdata->{$frmvaluename} : null;
+                    $value = feedback_clean_input_value($feedbackitem, $value);
                 } else {
                     if (isset($feedbackcompletedtmp->id)) {
                         $value = feedback_get_item_value($feedbackcompletedtmp->id,
@@ -530,6 +527,7 @@ if ($feedback_can_submit) {
                     feedback_print_item_complete($feedbackitem, $value, $highlightrequired);
                     echo $OUTPUT->box_end();
                 }
+
                 echo $OUTPUT->box_end();
 
                 $lastbreakposition = $feedbackitem->position; //last item-pos (item or pagebreak)
index 25747a9..b472c09 100644 (file)
@@ -72,7 +72,7 @@ if (isset($formdata->sesskey) AND
    !isset($formdata->gonextpage) AND
    !isset($formdata->gopreviouspage)) {
 
-    $gopage = $formdata->lastpage;
+    $gopage = (int) $formdata->lastpage;
 }
 if (isset($formdata->savevalues)) {
     $savevalues = true;
@@ -441,13 +441,10 @@ if ($feedback_can_submit) {
                 echo $OUTPUT->box_start('feedback_item_box_'.$align.$dependstyle);
                 $value = '';
                 //get the value
-                $frmvaluename = $feedbackitem->typ.'_'.$feedbackitem->id;
+                $frmvaluename = $feedbackitem->typ . '_'. $feedbackitem->id;
                 if (isset($savereturn)) {
-                    if (isset($formdata->{$frmvaluename})) {
-                        $value = $formdata->{$frmvaluename};
-                    } else {
-                        $value = null;
-                    }
+                    $value = isset($formdata->{$frmvaluename}) ? $formdata->{$frmvaluename} : null;
+                    $value = feedback_clean_input_value($feedbackitem, $value);
                 } else {
                     if (isset($feedbackcompletedtmp->id)) {
                         $value = feedback_get_item_value($feedbackcompletedtmp->id,
@@ -466,6 +463,7 @@ if ($feedback_can_submit) {
                     feedback_print_item_complete($feedbackitem, $value, $highlightrequired);
                     echo $OUTPUT->box_end();
                 }
+
                 echo $OUTPUT->box_end();
 
                 $lastbreakposition = $feedbackitem->position; //last item-pos (item or pagebreak)
index 126d51e..f790a65 100644 (file)
@@ -326,4 +326,12 @@ class feedback_item_captcha extends feedback_item_base {
     public function can_switch_require() {
         return false;
     }
+
+    public function value_type() {
+        return PARAM_RAW;
+    }
+
+    public function clean_input_value($value) {
+        return clean_param($value, $this->value_type());
+    }
 }
index 981aefd..a1b7d3c 100644 (file)
@@ -128,6 +128,14 @@ abstract class feedback_item_base {
      */
     abstract public function print_item_show_value($item, $value = '');
 
+    /**     
+     * cleans the userinput while submitting the form
+     *
+     * @param mixed $value
+     * @return mixed
+     */
+    abstract public function clean_input_value($value);
+
 }
 
 //a dummy class to realize pagebreaks
@@ -175,7 +183,9 @@ class feedback_item_pagebreak extends feedback_item_base {
     }
     public function can_switch_require() {
     }
+    public function value_type() {
+    }
+    public function clean_input_value($value) {
+    }
 
 }
-
-
index 299fef2..fbdf2d9 100644 (file)
@@ -388,4 +388,12 @@ class feedback_item_info extends feedback_item_base {
     public function can_switch_require() {
         return false;
     }
+
+    public function value_type() {
+        return PARAM_INT;
+    }
+
+    public function clean_input_value($value) {
+        return clean_param($value, $this->value_type());
+    }
 }
index 25c62a9..06db990 100644 (file)
@@ -270,4 +270,10 @@ class feedback_item_label extends feedback_item_base {
     }
     public function get_analysed($item, $groupid = false, $courseid = false) {
     }
+    public function value_type() {
+        return PARAM_BOOL;
+    }
+    public function clean_input_value($value) {
+        return '';
+    }
 }
index cfba141..3e5501f 100644 (file)
@@ -826,4 +826,8 @@ class feedback_item_multichoice extends feedback_item_base {
     public function value_is_array() {
         return true;
     }
+
+    public function clean_input_value($value) {
+        return clean_param_array($value, $this->value_type());
+    }
 }
index 031f7b8..ca43a44 100644 (file)
@@ -678,4 +678,11 @@ class feedback_item_multichoicerated extends feedback_item_base {
         return true;
     }
 
+    public function value_type() {
+        return PARAM_INT;
+    }
+
+    public function clean_input_value($value) {
+        return clean_param($value, $this->value_type());
+    }
 }
index 2369413..ada5d32 100644 (file)
@@ -364,7 +364,7 @@ class feedback_item_numeric extends feedback_item_base {
                      'name="'.$item->typ.'_'.$item->id.'" '.
                      'size="10" '.
                      'maxlength="10" '.
-                     'value="'.($value ? $value : '').'" />';
+                     'value="'.$value.'" />';
 
         echo '</span>';
         echo '</div>';
@@ -534,4 +534,15 @@ class feedback_item_numeric extends feedback_item_base {
     public function can_switch_require() {
         return true;
     }
+    
+    public function value_type() {
+        return PARAM_FLOAT;
+    }
+
+    public function clean_input_value($value) {
+        if (!is_numeric($value)) {
+            return null;
+        }
+        return clean_param($value, $this->value_type());
+    }
 }
index 54df5e6..74605bc 100644 (file)
@@ -262,7 +262,7 @@ class feedback_item_textarea extends feedback_item_base {
         echo '<textarea name="'.$item->typ.'_'.$item->id.'" '.
                        'cols="'.$presentation[0].'" '.
                        'rows="'.$presentation[1].'">';
-        echo ($value ? htmlspecialchars($value) : '');
+        echo $value;
         echo '</textarea>';
         echo '</span>';
         echo '</div>';
@@ -308,7 +308,7 @@ class feedback_item_textarea extends feedback_item_base {
     }
 
     public function create_value($data) {
-        $data = clean_text($data);
+        $data = s($data);
         return $data;
     }
 
@@ -333,4 +333,12 @@ class feedback_item_textarea extends feedback_item_base {
     public function can_switch_require() {
         return true;
     }
+
+    public function value_type() {
+        return PARAM_RAW;
+    }
+
+    public function clean_input_value($value) {
+        return s($value);
+    }
 }
index 4051ffb..0d151ae 100644 (file)
@@ -252,7 +252,7 @@ class feedback_item_textfield extends feedback_item_base {
                     'name="'.$item->typ.'_'.$item->id.'" '.
                     'size="'.$presentation[0].'" '.
                     'maxlength="'.$presentation[1].'" '.
-                    'value="'.($value ? htmlspecialchars($value) : '').'" />';
+                    'value="'.$value.'" />';
         echo '</span>';
         echo '</div>';
     }
@@ -295,7 +295,7 @@ class feedback_item_textfield extends feedback_item_base {
     }
 
     public function create_value($data) {
-        $data = clean_text($data);
+        $data = s($data);
         return $data;
     }
 
@@ -320,4 +320,12 @@ class feedback_item_textfield extends feedback_item_base {
     public function can_switch_require() {
         return true;
     }
+
+    public function value_type() {
+        return PARAM_RAW;
+    }
+
+    public function clean_input_value($value) {
+        return s($value);
+    }
 }
index 3c9809b..5807e8c 100644 (file)
@@ -2058,6 +2058,17 @@ function feedback_get_page_to_continue($feedbackid, $courseid = false, $guestid
 //functions to handle the values
 ////////////////////////////////////////////////
 
+/**     
+ * cleans the userinput while submitting the form.
+ *
+ * @param mixed $value
+ * @return mixed
+ */
+function feedback_clean_input_value($item, $value) {
+    $itemobj = feedback_get_item_class($item->typ);
+    return $itemobj->clean_input_value($value);
+}
+
 /**
  * this saves the values of an completed.
  * if the param $tmp is set true so the values are saved temporary in table feedback_valuetmp.