From 2fcb1eba993427a3fcc95d49f9978d42a95fc069 Mon Sep 17 00:00:00 2001 From: Aleksander Machniak Date: Tue, 5 May 2015 04:01:57 -0400 Subject: [PATCH] Fix delegator user autocomplete searches (#5019) The recent changes in kolab_auth_ldap::dosearch() changed unintentionally the behaviour by removing the code which resolved field names to ldap attributes. --- plugins/kolab_auth/kolab_auth_ldap.php | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/plugins/kolab_auth/kolab_auth_ldap.php b/plugins/kolab_auth/kolab_auth_ldap.php index 383b31c5..23467832 100644 --- a/plugins/kolab_auth/kolab_auth_ldap.php +++ b/plugins/kolab_auth/kolab_auth_ldap.php @@ -210,8 +210,8 @@ class kolab_auth_ldap extends rcube_ldap_generic /** * Search records (simplified version of rcube_ldap::search) * - * @param string $fields The field name or array of field names to search in - * @param mixed $value Search value (or array of values when $fields is array) + * @param mixed $fields The field name or array of field names to search in + * @param string $value Search value * @param int $mode Matching mode: * 0 - partial (*abc*), * 1 - strict (=), @@ -228,15 +228,26 @@ class kolab_auth_ldap extends rcube_ldap_generic return array(); } - $mode = intval($mode); + $mode = intval($mode); + $attrs = array(); + + // resolve field names into ldap attributes + foreach ((array) $fields as $idx => $field) { + if ($attr = $this->fieldmap[$field]) { + $attrs = array_merge($attrs, (array) $attr); + } + else { + $attrs[] = $field; + } + } // compose a full-text-search-like filter - if (is_array($fields) && (count($fields) > 1 || $mode != 1)) { - $filter = self::fulltext_search_filter($value, $fields, $mode); + if (count($attrs) > 1 || $mode != 1) { + $filter = self::fulltext_search_filter($value, $attrs, $mode); } // direct search else { - $field = is_array($fields) ? $fields[0] : strval($fields); + $field = $attrs[0]; $filter = "($field=" . self::quote_string($value) . ")"; }