From e70d6ea64e711096af36b1234f8545b870ea5f45 Mon Sep 17 00:00:00 2001
From: thomascube <thomas@roundcube.net>
Date: Sat, 05 Apr 2008 08:49:21 -0400
Subject: [PATCH] Apply changes from trunk to 0.1-stable

---
 program/include/rcube_ldap.inc |   22 ++++++++++++----------
 1 files changed, 12 insertions(+), 10 deletions(-)

diff --git a/program/include/rcube_ldap.inc b/program/include/rcube_ldap.inc
index 3de0184..969101b 100644
--- a/program/include/rcube_ldap.inc
+++ b/program/include/rcube_ldap.inc
@@ -1,5 +1,4 @@
 <?php
-
 /*
  +-----------------------------------------------------------------------+
  | program/include/rcube_ldap.inc                                        |
@@ -120,20 +119,20 @@
    */
   function bind($dn, $pass)
   {
-    if (!$this->conn)
+    if (!$this->conn) {
       return false;
+    }
     
-    if (@ldap_bind($this->conn, $dn, $pass))
+    if (ldap_bind($this->conn, $dn, $pass)) {
       return true;
-    else
-    {
-      raise_error(array(
+    }
+
+    raise_error(array(
         'code' => ldap_errno($this->conn),
         'type' => 'ldap',
         'message' => "Bind failed for dn=$dn: ".ldap_error($this->conn)),
-      true);
-    }
-    
+        true);
+
     return false;
   }
 
@@ -286,9 +285,12 @@
     }
     $filter .= ')';
     
+    // avoid double-wildcard if $value is empty
+    $filter = preg_replace('/\*+/', '*', $filter);
+    
     // add general filter to query
     if (!empty($this->prop['filter']))
-      $filter = '(&'.$this->prop['filter'] . $filter . ')';
+      $filter = '(&(' . preg_replace('/^\(|\)$/', '', $this->prop['filter']) . ')' . $filter . ')';
 
     // set filter string and execute search
     $this->set_search_set($filter);

--
Gitblit v1.9.1