]> git.mjollnir.org Git - moodle.git/commitdiff
MDL-13959 - Fix from Eloy - this makes the timezone-related functions accept an optio...
authorscyrma <scyrma>
Thu, 20 Mar 2008 03:01:58 +0000 (03:01 +0000)
committerscyrma <scyrma>
Thu, 20 Mar 2008 03:01:58 +0000 (03:01 +0000)
lib/moodlelib.php

index d58e5b65c338b21e9e0799e3d5e6cf3500564e6b..798e9b5bef76a0f70cfda6ece7b515dba529dd53 100644 (file)
@@ -1231,6 +1231,11 @@ function userdate($date, $format='', $timezone=99, $fixday = true) {
  */
 function usergetdate($time, $timezone=99) {
 
+    $strtimezone = NULL;
+    if (!is_numeric($timezone)) {
+        $strtimezone = $timezone;
+    }
+
     $timezone = get_user_timezone_offset($timezone);
 
     if (abs($timezone) > 13) {    // Server time
@@ -1238,7 +1243,7 @@ function usergetdate($time, $timezone=99) {
     }
 
     // There is no gmgetdate so we use gmdate instead
-    $time += dst_offset_on($time);
+    $time += dst_offset_on($time, $strtimezone);
     $time += intval((float)$timezone * HOURSECS);
 
     $datestring = gmstrftime('%S_%M_%H_%d_%m_%Y_%w_%j_%A_%B', $time);
@@ -1442,10 +1447,14 @@ function get_timezone_record($timezonename) {
  * @param ? $to_year ?
  * @return bool
  */
-function calculate_user_dst_table($from_year = NULL, $to_year = NULL) {
+function calculate_user_dst_table($from_year = NULL, $to_year = NULL, $strtimezone = NULL) {
     global $CFG, $SESSION;
 
-    $usertz = get_user_timezone();
+    if ($strtimezone == NULL) {
+        $usertz = get_user_timezone();
+    } else {
+        $usertz = $strtimezone;
+    }
 
     if (is_float($usertz)) {
         // Trivial timezone, no DST
@@ -1590,10 +1599,10 @@ function dst_changes_for_year($year, $timezone) {
 }
 
 // $time must NOT be compensated at all, it has to be a pure timestamp
-function dst_offset_on($time) {
+function dst_offset_on($time, $strtimezone = NULL) {
     global $SESSION;
 
-    if(!calculate_user_dst_table() || empty($SESSION->dst_offsets)) {
+    if(!calculate_user_dst_table(NULL, NULL, $strtimezone) || empty($SESSION->dst_offsets)) {
         return 0;
     }
 
@@ -1618,16 +1627,16 @@ function dst_offset_on($time) {
         if($SESSION->dst_range[0] == 1971) {
             return 0;
         }
-        calculate_user_dst_table($SESSION->dst_range[0] - 5, NULL);
-        return dst_offset_on($time);
+        calculate_user_dst_table($SESSION->dst_range[0] - 5, NULL, $strtimezone);
+        return dst_offset_on($time, $strtimezone);
     }
     else {
         // We need a year larger than $SESSION->dst_range[1]
         if($SESSION->dst_range[1] == 2035) {
             return 0;
         }
-        calculate_user_dst_table(NULL, $SESSION->dst_range[1] + 5);
-        return dst_offset_on($time);
+        calculate_user_dst_table(NULL, $SESSION->dst_range[1] + 5, $strtimezone);
+        return dst_offset_on($time, $strtimezone);
     }
 }