summaryrefslogtreecommitdiff
path: root/program/include/rcube_config.php
diff options
context:
space:
mode:
authorthomascube <thomas@roundcube.net>2011-09-28 11:49:37 +0000
committerthomascube <thomas@roundcube.net>2011-09-28 11:49:37 +0000
commit65082b3adbfaa04c4aff7c41147bb43e34941106 (patch)
tree193989ac4b845ed55db352c7790f5f10fab9f347 /program/include/rcube_config.php
parent1991b77ace5fe11fc897ac4795c9f9771f6ae57c (diff)
Distinguish standard timezone offset and DST of client
Diffstat (limited to 'program/include/rcube_config.php')
-rw-r--r--program/include/rcube_config.php25
1 files changed, 17 insertions, 8 deletions
diff --git a/program/include/rcube_config.php b/program/include/rcube_config.php
index 31b7ed6b7..4e402354d 100644
--- a/program/include/rcube_config.php
+++ b/program/include/rcube_config.php
@@ -90,6 +90,13 @@ class rcube_config
// enable display_errors in 'show' level, but not for ajax requests
ini_set('display_errors', intval(empty($_REQUEST['_remote']) && ($this->prop['debug_level'] & 4)));
+
+ // set timezone auto settings values
+ if ($this->prop['timezone'] == 'auto') {
+ $this->prop['_timezone_auto'] = true;
+ $this->prop['dst_active'] = intval(date('I'));
+ $this->prop['timezone'] = date('Z') / 3600 - $this->prop['dst_active'];
+ }
// export config data
$GLOBALS['CONFIG'] = &$this->prop;
@@ -207,6 +214,12 @@ class rcube_config
$this->userprefs = $prefs;
$this->prop = array_merge($this->prop, $prefs);
+
+ // override timezone settings with client values
+ if ($this->prop['_timezone_auto']) {
+ $this->prop['timezone'] = isset($_SESSION['timezone']) ? $_SESSION['timezone'] : $this->prop['timezone'];
+ $this->prop['dst_active'] = isset($_SESSION['dst_active']) ? $_SESSION['dst_active'] : $this->prop['dst_active'];
+ }
}
@@ -221,17 +234,13 @@ class rcube_config
}
/**
- * Special getter for user's timezone
+ * Special getter for user's timezone offset including DST
+ *
+ * @return float Timezone offset (in hours)
*/
public function get_timezone()
{
- $tz = $this->get('timezone');
- if ($tz == 'auto')
- $tz = isset($_SESSION['timezone']) ? $_SESSION['timezone'] : date('Z') / 3600;
- else
- $tz = intval($tz) + intval($this->get('dst_active'));
-
- return $tz;
+ return floatval($this->get('timezone')) + intval($this->get('dst_active'));
}
/**