From 25fdec592dc0a37c6ccb0d566e288807aacf9114 Mon Sep 17 00:00:00 2001
From: alecpl <alec@alec.pl>
Date: Mon, 10 May 2010 15:38:45 -0400
Subject: [PATCH] - Fix autocomplete shows entries without email (#1486452)

---
 program/include/rcube_ldap.php |   17 ++++++++++++++---
 1 files changed, 14 insertions(+), 3 deletions(-)

diff --git a/program/include/rcube_ldap.php b/program/include/rcube_ldap.php
index 04ccd6c..307e43e 100644
--- a/program/include/rcube_ldap.php
+++ b/program/include/rcube_ldap.php
@@ -306,9 +306,11 @@
    * @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 @@
           $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 . ')';

--
Gitblit v1.9.1