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.
This commit is contained in:
Aleksander Machniak 2015-05-05 04:01:57 -04:00
parent 8caf44ba3c
commit 2fcb1eba99

View file

@ -210,8 +210,8 @@ class kolab_auth_ldap extends rcube_ldap_generic
/** /**
* Search records (simplified version of rcube_ldap::search) * Search records (simplified version of rcube_ldap::search)
* *
* @param string $fields The field name or array of field names to search in * @param mixed $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 string $value Search value
* @param int $mode Matching mode: * @param int $mode Matching mode:
* 0 - partial (*abc*), * 0 - partial (*abc*),
* 1 - strict (=), * 1 - strict (=),
@ -228,15 +228,26 @@ class kolab_auth_ldap extends rcube_ldap_generic
return array(); 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 // compose a full-text-search-like filter
if (is_array($fields) && (count($fields) > 1 || $mode != 1)) { if (count($attrs) > 1 || $mode != 1) {
$filter = self::fulltext_search_filter($value, $fields, $mode); $filter = self::fulltext_search_filter($value, $attrs, $mode);
} }
// direct search // direct search
else { else {
$field = is_array($fields) ? $fields[0] : strval($fields); $field = $attrs[0];
$filter = "($field=" . self::quote_string($value) . ")"; $filter = "($field=" . self::quote_string($value) . ")";
} }