From 08b796f83cdfc650d47c6a9ebca3b04fef80cea5 Mon Sep 17 00:00:00 2001 From: alecpl Date: Fri, 29 Jul 2011 06:38:42 +0000 Subject: - Fixed search fields handling in quick-search --- program/steps/addressbook/search.inc | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) (limited to 'program') diff --git a/program/steps/addressbook/search.inc b/program/steps/addressbook/search.inc index bb2f4d2ad..352556de0 100644 --- a/program/steps/addressbook/search.inc +++ b/program/steps/addressbook/search.inc @@ -56,7 +56,10 @@ function rcmail_contact_search() $fields = explode(',', get_input_value('_headers', RCUBE_INPUT_GET)); if (empty($fields)) { - $fields = $SEARCH_MODS_DEFAULT; + $fields = array_keys($SEARCH_MODS_DEFAULT); + } + else { + $fields = array_filter($fields); } // update search_mods setting @@ -66,7 +69,7 @@ function rcmail_contact_search() $RCMAIL->user->save_prefs(array('addressbook_search_mods' => $search_mods)); } - if ($fields['*'] || count($fields) == count($SEARCH_MODS_DEFAULT)) { + if (in_array('*', $fields)) { $fields = '*'; } } @@ -79,7 +82,7 @@ function rcmail_contact_search() foreach ($sources as $s) { $source = $RCMAIL->get_address_book($s['id']); - // check if all search fields are supported.... + // check if search fields are supported.... if (is_array($fields)) { $cols = $source->coltypes[0] ? array_flip($source->coltypes) : $source->coltypes; $supported = 0; @@ -90,8 +93,9 @@ function rcmail_contact_search() } } - // ...if not, we can skip this source - if ($supported < count($fields)) { + // in advanced search we require all fields (AND operator) + // in quick search we require at least one field (OR operator) + if (($adv && $supported < count($fields)) || (!$adv && !$supported)) { continue; } } -- cgit v1.2.3