diff options
| -rw-r--r-- | program/steps/addressbook/search.inc | 14 | 
1 files changed, 9 insertions, 5 deletions
| 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;              }          } | 
