From b896b18f87064f523dca82c3fcaa5465ec8328ad Mon Sep 17 00:00:00 2001
From: alecpl <alec@alec.pl>
Date: Fri, 03 Jun 2011 08:34:48 -0400
Subject: [PATCH] - Call addressbook_get hook only if build-in addressbook doesn't match wanted ID (for better performance), other improvements

---
 program/steps/addressbook/func.inc |   23 ++++++++++++++---------
 1 files changed, 14 insertions(+), 9 deletions(-)

diff --git a/program/steps/addressbook/func.inc b/program/steps/addressbook/func.inc
index df86fce..62fde97 100644
--- a/program/steps/addressbook/func.inc
+++ b/program/steps/addressbook/func.inc
@@ -21,15 +21,21 @@
 
 $SEARCH_MODS_DEFAULT = array('name'=>1, 'firstname'=>1, 'surname'=>1, 'email'=>1, '*'=>1);
 
-// add list of address sources to client env
-$js_list = $RCMAIL->get_address_sources();
-
 // select source
 $source = get_input_value('_source', RCUBE_INPUT_GPC);
 
-// if source is not set use first directory
-if (empty($source))
-    $source = $js_list[key($js_list)]['id'];
+if (!$RCMAIL->action && !$OUTPUT->ajax_call) {
+    // add list of address sources to client env
+    $js_list = $RCMAIL->get_address_sources();
+
+    // if source is not set use first directory
+    if (empty($source))
+        $source = $js_list[key($js_list)]['id'];
+
+    $search_mods = $RCMAIL->config->get('addressbook_search_mods', $SEARCH_MODS_DEFAULT);
+    $OUTPUT->set_env('search_mods', $search_mods);
+    $OUTPUT->set_env('address_sources', $js_list);
+}
 
 // instantiate a contacts object according to the given source
 $CONTACTS = $RCMAIL->get_address_book($source);
@@ -44,18 +50,17 @@
 
 if (!empty($_REQUEST['_gid']))
     $CONTACTS->set_group(get_input_value('_gid', RCUBE_INPUT_GPC));
-
+/*
 // set message set for search result
 if (!empty($_REQUEST['_search']) && isset($_SESSION['search'][$_REQUEST['_search']]))
     $CONTACTS->set_search_set($_SESSION['search'][$_REQUEST['_search']]);
-
+*/
 // set data source env
 $OUTPUT->set_env('source', $source ? $source : '0');
 $OUTPUT->set_env('readonly', $CONTACTS->readonly, false);
 if (!$OUTPUT->ajax_call) {
     $search_mods = $RCMAIL->config->get('addressbook_search_mods', $SEARCH_MODS_DEFAULT);
     $OUTPUT->set_env('search_mods', $search_mods);
-    $OUTPUT->set_env('address_sources', $js_list);
     $OUTPUT->set_pagetitle(rcube_label('addressbook'));
 }
 

--
Gitblit v1.9.1