Update HTML::contactBlock and Profile::load with new ContactBlock widget

This commit is contained in:
Hypolite Petovan 2019-01-05 22:05:24 -05:00
parent 1f98fdfda6
commit 11a4a57bfe
2 changed files with 17 additions and 93 deletions

View File

@ -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);
}
/**

View File

@ -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,