diff --git a/src/Content/Widget/ContactBlock.php b/src/Content/Widget/ContactBlock.php new file mode 100644 index 0000000000..12cd4cd87d --- /dev/null +++ b/src/Content/Widget/ContactBlock.php @@ -0,0 +1,111 @@ +array, output=>string) + * @return string + */ + public static function getHTML(array $profile) + { + $o = ''; + + $shown = PConfig::get($profile['uid'], 'system', 'display_friend_count', 24); + if ($shown == 0) { + return $o; + } + + if (!empty($profile['hide-friends'])) { + return $o; + } + + $contacts = []; + + $total = DBA::count('contact', [ + 'uid' => $profile['uid'], + 'self' => false, + 'blocked' => false, + 'pending' => false, + 'hidden' => false, + 'archive' => false, + 'network' => [Protocol::DFRN, Protocol::ACTIVITYPUB, Protocol::OSTATUS, Protocol::DIASPORA], + ]); + + $contacts_title = L10n::t('No contacts'); + + if (!$total) { + $micropro = []; + } else { + $contact_ids_stmt = DBA::select('contact', ['id'], [ + 'uid' => $profile['uid'], + 'self' => false, + 'blocked' => false, + 'pending' => false, + 'hidden' => false, + 'archive' => false, + 'rel' => [Contact::FOLLOWER, Contact::FRIEND], + 'network' => [Protocol::DFRN, Protocol::ACTIVITYPUB, Protocol::OSTATUS, Protocol::DIASPORA], + ], ['limit' => $shown]); + + if (DBA::isResult($contact_ids_stmt)) { + $contact_ids = []; + while($contact = DBA::fetch($contact_ids_stmt)) { + $contact_ids[] = $contact["id"]; + } + + $contacts_stmt = DBA::select('contact', ['id', 'uid', 'addr', 'url', 'name', 'thumb', 'network'], ['id' => $contact_ids]); + + if (DBA::isResult($contacts_stmt)) { + $contacts_title = L10n::tt('%d Contact', '%d Contacts', $total); + $micropro = []; + + while ($contact = DBA::fetch($contacts_stmt)) { + $contacts[] = $contact; + $micropro[] = HTML::micropro($contact, true, 'mpfriend'); + } + } + + DBA::close($contacts_stmt); + } + + DBA::close($contact_ids_stmt); + } + + $tpl = Renderer::getMarkupTemplate('contact_block.tpl'); + $o = Renderer::replaceMacros($tpl, [ + '$contacts' => $contacts_title, + '$nickname' => $profile['nickname'], + '$viewcontacts' => L10n::t('View Contacts'), + '$micropro' => $micropro, + ]); + + $arr = ['contacts' => $contacts, 'output' => $o]; + + Hook::callAll('contact_block_end', $arr); + + return $o; + } +}