+ } elseif ($type == 'm') {
+ $r = q("SELECT `id`, `name`, `nick`, `micro`, `network`, `url`, `attag`, `addr` FROM `contact`
+ WHERE `uid` = %d AND NOT `self` AND NOT `blocked` AND NOT `pending` AND NOT `archive`
+ AND `success_update` >= `failure_update` AND `network` IN ('%s', '%s')
+ $sql_extra2
+ ORDER BY `name` ASC ",
+ intval(local_user()),
+ DBA::escape(Protocol::DFRN),
+ DBA::escape(Protocol::DIASPORA)
+ );
+ } elseif ($type == 'a') {
+ $r = q("SELECT `id`, `name`, `nick`, `micro`, `network`, `url`, `attag`, `addr`, `forum`, `prv` FROM `contact`
+ WHERE `uid` = %d AND `pending` = 0 AND `success_update` >= `failure_update`
+ $sql_extra2
+ ORDER BY `name` ASC ",
+ intval(local_user())
+ );
+ } elseif ($type == 'x') {
+ // autocomplete for global contact search (e.g. navbar search)
+ $search = notags(trim($_REQUEST['search']));
+ $mode = $_REQUEST['smode'];
+
+ $r = ACL::contactAutocomplete($search, $mode);
+
+ $contacts = [];
+ foreach ($r as $g) {
+ $contacts[] = [
+ 'photo' => ProxyUtils::proxifyUrl($g['photo'], false, ProxyUtils::SIZE_MICRO),
+ 'name' => $g['name'],
+ 'nick' => defaults($g, 'addr', $g['url']),
+ 'network' => $g['network'],
+ 'link' => $g['url'],
+ 'forum' => !empty($g['community']) ? 1 : 0,
+ ];
+ }
+ $o = [
+ 'start' => $start,
+ 'count' => $count,
+ 'items' => $contacts,
+ ];
+ echo json_encode($o);
+ exit;