summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorthomascube <thomas@roundcube.net>2007-08-15 20:28:01 +0000
committerthomascube <thomas@roundcube.net>2007-08-15 20:28:01 +0000
commit6b603da6f16591b63f809ef967554d260bd0d891 (patch)
treeb941a1e65acd1f9b49e5a34ea277c4b6a388d765
parent88f66ec89cf87328536757ac33e508a9614bdc09 (diff)
LDAP improvements
-rw-r--r--CHANGELOG7
-rw-r--r--config/main.inc.php.dist4
-rw-r--r--program/include/main.inc5
-rw-r--r--program/include/rcube_contacts.inc7
-rw-r--r--program/include/rcube_ldap.inc13
-rw-r--r--program/js/app.js1
-rw-r--r--program/steps/addressbook/copy.inc5
7 files changed, 37 insertions, 5 deletions
diff --git a/CHANGELOG b/CHANGELOG
index 48d73aede..2d564a588 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,6 +1,13 @@
CHANGELOG RoundCube Webmail
---------------------------
+2007/08/15 (thomasb)
+----------
+- Applied patch for LDAP contacts listing by Glen Ogilvie
+- Applied patch for more address fields in LDAP contacts (#1484402)
+- Close LDAP connections on script shutdown
+
+
2007/08/13 (thomasb)
----------
- Add alternative for getallheaders() (fix #1484508)
diff --git a/config/main.inc.php.dist b/config/main.inc.php.dist
index d11888dc3..a5b94d979 100644
--- a/config/main.inc.php.dist
+++ b/config/main.inc.php.dist
@@ -202,8 +202,10 @@ $rcmail_config['mail_header_delimiter'] = NULL;
* 'search_fields' => array('mail', 'cn'), // fields to search in
* 'name_field' => 'cn', // this field represents the contact's name
* 'email_field' => 'mail', // this field represents the contact's e-mail
+ * 'surname_field' => 'sn', // this field represents the contact's last name
+ * 'firstname_field' => 'gn', // this field represents the contact's first name
* 'scope' => 'sub', // search mode: sub|base|list
- * 'filter' => '', // will be &'d with search field ex: (status=act)
+ * 'filter' => '', // used for basic listing (if not empty) and will be &'d with search queries. ex: (status=act)
* 'fuzzy_search' => true); // server allows wildcard search
*/
diff --git a/program/include/main.inc b/program/include/main.inc
index f938174d6..bd4ebd0ef 100644
--- a/program/include/main.inc
+++ b/program/include/main.inc
@@ -299,7 +299,7 @@ function rcmail_set_imap_prop()
*/
function rcmail_shutdown()
{
- global $IMAP;
+ global $IMAP, $CONTACTS;
if (is_object($IMAP))
{
@@ -307,6 +307,9 @@ function rcmail_shutdown()
$IMAP->write_cache();
}
+ if (is_object($CONTACTS))
+ $CONTACTS->close();
+
// before closing the database connection, write session data
session_write_close();
}
diff --git a/program/include/rcube_contacts.inc b/program/include/rcube_contacts.inc
index 9ba965e2f..f01d22279 100644
--- a/program/include/rcube_contacts.inc
+++ b/program/include/rcube_contacts.inc
@@ -128,6 +128,13 @@ class rcube_contacts
/**
+ * Close connection to source
+ * Called on script shutdown
+ */
+ function close(){}
+
+
+ /**
* List the current set of contact records
*
* @param array List of cols to show
diff --git a/program/include/rcube_ldap.inc b/program/include/rcube_ldap.inc
index 976b73d2b..e6a15d9dc 100644
--- a/program/include/rcube_ldap.inc
+++ b/program/include/rcube_ldap.inc
@@ -58,7 +58,6 @@ class rcube_ldap
if (preg_match('/^(.+)_field$/', $prop, $matches))
$this->fieldmap[$matches[1]] = $value;
- // $this->filter = "(dn=*)";
$this->connect();
}
@@ -142,7 +141,10 @@ class rcube_ldap
function close()
{
if ($this->conn)
+ {
@ldap_unbind($this->conn);
+ $this->conn = null;
+ }
}
@@ -212,6 +214,13 @@ class rcube_ldap
*/
function list_records($cols=null, $subset=0)
{
+ // add general filter to query
+ if (!empty($this->prop['filter']))
+ {
+ $filter = $this->prop['filter'];
+ $this->set_search_set($filter);
+ }
+
// exec LDAP search if no result resource is stored
if ($this->conn && !$this->ldap_result)
$this->_exec_search();
@@ -442,4 +451,4 @@ class rcube_ldap
}
-?> \ No newline at end of file
+?>
diff --git a/program/js/app.js b/program/js/app.js
index 48597c57d..1d09fe901 100644
--- a/program/js/app.js
+++ b/program/js/app.js
@@ -2253,6 +2253,7 @@ function rcube_webmail()
{
page = 1;
this.env.current_page = page;
+ this.reset_qsearch();
}
this.select_folder(src, this.env.source);
diff --git a/program/steps/addressbook/copy.inc b/program/steps/addressbook/copy.inc
index e6d917e92..af8b87c40 100644
--- a/program/steps/addressbook/copy.inc
+++ b/program/steps/addressbook/copy.inc
@@ -36,8 +36,11 @@ if ($cid && preg_match('/^[a-z0-9\-_=]+(,[a-z0-9\-_=]+)*$/i', $cid) && strlen($t
$OUTPUT->show_message('copyerror', 'error');
else
$OUTPUT->show_message('copysuccess', 'notice', array('nr' => count($success)));
+
+ // close connection to second address directory
+ $TARGET->close();
}
-
+
// send response
$OUTPUT->send();