From 5ed119e5341a9c1225bbb40c6e3d6ea787ca17ed Mon Sep 17 00:00:00 2001
From: alecpl <alec@alec.pl>
Date: Wed, 27 Jul 2011 07:52:46 -0400
Subject: [PATCH] - Don't use default source if source id is specified in get_address_source()

---
 program/include/rcmail.php |   28 +++++++++++++++++++---------
 1 files changed, 19 insertions(+), 9 deletions(-)

diff --git a/program/include/rcmail.php b/program/include/rcmail.php
index 72f0efa..f37186c 100644
--- a/program/include/rcmail.php
+++ b/program/include/rcmail.php
@@ -403,18 +403,28 @@
       if ($plugin['instance'] instanceof rcube_addressbook) {
         $contacts = $plugin['instance'];
       }
-      else if ($abook_type == 'ldap') {
-        // Use the first writable LDAP address book.
-        foreach ($ldap_config as $id => $prop) {
-          if (!$writeable || $prop['writable']) {
-            $contacts = new rcube_ldap($prop, $this->config->get('ldap_debug'), $this->config->mail_domain($_SESSION['imap_host']));
-            break;
+      else if (!$id) {
+        if ($abook_type == 'ldap') {
+          // Use the first writable LDAP address book.
+          foreach ($ldap_config as $id => $prop) {
+            if (!$writeable || $prop['writable']) {
+              $contacts = new rcube_ldap($prop, $this->config->get('ldap_debug'), $this->config->mail_domain($_SESSION['imap_host']));
+              break;
+            }
           }
         }
+        else { // $id == 'sql'
+          $contacts = new rcube_contacts($this->db, $this->user->ID);
+        }
       }
-      else { // $id == 'sql'
-        $contacts = new rcube_contacts($this->db, $this->user->ID);
-      }
+    }
+
+    if (!$contacts) {
+      raise_error(array(
+        'code' => 600, 'type' => 'php',
+        'file' => __FILE__, 'line' => __LINE__,
+        'message' => "Addressbook source ($id) not found!"),
+        true, true);
     }
 
     // add to the 'books' array for shutdown function

--
Gitblit v1.9.1