From c041d57036d4a30730408c8fbba2d4e12778d2d5 Mon Sep 17 00:00:00 2001
From: alecpl <alec@alec.pl>
Date: Wed, 19 Oct 2011 05:56:06 -0400
Subject: [PATCH] - Added 'search_dn_default' variable in ldap config - Better handling of situation when search for bind DN doesn't return data

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

diff --git a/program/include/rcube_config.php b/program/include/rcube_config.php
index 0e23b03..01e6781 100644
--- a/program/include/rcube_config.php
+++ b/program/include/rcube_config.php
@@ -90,6 +90,12 @@
 
         // 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'];
+        }
 
         // export config data
         $GLOBALS['CONFIG'] = &$this->prop;
@@ -150,7 +156,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 +216,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 +237,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