]> git.mxchange.org Git - friendica.git/blobdiff - src/Content/Item.php
set ! and @ on mentioning in hover-card
[friendica.git] / src / Content / Item.php
index 86493385f26cf76d697798e10175efdb0090107e..9e50602df6f3e579839a8451195b809fd9345d91 100644 (file)
@@ -34,15 +34,16 @@ use Friendica\Core\Protocol;
 use Friendica\Core\Session\Capability\IHandleUserSessions;
 use Friendica\Core\System;
 use Friendica\Database\DBA;
+use Friendica\DI;
 use Friendica\Model\Attach;
+use Friendica\Model\Circle;
 use Friendica\Model\Contact;
 use Friendica\Model\Conversation;
 use Friendica\Model\FileTag;
-use Friendica\Model\Circle;
 use Friendica\Model\Item as ItemModel;
 use Friendica\Model\Photo;
-use Friendica\Model\Tag;
 use Friendica\Model\Post;
+use Friendica\Model\Tag;
 use Friendica\Model\User;
 use Friendica\Network\HTTPException;
 use Friendica\Object\EMail\ItemCCEMail;
@@ -50,11 +51,11 @@ use Friendica\Protocol\Activity;
 use Friendica\Util\ACLFormatter;
 use Friendica\Util\DateTimeFormat;
 use Friendica\Util\Emailer;
-use Friendica\Util\Network;
 use Friendica\Util\ParseUrl;
 use Friendica\Util\Profiler;
 use Friendica\Util\Proxy;
 use Friendica\Util\XML;
+use GuzzleHttp\Psr7\Uri;
 
 /**
  * A content helper class for displaying items
@@ -408,8 +409,9 @@ class Item
                        $collapse_link = $item['self'] ? '' : $contact_url . '/collapse?t=' . $formSecurityToken;
                }
 
-               if (!empty($item['author-gsid'])) {
-                       $ignoreserver_link = Network::isLocalLink($contact_url) ? '' : 'settings/server/' . $item['author-gsid'] . '/ignore';
+               $authorBaseUri = new Uri($item['author-baseurl'] ?? '');
+               if (!empty($item['author-gsid']) && $authorBaseUri->getHost() && !DI::baseUrl()->isLocalUrl($authorBaseUri)) {
+                       $ignoreserver_link = 'settings/server/' . $item['author-gsid'] . '/ignore';
                }
 
                if ($cid && !$item['self']) {
@@ -430,10 +432,12 @@ class Item
                                $this->l10n->t('Network Posts') => $posts_link,
                                $this->l10n->t('View Contact') => $contact_url,
                                $this->l10n->t('Send PM') => $pm_url,
+                               $this->l10n->t('Mention') => $mention_url,
+                               $this->l10n->t('Post to group') => $mention_url,
                                $this->l10n->t('Block') => $block_link,
                                $this->l10n->t('Ignore') => $ignore_link,
                                $this->l10n->t('Collapse') => $collapse_link,
-                               $this->l10n->t("Ignore %s's server", $item['author-name']) => $ignoreserver_link,
+                               $this->l10n->t("Ignore %s server", $authorBaseUri->getHost()) => $ignoreserver_link,
                        ];
 
                        if (!empty($item['language'])) {
@@ -636,7 +640,7 @@ class Item
                        $body = $item['body'];
                }
 
-               if (empty($item['quote-uri-id'])) {
+               if (empty($item['quote-uri-id']) || ($item['quote-uri-id'] == $item['uri-id'])) {
                        return $body;
                }
 
@@ -727,7 +731,7 @@ class Item
         */
        public function getSharedPost(array $item, array $fields = []): array
        {
-               if (!empty($item['quote-uri-id'])) {
+               if (!empty($item['quote-uri-id']) && ($item['quote-uri-id'] != $item['uri-id'])) {
                        $shared = Post::selectFirst($fields, ['uri-id' => $item['quote-uri-id'], 'uid' => [0, $item['uid'] ?? 0]]);
                        if (is_array($shared)) {
                                return [
@@ -768,7 +772,7 @@ class Item
                        return $attributes;
                }
 
-               if (!empty($item['quote-uri-id'])) {
+               if (!empty($item['quote-uri-id']) && ($item['quote-uri-id'] != $item['uri-id'])) {
                        $shared = Post::selectFirst(['author-name', 'author-link', 'author-avatar', 'plink', 'created', 'guid', 'uri', 'body'], ['uri-id' => $item['quote-uri-id']]);
                        if (!empty($shared)) {
                                return [