MDL-27675 - Feedback module abuses data_submitted

This commit is contained in:
Andreas Grabs
2012-05-28 00:37:19 +02:00
committed by Andreas Grabs
parent 5bb8e807eb
commit 64258fa070
12 changed files with 63 additions and 14 deletions
+3 -5
View 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)
+5 -7
View 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)
+4
View File
@@ -326,4 +326,8 @@ class feedback_item_captcha extends feedback_item_base {
public function can_switch_require() {
return false;
}
function clean_input_value($value) {
return clean_param($value, PARAM_RAW);
}
}
+10 -2
View 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 function clean_input_value($value);
}
//a dummy class to realize pagebreaks
@@ -175,7 +183,7 @@ class feedback_item_pagebreak extends feedback_item_base {
}
public function can_switch_require() {
}
public function clean_input_value($value) {
}
}
+4
View File
@@ -388,4 +388,8 @@ class feedback_item_info extends feedback_item_base {
public function can_switch_require() {
return false;
}
function clean_input_value($value) {
return clean_param($value, PARAM_INT);
}
}
+3
View File
@@ -270,4 +270,7 @@ class feedback_item_label extends feedback_item_base {
}
public function get_analysed($item, $groupid = false, $courseid = false) {
}
public function clean_input_value($value) {
return '';
}
}
+8
View File
@@ -826,4 +826,12 @@ class feedback_item_multichoice extends feedback_item_base {
public function value_is_array() {
return true;
}
function can_switch_require() {
return true;
}
function clean_input_value($value) {
return clean_param_array($value, PARAM_INT);
}
}
@@ -678,4 +678,7 @@ class feedback_item_multichoicerated extends feedback_item_base {
return true;
}
function clean_input_value($value) {
return clean_param($value, PARAM_INT);
}
}
+4
View File
@@ -534,4 +534,8 @@ class feedback_item_numeric extends feedback_item_base {
public function can_switch_require() {
return true;
}
function clean_input_value($value) {
return clean_param($value, PARAM_FLOAT);
}
}
+4
View File
@@ -333,4 +333,8 @@ class feedback_item_textarea extends feedback_item_base {
public function can_switch_require() {
return true;
}
function clean_input_value($value) {
return clean_param($value, PARAM_CLEANHTML);
}
}
+4
View File
@@ -320,4 +320,8 @@ class feedback_item_textfield extends feedback_item_base {
public function can_switch_require() {
return true;
}
function clean_input_value($value) {
return clean_param($value, PARAM_CLEANHTML);
}
}
+11
View File
@@ -2064,6 +2064,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.