X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FContent%2FItem.php;h=163db89aa472c6b698cffb5ca92d244d9d7b4b4f;hb=06a1db4f24bffbb6027f6341879345bde7212ecc;hp=bd3c6d774b8d55abe702604c3c7176f4a75a7c16;hpb=582e05fcff731a5bae6f2207b1d20db2043e5c81;p=friendica.git diff --git a/src/Content/Item.php b/src/Content/Item.php index bd3c6d774b..163db89aa4 100644 --- a/src/Content/Item.php +++ b/src/Content/Item.php @@ -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; @@ -54,6 +55,7 @@ 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 @@ -367,7 +369,7 @@ class Item { $this->profiler->startRecording('rendering'); $sub_link = $contact_url = $pm_url = $status_link = ''; - $photos_link = $posts_link = $block_link = $ignore_link = ''; + $photos_link = $posts_link = $block_link = $ignore_link = $collapse_link = $ignoreserver_link = ''; if ($this->userSession->getLocalUserId() && $this->userSession->getLocalUserId() == $item['uid'] && $item['gravity'] == ItemModel::GRAVITY_PARENT && !$item['self'] && !$item['mention']) { $sub_link = 'javascript:doFollowThread(' . $item['id'] . '); return false;'; @@ -407,6 +409,11 @@ class Item $collapse_link = $item['self'] ? '' : $contact_url . '/collapse?t=' . $formSecurityToken; } + $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']) { $contact_url = 'contact/' . $cid; $posts_link = $contact_url . '/posts'; @@ -427,7 +434,8 @@ class Item $this->l10n->t('Send PM') => $pm_url, $this->l10n->t('Block') => $block_link, $this->l10n->t('Ignore') => $ignore_link, - $this->l10n->t('Collapse') => $collapse_link + $this->l10n->t('Collapse') => $collapse_link, + $this->l10n->t("Ignore %s server", $authorBaseUri->getHost()) => $ignoreserver_link, ]; if (!empty($item['language'])) { @@ -544,7 +552,7 @@ class Item unset($item['owner-name']); unset($item['owner-avatar']); } - + $item['postopts'] = ''; } @@ -669,14 +677,15 @@ class Item * Add a share block for the given item array * * @param array $item - * @param bool $add_media + * @param bool $add_media true = Media is added to the body + * @param bool $for_display true = The share block is used for display purposes, false = used for connectors, transport to other systems, ... * @return string */ - public function createSharedBlockByArray(array $item, bool $add_media = false): string + public function createSharedBlockByArray(array $item, bool $add_media = false, bool $for_display = false): string { if ($item['network'] == Protocol::FEED) { return PageInfo::getFooterFromUrl($item['plink']); - } elseif (!in_array($item['network'] ?? '', Protocol::FEDERATED)) { + } elseif (!in_array($item['network'] ?? '', Protocol::FEDERATED) && !$for_display) { $item['guid'] = ''; $item['uri'] = ''; } @@ -695,7 +704,7 @@ class Item // If it is a reshared post then reformat it to avoid display problems with two share elements if (!empty($shared)) { - if (!empty($shared['guid']) && ($encapsulated_share = $this->createSharedPostByGuid($shared['guid'], true))) { + if (($item['network'] != Protocol::BLUESKY) && !empty($shared['guid']) && ($encapsulated_share = $this->createSharedPostByGuid($shared['guid'], true))) { if (!empty(BBCode::fetchShareAttributes($item['body']))) { $item['body'] = preg_replace("/\[share.*?\](.*)\[\/share\]/ism", $encapsulated_share, $item['body']); } else {