From 02123bda9830e370542319c0466220850d8b81fe Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Sun, 14 Jan 2024 10:08:00 +0100 Subject: [PATCH] Issue 13828: Use the alias as profile link if present (#13829) * Issue 13828: Use the alias as profile link if present * Updated messages.po --- src/Content/Item.php | 2 +- src/Content/Widget/Hovercard.php | 6 ++++-- src/Content/Widget/VCard.php | 6 +----- src/Model/Contact.php | 17 ++++++++++++++++- view/lang/C/messages.po | 26 +++++++++++++------------- 5 files changed, 35 insertions(+), 22 deletions(-) diff --git a/src/Content/Item.php b/src/Content/Item.php index 9c5c3e7480..c7438d2593 100644 --- a/src/Content/Item.php +++ b/src/Content/Item.php @@ -383,7 +383,7 @@ class Item 'url' => $item['author-link'], 'alias' => $item['author-alias'], ]; - $profile_link = Contact::magicLinkByContact($author, $item['author-link']); + $profile_link = Contact::magicLinkByContact($author, Contact::getProfileLink($author)); if (strpos($profile_link, 'contact/redir/') === 0) { $status_link = $profile_link . '?' . http_build_query(['url' => $item['author-link'] . '/status']); $photos_link = $profile_link . '?' . http_build_query(['url' => $item['author-link'] . '/photos']); diff --git a/src/Content/Widget/Hovercard.php b/src/Content/Widget/Hovercard.php index 91107b0fc3..d229f764e8 100644 --- a/src/Content/Widget/Hovercard.php +++ b/src/Content/Widget/Hovercard.php @@ -45,19 +45,21 @@ class Hovercard $actions = []; } + $contact_url = Contact::getProfileLink($contact); + // Move the contact data to the profile array so we can deliver it to $tpl = Renderer::getMarkupTemplate('hovercard.tpl'); return Renderer::replaceMacros($tpl, [ '$profile' => [ 'name' => $contact['name'], 'nick' => $contact['nick'], - 'addr' => $contact['addr'] ?: $contact['url'], + 'addr' => $contact['addr'] ?: $contact_url, 'thumb' => Contact::getThumb($contact), 'url' => Contact::magicLinkByContact($contact), 'nurl' => $contact['nurl'], 'location' => $contact['location'], 'about' => $contact['about'], - 'network_link' => Strings::formatNetworkName($contact['network'], $contact['url']), + 'network_link' => Strings::formatNetworkName($contact['network'], $contact_url), 'tags' => $contact['keywords'], 'bd' => $contact['bd'] <= DBA::NULL_DATE ? '' : $contact['bd'], 'account_type' => Contact::getAccountType($contact['contact-type']), diff --git a/src/Content/Widget/VCard.php b/src/Content/Widget/VCard.php index 9963629f17..13c90f5712 100644 --- a/src/Content/Widget/VCard.php +++ b/src/Content/Widget/VCard.php @@ -50,11 +50,7 @@ class VCard Logger::warning('Incomplete contact', ['contact' => $contact ?? []]); } - if (!Network::isValidHttpUrl($contact['url']) && Network::isValidHttpUrl($contact['alias'])) { - $contact_url = $contact['alias']; - } else { - $contact_url = $contact['url']; - } + $contact_url = Contact::getProfileLink($contact); if ($contact['network'] != '') { $network_link = Strings::formatNetworkName($contact['network'], $contact_url); diff --git a/src/Model/Contact.php b/src/Model/Contact.php index 4e4a41e7e3..6442784f73 100644 --- a/src/Model/Contact.php +++ b/src/Model/Contact.php @@ -3490,6 +3490,21 @@ class Contact return array_column($contacts, 'id'); } + /** + * Return the link to the profile + * + * @param array $contact + * @return string + */ + public static function getProfileLink(array $contact): string + { + if (!empty($contact['alias']) && Network::isValidHttpUrl($contact['alias']) && (($contact['network'] ?? '') != Protocol::DFRN)) { + return $contact['alias']; + } else { + return $contact['url']; + } + } + /** * Returns a magic link to authenticate remote visitors * @@ -3548,7 +3563,7 @@ class Contact */ public static function magicLinkByContact(array $contact, string $url = ''): string { - $destination = $url ?: (!Network::isValidHttpUrl($contact['url']) && !empty($contact['alias']) && Network::isValidHttpUrl($contact['alias']) ? $contact['alias'] : $contact['url']); + $destination = $url ?: self::getProfileLink($contact); if (!DI::userSession()->isAuthenticated()) { return $destination; diff --git a/view/lang/C/messages.po b/view/lang/C/messages.po index 652a82709b..76cd7655c4 100644 --- a/view/lang/C/messages.po +++ b/view/lang/C/messages.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: 2024.03-dev\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-01-03 19:19+0000\n" +"POT-Creation-Date: 2024-01-14 07:50+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -1377,7 +1377,7 @@ msgstr "" msgid "Public post" msgstr "" -#: src/Content/Conversation.php:426 src/Content/Widget/VCard.php:131 +#: src/Content/Conversation.php:426 src/Content/Widget/VCard.php:127 #: src/Model/Profile.php:483 src/Module/Admin/Logs/View.php:92 #: src/Module/Post/Edit.php:181 msgid "Message" @@ -2220,7 +2220,7 @@ msgstr "" msgid "The end" msgstr "" -#: src/Content/Text/HTML.php:859 src/Content/Widget/VCard.php:127 +#: src/Content/Text/HTML.php:859 src/Content/Widget/VCard.php:123 #: src/Model/Profile.php:477 src/Module/Contact/Profile.php:471 msgid "Follow" msgstr "" @@ -2420,27 +2420,27 @@ msgstr[1] "" msgid "More Trending Tags" msgstr "" -#: src/Content/Widget/VCard.php:106 src/Model/Contact.php:1204 +#: src/Content/Widget/VCard.php:102 src/Model/Contact.php:1204 #: src/Model/Profile.php:461 msgid "Post to group" msgstr "" -#: src/Content/Widget/VCard.php:110 src/Model/Contact.php:1209 +#: src/Content/Widget/VCard.php:106 src/Model/Contact.php:1209 #: src/Model/Profile.php:466 src/Module/Moderation/Item/Source.php:85 msgid "Mention" msgstr "" -#: src/Content/Widget/VCard.php:120 src/Model/Profile.php:380 +#: src/Content/Widget/VCard.php:116 src/Model/Profile.php:380 #: src/Module/Contact/Profile.php:408 src/Module/Profile/Profile.php:199 msgid "XMPP:" msgstr "" -#: src/Content/Widget/VCard.php:121 src/Model/Profile.php:381 +#: src/Content/Widget/VCard.php:117 src/Model/Profile.php:381 #: src/Module/Contact/Profile.php:410 src/Module/Profile/Profile.php:203 msgid "Matrix:" msgstr "" -#: src/Content/Widget/VCard.php:122 src/Model/Event.php:82 +#: src/Content/Widget/VCard.php:118 src/Model/Event.php:82 #: src/Model/Event.php:109 src/Model/Event.php:471 src/Model/Event.php:963 #: src/Model/Profile.php:375 src/Module/Contact/Profile.php:406 #: src/Module/Directory.php:147 src/Module/Notifications/Introductions.php:187 @@ -2448,18 +2448,18 @@ msgstr "" msgid "Location:" msgstr "" -#: src/Content/Widget/VCard.php:125 src/Model/Profile.php:490 +#: src/Content/Widget/VCard.php:121 src/Model/Profile.php:490 #: src/Module/Notifications/Introductions.php:201 msgid "Network:" msgstr "" -#: src/Content/Widget/VCard.php:129 src/Model/Contact.php:1237 +#: src/Content/Widget/VCard.php:125 src/Model/Contact.php:1237 #: src/Model/Contact.php:1249 src/Model/Profile.php:479 #: src/Module/Contact/Profile.php:463 msgid "Unfollow" msgstr "" -#: src/Content/Widget/VCard.php:135 src/Model/Contact.php:1206 +#: src/Content/Widget/VCard.php:131 src/Model/Contact.php:1206 #: src/Model/Profile.php:463 msgid "View group" msgstr "" @@ -3813,9 +3813,9 @@ msgid "" "\t\tYou may also wish to add some basic information to your default profile\n" "\t\t(on the \"Profiles\" page) so that other people can easily find you.\n" "\n" -"\t\tWe recommend adding a profile photo, adding some profile \"keywords\" \n" +"\t\tWe recommend adding a profile photo, adding some profile \"keywords\"\n" "\t\t(very useful in making new friends) - and perhaps what country you live " -"in; \n" +"in;\n" "\t\tif you do not wish to be more specific than that.\n" "\n" "\t\tWe fully respect your right to privacy, and none of these items are "