From 5c9d1ffe8eb4d53c378720e745e54f2a4bdecb28 Mon Sep 17 00:00:00 2001
From: alecpl <alec@alec.pl>
Date: Tue, 16 Aug 2011 09:41:52 -0400
Subject: [PATCH] - Add option to hide selected LDAP addressbook on the list

---
 CHANGELOG                          |    1 +
 program/include/rcmail.php         |   16 +++++++++-------
 program/steps/addressbook/func.inc |   14 ++++++++++----
 config/main.inc.php.dist           |    3 +++
 4 files changed, 23 insertions(+), 11 deletions(-)

diff --git a/CHANGELOG b/CHANGELOG
index 1164bad..3f75353 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,6 +1,7 @@
 CHANGELOG Roundcube Webmail
 ===========================
 
+- Add option to hide selected LDAP addressbook on the list
 - Add client-side checking of uploaded files size
 - Add newlines between organization, department, jobtitle (#1488028)
 - Recalculate date when replying to a message and localize the cite header (#1487675)
diff --git a/config/main.inc.php.dist b/config/main.inc.php.dist
index 750fa25..85afa8c 100644
--- a/config/main.inc.php.dist
+++ b/config/main.inc.php.dist
@@ -513,6 +513,9 @@
   'auth_cid'       => '',
   // SASL authentication method (for proxy auth), e.g. DIGEST-MD5
   'auth_method'    => '',
+  // Indicates if the addressbook shall be displayed on the list.
+  // With this option enabled you can still search/view contacts.
+  'hidden'        => false,
   // Indicates if we can write to the LDAP directory or not.
   // If writable is true then these fields need to be populated:
   // LDAP_Object_Classes, required_fields, LDAP_rdn
diff --git a/program/include/rcmail.php b/program/include/rcmail.php
index ced5934..e013c75 100644
--- a/program/include/rcmail.php
+++ b/program/include/rcmail.php
@@ -439,6 +439,7 @@
    * 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)
@@ -453,9 +454,9 @@
       if (!isset($this->address_books['0']))
         $this->address_books['0'] = new rcube_contacts($this->db, $this->user->ID);
       $list['0'] = array(
-        'id' => '0',
-        'name' => rcube_label('personaladrbook'),
-        'groups' => $this->address_books['0']->groups,
+        'id'       => '0',
+        'name'     => rcube_label('personaladrbook'),
+        'groups'   => $this->address_books['0']->groups,
         'readonly' => $this->address_books['0']->readonly,
         'autocomplete' => in_array('sql', $autocomplete)
       );
@@ -465,11 +466,12 @@
       $ldap_config = (array) $ldap_config;
       foreach ($ldap_config as $id => $prop)
         $list[$id] = array(
-          'id' => $id,
-          'name' => $prop['name'],
-          'groups' => is_array($prop['groups']),
+          'id'       => $id,
+          'name'     => $prop['name'],
+          'groups'   => is_array($prop['groups']),
           'readonly' => !$prop['writable'],
-          'autocomplete' => in_array('sql', $autocomplete)
+          'hidden'   => $prop['hidden'],
+          'autocomplete' => in_array($id, $autocomplete)
         );
     }
 
diff --git a/program/steps/addressbook/func.inc b/program/steps/addressbook/func.inc
index d210a3d..1ef55fd 100644
--- a/program/steps/addressbook/func.inc
+++ b/program/steps/addressbook/func.inc
@@ -68,11 +68,17 @@
     if (!strlen($source) || !isset($js_list[$source]))
         $source = $js_list[key($js_list)]['id'];
 
-    // count writeable sources
+    // count all/writeable sources
     $writeable = 0;
-    foreach ($js_list as $s) {
+    $count = 0;
+    foreach ($js_list as $sid => $s) {
+        $count++;
         if (!$s['readonly']) {
             $writeable++;
+        }
+        // unset hidden sources
+        if ($s['hidden']) {
+            unset($js_list[$sid]);
         }
     }
 
@@ -82,9 +88,9 @@
     $OUTPUT->set_env('writable_source', $writeable);
 
     $OUTPUT->set_pagetitle(rcube_label('addressbook'));
-    $_SESSION['addressbooks_count'] = count($js_list);
+    $_SESSION['addressbooks_count'] = $count;
     $_SESSION['addressbooks_count_writeable'] = $writeable;
-    
+
     if (!strlen($source))
       $source = strval(key($js_list));
 

--
Gitblit v1.9.1