|
|
|
@ -42,8 +42,10 @@ class ContactsManager implements IManager { |
|
|
|
* - 'escape_like_param' - If set to false wildcards _ and % are not escaped |
|
|
|
* - 'limit' - Set a numeric limit for the search results |
|
|
|
* - 'offset' - Set the offset for the limited search results |
|
|
|
* - 'enumeration' - Whether user enumeration on system address book is allowed |
|
|
|
* - 'fullmatch' - Whether matching on full detail in system address book is allowed |
|
|
|
* - 'enumeration' - (since 23.0.0) Whether user enumeration on system address book is allowed |
|
|
|
* - 'fullmatch' - (since 23.0.0) Whether matching on full detail in system address book is allowed |
|
|
|
* - 'strict_search' - (since 23.0.0) Whether the search pattern is full string or partial search |
|
|
|
* @psalm-param array{escape_like_param?: bool, limit?: int, offset?: int, enumeration?: bool, fullmatch?: bool, strict_search?: bool} $options |
|
|
|
* @return array an array of contacts which are arrays of key-value-pairs |
|
|
|
*/ |
|
|
|
public function search($pattern, $searchProperties = [], $options = []) { |
|
|
|
@ -51,6 +53,7 @@ class ContactsManager implements IManager { |
|
|
|
$result = []; |
|
|
|
foreach ($this->addressBooks as $addressBook) { |
|
|
|
$searchOptions = $options; |
|
|
|
$strictSearch = array_key_exists('strict_search', $options) && $options['strict_search'] === true; |
|
|
|
|
|
|
|
if ($addressBook->isSystemAddressBook()) { |
|
|
|
$fullMatch = !\array_key_exists('fullmatch', $options) || $options['fullmatch'] !== false; |
|
|
|
@ -58,7 +61,13 @@ class ContactsManager implements IManager { |
|
|
|
// Neither full match is allowed, so skip the system address book
|
|
|
|
continue; |
|
|
|
} |
|
|
|
$searchOptions['wildcard'] = !\array_key_exists('enumeration', $options) || $options['enumeration'] !== false; |
|
|
|
if ($strictSearch) { |
|
|
|
$searchOptions['wildcard'] = false; |
|
|
|
} else { |
|
|
|
$searchOptions['wildcard'] = !\array_key_exists('enumeration', $options) || $options['enumeration'] !== false; |
|
|
|
} |
|
|
|
} else { |
|
|
|
$searchOptions['wildcard'] = !$strictSearch; |
|
|
|
} |
|
|
|
|
|
|
|
$r = $addressBook->search($pattern, $searchProperties, $searchOptions); |
|
|
|
|