Fix post-filtering vlv results, fixes warning "mb_strtolower() expects parameter 1 to be a string, array given"

pull/36/merge
Aleksander Machniak 12 years ago
parent 08df33b5c2
commit 699cb1fda3

@ -771,8 +771,9 @@ class rcube_ldap extends rcube_addressbook
// use VLV pseudo-search for autocompletion
$rcube = rcube::get_instance();
$list_fields = $rcube->config->get('contactlist_fields');
if ($this->prop['vlv_search'] && $this->conn && join(',', (array)$fields) == join(',', $rcube->config->get('contactlist_fields')))
if ($this->prop['vlv_search'] && $this->conn && join(',', (array)$fields) == join(',', $list_fields))
{
// add general filter to query
if (!empty($this->prop['filter']) && empty($this->filter))
@ -800,24 +801,26 @@ class rcube_ldap extends rcube_addressbook
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;
}
}
}
}

Loading…
Cancel
Save