From b545d3e8388d18a64d50b6f7879804cf4e7812ca Mon Sep 17 00:00:00 2001
From: thomascube <thomas@roundcube.net>
Date: Thu, 18 Feb 2010 13:01:53 -0500
Subject: [PATCH] Fix loading of plugin configs: user prefs will always survive (#1486368)

---
 program/include/rcube_config.php |   18 ++++++++++++++++--
 1 files changed, 16 insertions(+), 2 deletions(-)

diff --git a/program/include/rcube_config.php b/program/include/rcube_config.php
index 85ff714..1e2aae3 100644
--- a/program/include/rcube_config.php
+++ b/program/include/rcube_config.php
@@ -28,6 +28,7 @@
 {
   private $prop = array();
   private $errors = array();
+  private $userprefs = array();
 
 
   /**
@@ -132,12 +133,12 @@
    * @param string Full path to the config file to be loaded
    * @return booelan True on success, false on failure
    */
-  public function load_from_file($fpath, $merge = true)
+  public function load_from_file($fpath)
   {
     if (is_file($fpath) && is_readable($fpath)) {
       include($fpath);
       if (is_array($rcmail_config)) {
-        $this->prop = $merge ? array_merge($this->prop, $rcmail_config) : $this->prop + $rcmail_config;
+        $this->prop = array_merge($this->prop, $rcmail_config, $this->userprefs);
         return true;
       }
     }
@@ -178,6 +179,19 @@
    */
   public function merge($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);
   }
 

--
Gitblit v1.9.1