Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

MDL-32234 Library: usergetdate return different values when timezone …

…is set

usergetdate should return consistent values for different timezone. There are
two return path
1. If timezone is servertime, it returns getdate
2. If timezone other then servertime, it use gmstrftime, which returns string and
   values with leading zero.
In second case, leading zero's are removed and values are type casted. One major fix
is with yday, getdate returns 0 through 365, whereas %j returns 001 through 366. This
has been fixed as well.
  • Loading branch information...
commit 4a9c429b0c70c34ff3240a52bf86ceb0bc8975ec 1 parent aa753ac
@rajeshtaneja rajeshtaneja authored
Showing with 11 additions and 4 deletions.
  1. +9 −0 lib/moodlelib.php
  2. +2 −4 lib/tests/moodlelib_test.php
View
9 lib/moodlelib.php
@@ -2086,6 +2086,15 @@ function usergetdate($time, $timezone=99) {
$getdate['seconds']
) = explode('_', $datestring);
+ // set correct datatype to match with getdate()
+ $getdate['seconds'] = (int)$getdate['seconds'];
+ $getdate['yday'] = (int)$getdate['yday'] - 1; // gettime returns 0 through 365
+ $getdate['year'] = (int)$getdate['year'];
+ $getdate['mon'] = (int)$getdate['mon'];
+ $getdate['wday'] = (int)$getdate['wday'];
+ $getdate['mday'] = (int)$getdate['mday'];
+ $getdate['hours'] = (int)$getdate['hours'];
+ $getdate['minutes'] = (int)$getdate['minutes'];
return $getdate;
}
View
6 lib/tests/moodlelib_test.php
@@ -1020,10 +1020,9 @@ function test_usergetdate() {
$this->assertEquals($wday,3);
$this->assertEquals($mon,12);
$this->assertEquals($year,2009);
- $this->assertEquals($yday,357);
+ $this->assertEquals($yday,356);
$this->assertEquals($weekday, 'Wednesday');
$this->assertEquals($month, 'December');
-
$arr = usergetdate($ts);//gets the timezone from the $USER object
$arr = array_values($arr);
@@ -1035,10 +1034,9 @@ function test_usergetdate() {
$this->assertEquals($wday,3);
$this->assertEquals($mon,12);
$this->assertEquals($year,2009);
- $this->assertEquals($yday,357);
+ $this->assertEquals($yday,356);
$this->assertEquals($weekday, 'Wednesday');
$this->assertEquals($month, 'December');
-
//set the timezone back to what it was
$USER->timezone = $userstimezone;
Please sign in to comment.
Something went wrong with that request. Please try again.