* EMail: fixed not working search in Addressbook, if LDAP backend was used (my.stylite.de bug #3337)

This commit is contained in:
Ralf Becker 2012-05-15 10:21:01 +00:00
parent 51246a5829
commit d0a2ffc8fe

View File

@ -576,6 +576,7 @@ class addressbook_so
* @param string $op='AND' defaults to 'AND', can be set to 'OR' too, then criteria's are OR'ed together * @param string $op='AND' defaults to 'AND', can be set to 'OR' too, then criteria's are OR'ed together
* @param mixed $start=false if != false, return only maxmatch rows begining with start, or array($start,$num) * @param mixed $start=false if != false, return only maxmatch rows begining with start, or array($start,$num)
* @param array $filter=null if set (!=null) col-data pairs, to be and-ed (!) into the query without wildcards * @param array $filter=null if set (!=null) col-data pairs, to be and-ed (!) into the query without wildcards
* $filter['cols_to_search'] limit search columns to given columns, otherwise $this->columns_to_search is used
* @param string $join='' sql to do a join (only used by sql backend!), eg. " RIGHT JOIN egw_accounts USING(account_id)" * @param string $join='' sql to do a join (only used by sql backend!), eg. " RIGHT JOIN egw_accounts USING(account_id)"
* @return array of matching rows (the row is an array of the cols) or False * @return array of matching rows (the row is an array of the cols) or False
*/ */
@ -593,6 +594,12 @@ class addressbook_so
// Hide deleted items unless type is specifically deleted // Hide deleted items unless type is specifically deleted
if(!is_array($filter)) $filter = $filter ? (array) $filter : array(); if(!is_array($filter)) $filter = $filter ? (array) $filter : array();
if (isset($filter['cols_to_search']))
{
$cols_to_search = $filter['cols_to_search'];
unset($filter['cols_to_search']);
}
// if no tid set or tid==='' do NOT return deleted entries ($tid === null returns all entries incl. deleted) // if no tid set or tid==='' do NOT return deleted entries ($tid === null returns all entries incl. deleted)
if(!array_key_exists('tid', $filter) || $filter['tid'] === '') if(!array_key_exists('tid', $filter) || $filter['tid'] === '')
{ {
@ -619,7 +626,11 @@ class addressbook_so
$search = $criteria; $search = $criteria;
$criteria = array(); $criteria = array();
if ($backend === $this->somain) if (isset($cols_to_search))
{
$cols = $cols_to_search;
}
elseif ($backend === $this->somain)
{ {
$cols = $this->columns_to_search; $cols = $this->columns_to_search;
} }
@ -651,7 +662,8 @@ class addressbook_so
{ {
foreach($cols as $col) foreach($cols as $col)
{ {
$criteria[$col] = $search; // remove from LDAP backend not understood use-AND-syntax
$criteria[$col] = str_replace(' +',' ',$search);
} }
} }
} }