diff --git a/src/Content/Text/HTML.php b/src/Content/Text/HTML.php index 8c32498a3f..7976b02e6b 100644 --- a/src/Content/Text/HTML.php +++ b/src/Content/Text/HTML.php @@ -7,6 +7,7 @@ namespace Friendica\Content\Text; use DOMDocument; use DOMXPath; +use Friendica\Content\Widget\ContactBlock; use Friendica\Core\Hook; use Friendica\Core\L10n; use Friendica\Core\Config; @@ -807,90 +808,17 @@ class HTML /** * Get html for contact block. * - * @template contact_block.tpl - * @hook contact_block_end (contacts=>array, output=>string) + * @deprecated since version 2019.03 + * @see ContactBlock::getHTML() * @return string * @throws \Friendica\Network\HTTPException\InternalServerErrorException * @throws \ImagickException */ public static function contactBlock() { - $o = ''; $a = \get_app(); - $shown = PConfig::get($a->profile['uid'], 'system', 'display_friend_count', 24); - if ($shown == 0) { - return; - } - - if (!is_array($a->profile) || $a->profile['hide-friends']) { - return $o; - } - - $r = q("SELECT COUNT(*) AS `total` FROM `contact` - WHERE `uid` = %d AND NOT `self` AND NOT `blocked` - AND NOT `pending` AND NOT `hidden` AND NOT `archive` - AND `network` IN ('%s', '%s', '%s')", - intval($a->profile['uid']), - DBA::escape(Protocol::DFRN), - DBA::escape(Protocol::OSTATUS), - DBA::escape(Protocol::DIASPORA) - ); - - if (DBA::isResult($r)) { - $total = intval($r[0]['total']); - } - - if (!$total) { - $contacts = L10n::t('No contacts'); - $micropro = null; - } else { - // Splitting the query in two parts makes it much faster - $r = q("SELECT `id` FROM `contact` - WHERE `uid` = %d AND NOT `self` AND NOT `blocked` - AND NOT `pending` AND NOT `hidden` AND NOT `archive` - AND `network` IN ('%s', '%s', '%s') - ORDER BY RAND() LIMIT %d", - intval($a->profile['uid']), - DBA::escape(Protocol::DFRN), - DBA::escape(Protocol::OSTATUS), - DBA::escape(Protocol::DIASPORA), - intval($shown) - ); - - if (DBA::isResult($r)) { - $contacts = []; - foreach ($r as $contact) { - $contacts[] = $contact["id"]; - } - - $r = q("SELECT `id`, `uid`, `addr`, `url`, `name`, `thumb`, `network` FROM `contact` WHERE `id` IN (%s)", - DBA::escape(implode(",", $contacts)) - ); - - if (DBA::isResult($r)) { - $contacts = L10n::tt('%d Contact', '%d Contacts', $total); - $micropro = []; - foreach ($r as $rr) { - $micropro[] = self::micropro($rr, true, 'mpfriend'); - } - } - } - } - - $tpl = Renderer::getMarkupTemplate('contact_block.tpl'); - $o = Renderer::replaceMacros($tpl, [ - '$contacts' => $contacts, - '$nickname' => $a->profile['nickname'], - '$viewcontacts' => L10n::t('View Contacts'), - '$micropro' => $micropro, - ]); - - $arr = ['contacts' => $r, 'output' => $o]; - - Hook::callAll('contact_block_end', $arr); - - return $o; + return ContactBlock::getHTML($a->profile); } /** diff --git a/src/Model/Profile.php b/src/Model/Profile.php index b5e54474b8..aacceedb3a 100644 --- a/src/Model/Profile.php +++ b/src/Model/Profile.php @@ -9,6 +9,7 @@ use Friendica\Content\Feature; use Friendica\Content\ForumManager; use Friendica\Content\Text\BBCode; use Friendica\Content\Text\HTML; +use Friendica\Content\Widget\ContactBlock; use Friendica\Core\Cache; use Friendica\Core\Config; use Friendica\Core\Hook; @@ -475,9 +476,9 @@ class Profile $contact_block = ''; $updated = ''; - $contacts = 0; + $contact_count = 0; if (!$block) { - $contact_block = HTML::contactBlock(); + $contact_block = ContactBlock::getHTML($a->profile); if (is_array($a->profile) && !$a->profile['hide-friends']) { $r = q( @@ -488,20 +489,15 @@ class Profile $updated = date('c', strtotime($r[0]['updated'])); } - $r = q( - "SELECT COUNT(*) AS `total` FROM `contact` - WHERE `uid` = %d - AND NOT `self` AND NOT `blocked` AND NOT `pending` - AND NOT `hidden` AND NOT `archive` - AND `network` IN ('%s', '%s', '%s', '')", - intval($profile['uid']), - DBA::escape(Protocol::DFRN), - DBA::escape(Protocol::DIASPORA), - DBA::escape(Protocol::OSTATUS) - ); - if (DBA::isResult($r)) { - $contacts = intval($r[0]['total']); - } + $contact_count = 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], + ]); } } @@ -545,7 +541,7 @@ class Profile '$homepage' => $homepage, '$about' => $about, '$network' => L10n::t('Network:'), - '$contacts' => $contacts, + '$contacts' => $contact_count, '$updated' => $updated, '$diaspora' => $diaspora, '$contact_block' => $contact_block,