]> git.mxchange.org Git - friendica.git/blobdiff - src/Content/Widget/VCard.php
fix Typo
[friendica.git] / src / Content / Widget / VCard.php
index 6ff5f21a436109a2f6a121181d240c1831516430..d906004c5ffbdb994fc1fd85517d73443306293b 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /**
- * @copyright Copyright (C) 2010-2022, the Friendica project
+ * @copyright Copyright (C) 2010-2023, the Friendica project
  *
  * @license GNU AGPL version 3 or any later version
  *
@@ -26,10 +26,10 @@ use Friendica\Content\Text\BBCode;
 use Friendica\Core\Logger;
 use Friendica\Core\Protocol;
 use Friendica\Core\Renderer;
-use Friendica\Core\Session;
 use Friendica\Core\System;
 use Friendica\DI;
 use Friendica\Model\Contact;
+use Friendica\Util\Network;
 use Friendica\Util\Strings;
 
 /**
@@ -45,15 +45,21 @@ class VCard
         * @template widget/vcard.tpl
         * @return string
         */
-       public static function getHTML(array $contact)
+       public static function getHTML(array $contact): string
        {
                if (!isset($contact['network']) || !isset($contact['id'])) {
                        Logger::warning('Incomplete contact', ['contact' => $contact ?? [], 'callstack' => System::callstack(20)]);
                }
 
+               if (!Network::isValidHttpUrl($contact['url']) && Network::isValidHttpUrl($contact['alias'])) {
+                       $contact_url = $contact['alias'];
+               } else {
+                       $contact_url = $contact['url'];
+               }
+
                if ($contact['network'] != '') {
-                       $network_link   = Strings::formatNetworkName($contact['network'], $contact['url']);
-                       $network_avatar = ContactSelector::networkToIcon($contact['network'], $contact['url']);
+                       $network_link   = Strings::formatNetworkName($contact['network'], $contact_url);
+                       $network_avatar = ContactSelector::networkToIcon($contact['network'], $contact_url);
                } else {
                        $network_link   = '';
                        $network_avatar = '';
@@ -62,16 +68,17 @@ class VCard
                $follow_link      = '';
                $unfollow_link    = '';
                $wallmessage_link = '';
+               $showgroup_link   = '';
 
                $photo   = Contact::getPhoto($contact);
 
-               if (Session::getLocalUser()) {
+               if (DI::userSession()->getLocalUserId()) {
                        if ($contact['uid']) {
                                $id      = $contact['id'];
                                $rel     = $contact['rel'];
                                $pending = $contact['pending'];
                        } else {
-                               $pcontact = Contact::selectFirst([], ['uid' => Session::getLocalUser(), 'uri-id' => $contact['uri-id']]);
+                               $pcontact = Contact::selectFirst([], ['uid' => DI::userSession()->getLocalUserId(), 'uri-id' => $contact['uri-id'], 'deleted' => false]);
 
                                $id      = $pcontact['id'] ?? 0;
                                $rel     = $pcontact['rel'] ?? Contact::NOTHING;
@@ -84,21 +91,25 @@ class VCard
 
                        if (empty($contact['self']) && Protocol::supportsFollow($contact['network'])) {
                                if (in_array($rel, [Contact::SHARING, Contact::FRIEND])) {
-                                       $unfollow_link = 'unfollow?url=' . urlencode($contact['url']) . '&auto=1';
+                                       $unfollow_link = 'contact/unfollow?url=' . urlencode($contact_url) . '&auto=1';
                                } elseif (!$pending) {
-                                       $follow_link = 'follow?url=' . urlencode($contact['url']) . '&auto=1';
+                                       $follow_link = 'contact/follow?url=' . urlencode($contact_url) . '&auto=1';
                                }
                        }
 
                        if (in_array($rel, [Contact::FOLLOWER, Contact::FRIEND]) && Contact::canReceivePrivateMessages($contact)) {
                                $wallmessage_link = 'message/new/' . $id;
                        }
+
+                       if (in_array($rel, [Contact::SHARING])) {
+                               $showgroup_link = 'network/group/' . $id;
+                       }
                }
 
                return Renderer::replaceMacros(Renderer::getMarkupTemplate('widget/vcard.tpl'), [
                        '$contact'          => $contact,
                        '$photo'            => $photo,
-                       '$url'              => Contact::magicLinkByContact($contact, $contact['url']),
+                       '$url'              => Contact::magicLinkByContact($contact, $contact_url),
                        '$about'            => BBCode::convertForUriId($contact['uri-id'] ?? 0, $contact['about'] ?? ''),
                        '$xmpp'             => DI::l10n()->t('XMPP:'),
                        '$matrix'           => DI::l10n()->t('Matrix:'),
@@ -113,6 +124,10 @@ class VCard
                        '$unfollow_link'    => $unfollow_link,
                        '$wallmessage'      => DI::l10n()->t('Message'),
                        '$wallmessage_link' => $wallmessage_link,
+                       '$mentioning'       => DI::l10n()->t('Mention'),
+                       '$post2group'       => DI::l10n()->t('Post to group'),
+                       '$showgroup'        => DI::l10n()->t('View group'),
+                       '$showgroup_link'   => $showgroup_link,
                ]);
        }
 }