Permalink
Browse files

Merge branch 'MDL-35419_22' of git://github.com/timhunt/moodle into M…

…OODLE_22_STABLE
  • Loading branch information...
2 parents 35cc173 + ee7a905 commit 3b4f791ba0f07f822983989194e57df66ec4225c @stronk7 stronk7 committed Sep 17, 2012
Showing with 32 additions and 10 deletions.
  1. +3 −3 question/behaviour/behaviourbase.php
  2. +27 −0 question/engine/lib.php
  3. +2 −7 question/engine/questionattempt.php
@@ -477,9 +477,9 @@ public function process_comment(question_attempt_pending_step $pendingstep) {
*/
public static function is_manual_grade_in_range($qubaid, $slot) {
$prefix = 'q' . $qubaid . ':' . $slot . '_';
- $mark = optional_param($prefix . '-mark', null, PARAM_NUMBER);
- $maxmark = optional_param($prefix . '-maxmark', null, PARAM_NUMBER);
- $minfraction = optional_param($prefix . ':minfraction', null, PARAM_NUMBER);
+ $mark = question_utils::optional_param_mark($prefix . '-mark');
+ $maxmark = optional_param($prefix . '-maxmark', null, PARAM_FLOAT);
+ $minfraction = optional_param($prefix . ':minfraction', null, PARAM_FLOAT);
return is_null($mark) || ($mark >= $minfraction * $maxmark && $mark <= $maxmark);
}
@@ -789,6 +789,33 @@ public static function int_to_roman($number) {
return self::$thousands[$number / 1000 % 10] . self::$hundreds[$number / 100 % 10] .
self::$tens[$number / 10 % 10] . self::$units[$number % 10];
}
+
+ /**
+ * Typically, $mark will have come from optional_param($name, null, PARAM_RAW_TRIMMED).
+ * This method copes with:
+ * - keeping null or '' input unchanged.
+ * - nubmers that were typed as either 1.00 or 1,00 form.
+ *
+ * @param string|null $mark raw use input of a mark.
+ * @return float|string|null cleaned mark as a float if possible. Otherwise '' or null.
+ */
+ public static function clean_param_mark($mark) {
+ if ($mark === '' || is_null($mark)) {
+ return $mark;
+ }
+
+ return clean_param(str_replace(',', '.', $mark), PARAM_FLOAT);
+ }
+
+ /**
+ * Get a sumitted variable (from the GET or POST data) that is a mark.
+ * @param string $parname the submitted variable name.
+ * @return float|string|null cleaned mark as a float if possible. Otherwise '' or null.
+ */
+ public static function optional_param_mark($parname) {
+ return self::clean_param_mark(
+ optional_param($parname, null, PARAM_RAW_TRIMMED));
+ }
}
@@ -882,13 +882,8 @@ protected function get_resume_data() {
public function get_submitted_var($name, $type, $postdata = null) {
switch ($type) {
case self::PARAM_MARK:
- // Special case to work around PARAM_NUMBER converting '' to 0.
- $mark = $this->get_submitted_var($name, PARAM_RAW_TRIMMED, $postdata);
- if ($mark === '' || is_null($mark)) {
- return $mark;
- } else {
- return clean_param(str_replace(',', '.', $mark), PARAM_NUMBER);
- }
+ // Special case to work around PARAM_FLOAT converting '' to 0.
+ return question_utils::clean_param_mark($this->get_submitted_var($name, PARAM_RAW_TRIMMED, $postdata));
case self::PARAM_FILES:
return $this->process_response_files($name, $name, $postdata);

0 comments on commit 3b4f791

Please sign in to comment.