From ade8e117dfbb62f6dbd16b4aca81dfbdbd054579 Mon Sep 17 00:00:00 2001
From: thomascube <thomas@roundcube.net>
Date: Tue, 02 Sep 2008 03:42:46 -0400
Subject: [PATCH] Let rcmail class create address book instances

---
 program/include/rcmail.php |   32 ++++++++++++++++++++++++++++++++
 1 files changed, 32 insertions(+), 0 deletions(-)

diff --git a/program/include/rcmail.php b/program/include/rcmail.php
index 00dca6e..348a916 100644
--- a/program/include/rcmail.php
+++ b/program/include/rcmail.php
@@ -235,6 +235,38 @@
   
   
   /**
+   * Return instance of the internal address book class
+   *
+   * @param boolean True if the address book needs to be writeable
+   * @return object rcube_contacts Address book object
+   */
+  public function get_address_book($id, $writeable = false)
+  {
+    $contacts = null;
+    $ldap_config = (array)$this->config->get('ldap_public');
+    $abook_type = strtolower($this->config->get('address_book_type'));
+    
+    if ($id && $ldap_config[$id]) {
+      $contacts = new rcube_ldap($ldap_config[$id]);
+    }
+    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);
+          break;
+        }
+      }
+    }
+    else {
+      $contacts = new rcube_contacts($this->db, $this->user->ID);
+    }
+    
+    return $contacts;
+  }
+  
+  
+  /**
    * Init output object for GUI and add common scripts.
    * This will instantiate a rcmail_template object and set
    * environment vars according to the current session and configuration

--
Gitblit v1.9.1