]> git.mxchange.org Git - friendica.git/blob - src/Content/Widget/Hovercard.php
Issue 13828: Use the alias as profile link if present (#13829)
[friendica.git] / src / Content / Widget / Hovercard.php
1 <?php
2 /**
3  * @copyright Copyright (C) 2010-2024, the Friendica project
4  *
5  * @license GNU AGPL version 3 or any later version
6  *
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.
11  *
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.
16  *
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/>.
19  *
20  */
21
22 namespace Friendica\Content\Widget;
23
24 use Friendica\Core\Renderer;
25 use Friendica\Database\DBA;
26 use Friendica\Model\Contact;
27 use Friendica\Network\HTTPException;
28 use Friendica\Util\Strings;
29
30 class Hovercard
31 {
32         /**
33          * @param array $contact
34          * @param int   $localUid Used to show user actions
35          * @return string
36          * @throws HTTPException\InternalServerErrorException
37          * @throws HTTPException\ServiceUnavailableException
38          * @throws \ImagickException
39          */
40         public static function getHTML(array $contact, int $localUid = 0): string
41         {
42                 if ($localUid) {
43                         $actions = Contact::photoMenu($contact, $localUid);
44                 } else {
45                         $actions = [];
46                 }
47
48                 $contact_url = Contact::getProfileLink($contact);
49
50                 // Move the contact data to the profile array so we can deliver it to
51                 $tpl = Renderer::getMarkupTemplate('hovercard.tpl');
52                 return Renderer::replaceMacros($tpl, [
53                         '$profile' => [
54                                 'name'         => $contact['name'],
55                                 'nick'         => $contact['nick'],
56                                 'addr'         => $contact['addr'] ?: $contact_url,
57                                 'thumb'        => Contact::getThumb($contact),
58                                 'url'          => Contact::magicLinkByContact($contact),
59                                 'nurl'         => $contact['nurl'],
60                                 'location'     => $contact['location'],
61                                 'about'        => $contact['about'],
62                                 'network_link' => Strings::formatNetworkName($contact['network'], $contact_url),
63                                 'tags'         => $contact['keywords'],
64                                 'bd'           => $contact['bd'] <= DBA::NULL_DATE ? '' : $contact['bd'],
65                                 'account_type' => Contact::getAccountType($contact['contact-type']),
66                                 'contact_type' => $contact['contact-type'],
67                                 'actions'      => $actions,
68                                 'self'         => $contact['self'],
69                         ],
70                 ]);
71         }
72 }