summaryrefslogtreecommitdiff
path: root/roundcubemail/program/include/rcube_ldap.php
diff options
context:
space:
mode:
authoralec <alec@208e9e7b-5314-0410-a742-e7e81cd9613c>2010-05-10 19:38:45 +0000
committeralec <alec@208e9e7b-5314-0410-a742-e7e81cd9613c>2010-05-10 19:38:45 +0000
commit6fff44f3105cdd49b12a8951be79336e329bacd7 (patch)
tree4da7accd3d91ff937b5e127a3e73d89084ca6f5d /roundcubemail/program/include/rcube_ldap.php
parent6bb5e5e272abbe048eb38f2f207db9aab612e51b (diff)
- Fix autocomplete shows entries without email (#1486452)
git-svn-id: https://svn.roundcube.net/trunk@3608 208e9e7b-5314-0410-a742-e7e81cd9613c
Diffstat (limited to 'roundcubemail/program/include/rcube_ldap.php')
-rw-r--r--roundcubemail/program/include/rcube_ldap.php17
1 files changed, 14 insertions, 3 deletions
diff --git a/roundcubemail/program/include/rcube_ldap.php b/roundcubemail/program/include/rcube_ldap.php
index 04ccd6cb2..307e43ee2 100644
--- a/roundcubemail/program/include/rcube_ldap.php
+++ b/roundcubemail/program/include/rcube_ldap.php
@@ -306,9 +306,11 @@ class rcube_ldap extends rcube_addressbook
* @param string Search value
* @param boolean True for strict, False for partial (fuzzy) matching
* @param boolean True if results are requested, False if count only
+ * @param boolean (Not used)
+ * @param array List of fields that cannot be empty
* @return array Indexed list of contact records and 'count' value
*/
- function search($fields, $value, $strict=false, $select=true)
+ function search($fields, $value, $strict=false, $select=true, $nocount=false, $required=array())
{
// special treatment for ID-based search
if ($fields == 'ID' || $fields == $this->primary_key)
@@ -339,10 +341,19 @@ class rcube_ldap extends rcube_addressbook
$filter .= "($f=$wc" . rcube_ldap::quote_string($value) . "$wc)";
}
$filter .= ')';
-
+
+ // add required (non empty) fields filter
+ $req_filter = '';
+ foreach ((array)$required as $field)
+ if ($f = $this->_map_field($field))
+ $req_filter .= "($f=*)";
+
+ if (!empty($req_filter))
+ $filter = '(&' . $req_filter . $filter . ')';
+
// avoid double-wildcard if $value is empty
$filter = preg_replace('/\*+/', '*', $filter);
-
+
// add general filter to query
if (!empty($this->prop['filter']))
$filter = '(&(' . preg_replace('/^\(|\)$/', '', $this->prop['filter']) . ')' . $filter . ')';