From 7bcd291517e9aca620e8938e965347a73b620a7a Mon Sep 17 00:00:00 2001
From: Thomas Bruederli <thomas@roundcube.net>
Date: Wed, 03 Oct 2012 08:16:52 -0400
Subject: [PATCH] Make sure the timezone config option always contains a valid value

---
 program/include/rcube_config.php |   13 ++++++++-----
 1 files changed, 8 insertions(+), 5 deletions(-)

diff --git a/program/include/rcube_config.php b/program/include/rcube_config.php
index 41acc80..b9fd955 100644
--- a/program/include/rcube_config.php
+++ b/program/include/rcube_config.php
@@ -123,8 +123,11 @@
         if ($this->prop['timezone'] == 'auto') {
           $this->prop['_timezone_value'] = $this->client_timezone();
         }
-        else if (is_numeric($this->prop['timezone'])) {
-          $this->prop['timezone'] = timezone_name_from_abbr("", $this->prop['timezone'] * 3600, 0);
+        else if (is_numeric($this->prop['timezone']) && ($tz = timezone_name_from_abbr("", $this->prop['timezone'] * 3600, 0))) {
+          $this->prop['timezone'] = $tz;
+        }
+        else if (empty($this->prop['timezone'])) {
+          $this->prop['timezone'] = 'UTC';
         }
 
         // remove deprecated properties
@@ -251,8 +254,8 @@
         }
 
         // convert user's timezone into the new format
-        if (is_numeric($prefs['timezone'])) {
-            $prefs['timezone'] = timezone_name_from_abbr('', $prefs['timezone'] * 3600, 0);
+        if (is_numeric($prefs['timezone']) && ($tz = timezone_name_from_abbr('', $prefs['timezone'] * 3600, 0))) {
+            $prefs['timezone'] = $tz;
         }
 
         // larry is the new default skin :-)
@@ -409,7 +412,7 @@
      */
     private function client_timezone()
     {
-        return isset($_SESSION['timezone']) ? timezone_name_from_abbr("", $_SESSION['timezone'] * 3600, 0) : date_default_timezone_get();
+        return isset($_SESSION['timezone']) && ($ctz = timezone_name_from_abbr("", $_SESSION['timezone'] * 3600, 0)) ? $ctz : date_default_timezone_get();
     }
 
 }

--
Gitblit v1.9.1