diff --git a/lib/moodlelib.php b/lib/moodlelib.php index 0d46fe4ef1c39..8de7f8ec319a8 100644 --- a/lib/moodlelib.php +++ b/lib/moodlelib.php @@ -133,6 +133,14 @@ /** * PARAM_FLOAT - a real/floating point number. + * + * Note that you should not use PARAM_FLOAT for numbers typed in by the user. + * It does not work for languages that use , as a decimal separator. + * Instead, do something like + * $rawvalue = required_param('name', PARAM_RAW); + * // ... other code including require_login, which sets current lang ... + * $realvalue = unformat_float($rawvalue); + * // ... then use $realvalue */ define('PARAM_FLOAT', 'float'); diff --git a/mod/quiz/edit.php b/mod/quiz/edit.php index 8a5c4193df43f..cb7b7f5403c7b 100644 --- a/mod/quiz/edit.php +++ b/mod/quiz/edit.php @@ -318,7 +318,7 @@ function module_specific_controls($totalnumber, $recurse, $category, $cmid, $cmo if (preg_match('!^g([0-9]+)$!', $key, $matches)) { // Parse input for question -> grades $questionid = $matches[1]; - $quiz->grades[$questionid] = clean_param($value, PARAM_FLOAT); + $quiz->grades[$questionid] = unformat_float($value); quiz_update_question_instance($quiz->grades[$questionid], $questionid, $quiz); $deletepreviews = true; $recomputesummarks = true; @@ -384,8 +384,8 @@ function module_specific_controls($totalnumber, $recurse, $category, $cmid, $cmo $deletepreviews = true; } - // If rescaling is required save the new maximum - $maxgrade = optional_param('maxgrade', -1, PARAM_FLOAT); + // If rescaling is required save the new maximum. + $maxgrade = unformat_float(optional_param('maxgrade', -1, PARAM_RAW)); if ($maxgrade >= 0) { quiz_set_grade($maxgrade, $quiz); }