CRM-14423 - CRM_Utils_System - Simplify time-zone lookups
authorTim Otten <totten@civicrm.org>
Fri, 4 Apr 2014 07:27:41 +0000 (00:27 -0700)
committerTim Otten <totten@civicrm.org>
Fri, 4 Apr 2014 07:51:36 +0000 (00:51 -0700)
CRM/Utils/System/Base.php
CRM/Utils/System/Drupal.php
CRM/Utils/System/Drupal6.php
CRM/Utils/System/UnitTests.php

index 9cccc92be52e857d68ff9c5ad83b124c2585be74..0a4d508e4b11ce5477459980cc88dd7d6d3d3d1e 100644 (file)
@@ -215,7 +215,7 @@ abstract class CRM_Utils_System_Base {
    * @return string Timezone e.g. 'America/Los_Angeles'
    */
   function getTimeZoneString() {
-    return NULL;
+    return date_default_timezone_get();
   }
 
   /**
index 29af79e2c775dafa03c38d1806aa1372f2a46caf..c9c9bf56756a8518bdfe7cdde95a22f5a1bf9b37 100644 (file)
@@ -960,30 +960,20 @@ AND    u.status = 1
   }
 
   /**
-   * Get timezone from Drupal
-   * @return boolean|string
+   * Over-ridable function to get timezone as a string eg.
+   * @return string Timezone e.g. 'America/Los_Angeles'
    */
-  function getTimeZoneOffset(){
+  function getTimeZoneString() {
     global $user;
     if (variable_get('configurable_timezones', 1) && $user->uid && strlen($user->timezone)) {
       $timezone = $user->timezone;
     } else {
       $timezone = variable_get('date_default_timezone', null);
     }
-    $tzObj = new DateTimeZone($timezone);
-    $dateTime = new DateTime("now", $tzObj);
-    $tz = $tzObj->getOffset($dateTime);
-
-    if(empty($tz)){
-      return false;
-    }
-
-    $timeZoneOffset = sprintf("%02d:%02d", $tz / 3600, abs(($tz/60)%60));
-
-    if($timeZoneOffset > 0){
-      $timeZoneOffset = '+' . $timeZoneOffset;
+    if (!$timezone) {
+      $timezone = parent::getTimeZoneString();
     }
-    return $timeZoneOffset;
+    return $timezone;
   }
   /**
    * Reset any system caches that may be required for proper CiviCRM
index 363ec0c931b70fc3a6639f083de5afa9151193bc..2345de532b3316efd155f7fad6f4fa12c5954201 100644 (file)
@@ -938,25 +938,20 @@ class CRM_Utils_System_Drupal6 extends CRM_Utils_System_DrupalBase {
   }
 
   /**
-   * Get timezone from Drupal
-   * @return boolean|string
+   * Over-ridable function to get timezone as a string eg.
+   * @return string Timezone e.g. 'America/Los_Angeles'
    */
-  function getTimeZoneOffset(){
+  function getTimeZoneString() {
     global $user;
     if (variable_get('configurable_timezones', 1) && $user->uid && strlen($user->timezone)) {
       $timezone = $user->timezone;
     } else {
       $timezone = variable_get('date_default_timezone', null);
     }
-    if(empty($timezone)){
-      return false;
+    if (!$timezone) {
+      $timezone = parent::getTimeZoneString();
     }
-    $hour = $user->timezone / 3600;
-    $timeZoneOffset = sprintf("%02d:%02d", $timezone / 3600, abs(($timeZoneOffset/60)%60));
-    if($timeZoneOffset > 0){
-      $timeZoneOffset = '+' . $timeZoneOffset;
-    }
-    return $timeZoneOffset;
+    return $timezone;
   }
 
 
index c45dec94279d2ca1002776e994b3b0235805b50f..b7afc8b2c1530f1a0d3aa4fd0fdfcddb53d122d6 100644 (file)
@@ -174,5 +174,13 @@ class CRM_Utils_System_UnitTests extends CRM_Utils_System_Drupal {
     throw new Exception("Method not implemented: getLoginURL");
   }
 
+  /**
+   * Over-ridable function to get timezone as a string eg.
+   * @return string Timezone e.g. 'America/Los_Angeles'
+   */
+  function getTimeZoneString() {
+    // This class extends Drupal, but we don't want Drupal's behavior; reproduce CRM_Utils_System_Base::getTimeZoneString
+    return date_default_timezone_get();
+  }
 }