From 3704b78841ba05c31a2acaeabdffb9c471bb6610 Mon Sep 17 00:00:00 2001
From: alecpl <alec@alec.pl>
Date: Tue, 02 Mar 2010 09:35:53 -0500
Subject: [PATCH] - Added function to get addressbooks list rcmail::get_address_sources() (#1486248)

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

diff --git a/program/include/rcmail.php b/program/include/rcmail.php
index 04c7151..81f6137 100644
--- a/program/include/rcmail.php
+++ b/program/include/rcmail.php
@@ -244,6 +244,7 @@
   /**
    * Return instance of the internal address book class
    *
+   * @param string  Address book identifier
    * @param boolean True if the address book needs to be writeable
    * @return object rcube_contacts Address book object
    */
@@ -274,12 +275,60 @@
         }
       }
     }
-    else {
+    else { // $id == 'sql'
       $contacts = new rcube_contacts($this->db, $this->user->ID);
     }
     
     return $contacts;
   }
+
+
+  /**
+   * Return address books list
+   *
+   * @param boolean True if the address book needs to be writeable
+   * @return array  Address books array
+   */
+  public function get_address_sources($writeable = false)
+  {
+    $abook_type = strtolower($this->config->get('address_book_type'));
+    $ldap_config = (array)$this->config->get('ldap_public');
+    $autocomplete = (array)$this->config->get('autocomplete_addressbooks');
+    $list = array();
+
+    // We are using the DB address book
+    if ($abook_type != 'ldap') {
+      $list['0'] = array(
+        'id' => 0,
+	'name' => rcube_label('personaladrbook'),
+        'readonly' => false,
+	'autocomplete' => in_array('sql', $autocomplete)
+      );
+    }
+
+    if (is_array($ldap_config)) {
+      foreach ($ldap_config as $id => $prop)
+        $list[$id] = array(
+	  'id' => $id,
+	  'name' => $prop['name'],
+	  'readonly' => !$prop['writable'],
+	  'autocomplete' => in_array('sql', $autocomplete)
+        );
+    }
+
+    $plugin = $this->plugins->exec_hook('address_sources', array('sources' => $list));
+    $list = $plugin['sources'];
+
+    if ($writeable && !empty($list)) {
+      foreach ($list as $idx => $item) {
+        if ($item['readonly']) {
+	  unset($list[$idx]);
+        }
+      }
+    }
+    
+    return $list;
+  }
   
   
   /**

--
Gitblit v1.9.1