From 89c30a00a71988c8db632f8f3cc94ed241bdaa1f Mon Sep 17 00:00:00 2001
From: alecpl <alec@alec.pl>
Date: Sun, 01 Jan 2012 07:26:08 -0500
Subject: [PATCH] - Don't load jqueryui plugin, it's required now by default - Move datepicker's date format setting to the plugin

---
 program/include/rcube_config.php |   41 ++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 40 insertions(+), 1 deletions(-)

diff --git a/program/include/rcube_config.php b/program/include/rcube_config.php
index 0e23b03..f80f92c 100644
--- a/program/include/rcube_config.php
+++ b/program/include/rcube_config.php
@@ -91,6 +91,15 @@
         // 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['dst_active'] = intval(date('I'));
+          $this->prop['_timezone_value'] = date('Z') / 3600 - $this->prop['dst_active'];
+        }
+        else if ($this->prop['dst_active'] === null) {
+          $this->prop['dst_active'] = intval(date('I'));
+        }
+
         // export config data
         $GLOBALS['CONFIG'] = &$this->prop;
     }
@@ -150,7 +159,20 @@
      */
     public function get($name, $def = null)
     {
-        return isset($this->prop[$name]) ? $this->prop[$name] : $def;
+        $result = isset($this->prop[$name]) ? $this->prop[$name] : $def;
+        $rcmail = rcmail::get_instance();
+        
+        if ($name == 'timezone' && isset($this->prop['_timezone_value']))
+            $result = $this->prop['_timezone_value'];
+
+        if (is_object($rcmail->plugins)) {
+            $plugin = $rcmail->plugins->exec_hook('config_get', array(
+                'name' => $name, 'default' => $def, 'result' => $result));
+
+            return $plugin['result'];
+        }
+
+        return $result;
     }
 
 
@@ -197,6 +219,14 @@
 
         $this->userprefs = $prefs;
         $this->prop      = array_merge($this->prop, $prefs);
+
+        // override timezone settings with client values
+        if ($this->prop['timezone'] == 'auto') {
+            $this->prop['_timezone_value'] = isset($_SESSION['timezone']) ? $_SESSION['timezone'] : $this->prop['_timezone_value'];
+            $this->prop['dst_active'] = $this->userprefs['dst_active'] = isset($_SESSION['dst_active']) ? $_SESSION['dst_active'] : $this->prop['dst_active'];
+        }
+        else if (isset($this->prop['_timezone_value']))
+           unset($this->prop['_timezone_value']);
     }
 
 
@@ -210,6 +240,15 @@
         return $this->prop;
     }
 
+    /**
+     * Special getter for user's timezone offset including DST
+     *
+     * @return float  Timezone offset (in hours)
+     */
+    public function get_timezone()
+    {
+      return floatval($this->get('timezone')) + intval($this->get('dst_active'));
+    }
 
     /**
      * Return requested DES crypto key.

--
Gitblit v1.9.1