3 * @copyright Copyright (C) 2010-2021, the Friendica project
5 * @license GNU AGPL version 3 or any later version
7 * This program is free software: you can redistribute it and/or modify
8 * it under the terms of the GNU Affero General Public License as
9 * published by the Free Software Foundation, either version 3 of the
10 * License, or (at your option) any later version.
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU Affero General Public License for more details.
17 * You should have received a copy of the GNU Affero General Public License
18 * along with this program. If not, see <https://www.gnu.org/licenses/>.
22 namespace Friendica\Content\Widget;
24 use Friendica\Content\Text\BBCode;
25 use Friendica\Core\Protocol;
26 use Friendica\Core\Renderer;
28 use Friendica\Model\Contact;
29 use Friendica\Util\Strings;
34 * @author Michael Vogel
39 * Get HTML for vcard block
41 * @template widget/vcard.tpl
44 public static function getHTML(array $contact)
46 if (($contact['network'] != '') && ($contact['network'] != Protocol::DFRN)) {
47 $network_link = Strings::formatNetworkName($contact['network'], $contact['url']);
54 $wallmessage_link = '';
57 if ($contact['uid']) {
59 $rel = $contact['rel'];
60 $pending = $contact['pending'];
62 $pcontact = Contact::selectFirst(['id', 'rel', 'pending'], ['uid' => local_user(), 'uri-id' => $contact['uri-id']]);
63 $id = $pcontact['id'] ?? 0;
64 $rel = $pcontact['rel'] ?? Contact::NOTHING;
65 $pending = $pcontact['pending'] ?? false;
68 if (in_array($contact['network'], Protocol::NATIVE_SUPPORT)) {
69 if (in_array($rel, [Contact::SHARING, Contact::FRIEND])) {
70 $unfollow_link = 'unfollow?url=' . urlencode($contact['url']) . '&auto=1';
72 $follow_link = 'follow?url=' . urlencode($contact['url']) . '&auto=1';
76 if (in_array($rel, [Contact::FOLLOWER, Contact::FRIEND]) && Contact::canReceivePrivateMessages($contact)) {
77 $wallmessage_link = 'message/new/' . $id;
81 return Renderer::replaceMacros(Renderer::getMarkupTemplate('widget/vcard.tpl'), [
82 '$contact' => $contact,
83 '$photo' => Contact::getPhoto($contact),
84 '$url' => Contact::magicLinkByContact($contact, $contact['url']),
85 '$about' => BBCode::convertForUriId($contact['uri-id'] ?? 0, $contact['about'] ?? ''),
86 '$xmpp' => DI::l10n()->t('XMPP:'),
87 '$location' => DI::l10n()->t('Location:'),
88 '$network_link' => $network_link,
89 '$network' => DI::l10n()->t('Network:'),
90 '$account_type' => Contact::getAccountType($contact),
91 '$follow' => DI::l10n()->t('Follow'),
92 '$follow_link' => $follow_link,
93 '$unfollow' => DI::l10n()->t('Unfollow'),
94 '$unfollow_link' => $unfollow_link,
95 '$wallmessage' => DI::l10n()->t('Message'),
96 '$wallmessage_link' => $wallmessage_link,