From a5c8786a34be237a3436b3c96d283462e76a5c3a Mon Sep 17 00:00:00 2001
From: Thomas Bruederli <bruederli@kolabsys.com>
Date: Tue, 06 Nov 2012 15:02:23 -0500
Subject: [PATCH] Merge branch 'release-0.7' of github.com:roundcube/roundcubemail into release-0.7

---
 CHANGELOG                             |    1 +
 program/include/rcube_mdb2.php        |    6 +++---
 program/include/rcube_addressbook.php |    5 +++++
 program/include/rcube_ldap.php        |   36 +++++++++++++++++++-----------------
 4 files changed, 28 insertions(+), 20 deletions(-)

diff --git a/CHANGELOG b/CHANGELOG
index 7607b1f..3f8128f 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,6 +1,7 @@
 CHANGELOG Roundcube Webmail
 ===========================
 
+- Fix compatybility with MDB2 2.5.0b4 (#1488779)
 - Fix lower-casing email address on replies (#1488598)
 - Fix so subscribed non-existing/non-accessible shared folder can be unsubscribed
 
diff --git a/program/include/rcube_addressbook.php b/program/include/rcube_addressbook.php
index f6de6d7..9ebd37f 100644
--- a/program/include/rcube_addressbook.php
+++ b/program/include/rcube_addressbook.php
@@ -431,6 +431,11 @@
             }
         }
 
+        // remove duplicates
+        if ($flat && !empty($out)) {
+            $out = array_unique($out);
+        }
+
         return $out;
     }
 
diff --git a/program/include/rcube_ldap.php b/program/include/rcube_ldap.php
index e3e7a87..14c59dd 100644
--- a/program/include/rcube_ldap.php
+++ b/program/include/rcube_ldap.php
@@ -770,24 +770,26 @@
 
             for ($i = 0; $i < $entries['count']; $i++) {
                 $rec = $this->_ldap2result($entries[$i]);
-                foreach (array('email', 'name') as $f) {
-                    $val = mb_strtolower($rec[$f]);
-                    switch ($mode) {
-                    case 1:
-                        $got = ($val == $search);
-                        break;
-                    case 2:
-                        $got = ($search == substr($val, 0, strlen($search)));
-                        break;
-                    default:
-                        $got = (strpos($val, $search) !== false);
-                        break;
-                    }
+                foreach ($fields as $f) {
+                    foreach ((array)$rec[$f] as $val) {
+                        $val = mb_strtolower($val);
+                        switch ($mode) {
+                        case 1:
+                            $got = ($val == $search);
+                            break;
+                        case 2:
+                            $got = ($search == substr($val, 0, strlen($search)));
+                            break;
+                        default:
+                            $got = (strpos($val, $search) !== false);
+                            break;
+                        }
 
-                    if ($got) {
-                        $this->result->add($rec);
-                        $this->result->count++;
-                        break;
+                        if ($got) {
+                            $this->result->add($rec);
+                            $this->result->count++;
+                            break 2;
+                        }
                     }
                 }
             }
diff --git a/program/include/rcube_mdb2.php b/program/include/rcube_mdb2.php
index 26e5e97..9f56118 100644
--- a/program/include/rcube_mdb2.php
+++ b/program/include/rcube_mdb2.php
@@ -197,7 +197,7 @@
      */
     function is_connected()
     {
-        return PEAR::isError($this->db_handle) ? false : $this->db_connected;
+        return is_a($this->db_handle, 'PEAR_Error') ? false : $this->db_connected;
     }
 
 
@@ -285,7 +285,7 @@
         else {
             $params = (array)$params;
             $q = $this->db_handle->prepare($query, null, $mode=='w' ? MDB2_PREPARE_MANIP : null);
-            if ($this->db_handle->isError($q)) {
+            if (MDB2::isError($q)) {
                 $this->db_error = true;
                 $this->db_error_msg = $q->userinfo;
 
@@ -366,7 +366,7 @@
 
         $id = $this->db_handle->lastInsertID($table);
 
-        return $this->db_handle->isError($id) ? null : $id;
+        return MDB2::isError($id) ? null : $id;
     }
 
 

--
Gitblit v1.9.1