+ // check if searching in the local global contact table is enabled
+ if (DI::config()->get('system', 'poco_local_search')) {
+ $return = Contact::searchByName($search, $mode, true);
+ } else {
+ $p = $page > 1 ? 'p=' . $page : '';
+ $curlResult = DI::httpClient()->get(self::getGlobalDirectory() . '/search/people?' . $p . '&q=' . urlencode($search), HttpClientAccept::JSON);
+ if ($curlResult->isSuccess()) {
+ $searchResult = json_decode($curlResult->getBody(), true);
+ if (!empty($searchResult['profiles'])) {
+ // Converting Directory Search results into contact-looking records
+ $return = array_map(function ($result) {
+ static $contactType = [
+ 'People' => Contact::TYPE_PERSON,
+ // Kept for backward compatibility
+ 'Forum' => Contact::TYPE_COMMUNITY,
+ 'Group' => Contact::TYPE_COMMUNITY,
+ 'Organization' => Contact::TYPE_ORGANISATION,
+ 'News' => Contact::TYPE_NEWS,
+ ];
+
+ return [
+ 'name' => $result['name'],
+ 'addr' => $result['addr'],
+ 'url' => $result['profile_url'],
+ 'network' => Protocol::DFRN,
+ 'micro' => $result['photo'],
+ 'contact-type' => $contactType[$result['account_type']],
+ ];
+ }, $searchResult['profiles']);
+ }
+ }
+ }