From cbde304b98e4e0fc2ff33fd84068d63ae3e86c45 Mon Sep 17 00:00:00 2001
From: alecpl <alec@alec.pl>
Date: Thu, 01 Apr 2010 02:25:29 -0400
Subject: [PATCH] - Use MDB2's Manager module for listing tables

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

diff --git a/program/include/rcube_config.php b/program/include/rcube_config.php
index b30cf2d..1e2aae3 100644
--- a/program/include/rcube_config.php
+++ b/program/include/rcube_config.php
@@ -15,7 +15,7 @@
  | Author: Thomas Bruederli <roundcube@gmail.com>                        |
  +-----------------------------------------------------------------------+
 
- $Id: $
+ $Id$
 
 */
 
@@ -28,6 +28,7 @@
 {
   private $prop = array();
   private $errors = array();
+  private $userprefs = array();
 
 
   /**
@@ -68,9 +69,9 @@
       $this->prop['skin'] = 'default';
 
     // fix paths
-    $this->prop['log_dir'] = $this->prop['log_dir'] ? unslashify($this->prop['log_dir']) : INSTALL_PATH . 'logs';
-    $this->prop['temp_dir'] = $this->prop['temp_dir'] ? unslashify($this->prop['temp_dir']) : INSTALL_PATH . 'temp';
-
+    $this->prop['log_dir'] = $this->prop['log_dir'] ? realpath(unslashify($this->prop['log_dir'])) : INSTALL_PATH . 'logs';
+    $this->prop['temp_dir'] = $this->prop['temp_dir'] ? realpath(unslashify($this->prop['temp_dir'])) : INSTALL_PATH . 'temp';
+    
     // fix default imap folders encoding
     foreach (array('drafts_mbox', 'junk_mbox', 'sent_mbox', 'trash_mbox') as $folder)
       $this->prop[$folder] = rcube_charset_convert($this->prop[$folder], RCMAIL_CHARSET, 'UTF7-IMAP');
@@ -137,7 +138,7 @@
     if (is_file($fpath) && is_readable($fpath)) {
       include($fpath);
       if (is_array($rcmail_config)) {
-        $this->prop = array_merge($this->prop, $rcmail_config);
+        $this->prop = array_merge($this->prop, $rcmail_config, $this->userprefs);
         return true;
       }
     }
@@ -178,9 +179,22 @@
    */
   public function merge($prefs)
   {
-    $this->prop = array_merge($this->prop, $prefs);
+    $this->prop = array_merge($this->prop, $prefs, $this->userprefs);
   }
   
+  
+  /**
+   * Merge the given prefs over the current config
+   * and make sure that they survive further merging.
+   *
+   * @param array  Hash array with user prefs
+   */
+  public function set_user_prefs($prefs)
+  {
+    $this->userprefs = $prefs;
+    $this->prop = array_merge($this->prop, $prefs);
+  }
+
   
   /**
    * Getter for all config options
@@ -191,6 +205,7 @@
   {
     return $this->prop;
   }
+
 
   /**
    * Return requested DES crypto key.
@@ -204,9 +219,8 @@
     if (!array_key_exists($key, $this->prop))
     {
       raise_error(array(
-        'code' => 500,
-        'type' => 'php',
-        'file' => __FILE__,
+        'code' => 500, 'type' => 'php',
+        'file' => __FILE__, 'line' => __LINE__,
         'message' => "Request for unconfigured crypto key \"$key\""
       ), true, true);
     }
@@ -217,15 +231,15 @@
     if (strlen($key) != 24)
     {
       raise_error(array(
-        'code' => 500,
-        'type' => 'php',
-        'file' => __FILE__,
+        'code' => 500, 'type' => 'php',
+	'file' => __FILE__, 'line' => __LINE__,
         'message' => "Configured crypto key \"$key\" is not exactly 24 bytes long"
       ), true, true);
     }
 
     return $key;
   }
+
 
   /**
    * Try to autodetect operating system and find the correct line endings
@@ -244,9 +258,8 @@
     else
       return "\n";
   }
+  
 
-  
-  
   /**
    * Return the mail domain configured for the given host
    *

--
Gitblit v1.9.1