From b64f16a6fb12639cf1b5e8fc20289414eb84c27f Mon Sep 17 00:00:00 2001 From: Jerome Mouneyrac Date: Fri, 30 Nov 2012 10:11:55 +0800 Subject: [PATCH] MDL-36773 timezone inconsistency => some number support decimal other don\'t - Original patch author: Nathan Mares --- lib/moodlelib.php | 2 +- lib/tests/moodlelib_test.php | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/lib/moodlelib.php b/lib/moodlelib.php index 32697fa40a4..bf3bdc1d4ab 100644 --- a/lib/moodlelib.php +++ b/lib/moodlelib.php @@ -1128,7 +1128,7 @@ function clean_param($param, $type) { case PARAM_TIMEZONE: //can be int, float(with .5 or .0) or string seperated by '/' and can have '-_' $param = fix_utf8($param); - $timezonepattern = '/^(([+-]?(0?[0-9](\.[5|0])?|1[0-3]|1[0-2]\.5))|(99)|[[:alnum:]]+(\/?[[:alpha:]_-])+)$/'; + $timezonepattern = '/^(([+-]?(0?[0-9](\.[5|0])?|1[0-3](\.0)?|1[0-2]\.5))|(99)|[[:alnum:]]+(\/?[[:alpha:]_-])+)$/'; if (preg_match($timezonepattern, $param)) { return $param; } else { diff --git a/lib/tests/moodlelib_test.php b/lib/tests/moodlelib_test.php index c26bab787f6..f5045c3476f 100644 --- a/lib/tests/moodlelib_test.php +++ b/lib/tests/moodlelib_test.php @@ -979,9 +979,23 @@ class moodlelib_testcase extends advanced_testcase { '0' => '0', '0.0' => '0.0', '0.5' => '0.5', + '9.0' => '9.0', + '-9.0' => '-9.0', + '+9.0' => '+9.0', + '9.5' => '9.5', + '-9.5' => '-9.5', + '+9.5' => '+9.5', + '12.0' => '12.0', + '-12.0' => '-12.0', + '+12.0' => '+12.0', + '12.5' => '12.5', '-12.5' => '-12.5', '+12.5' => '+12.5', + '13.0' => '13.0', + '-13.0' => '-13.0', + '+13.0' => '+13.0', '13.5' => '', + '+13.5' => '', '-13.5' => '', '0.2' => '');