Avoid quoting the own post

This commit is contained in:
Michael 2023-09-24 10:18:50 +00:00
parent 3e314d2fc6
commit 1dbc9bd472
6 changed files with 20 additions and 10 deletions

View File

@ -638,7 +638,7 @@ class Item
$body = $item['body']; $body = $item['body'];
} }
if (empty($item['quote-uri-id'])) { if (empty($item['quote-uri-id']) || ($item['quote-uri-id'] == $item['uri-id'])) {
return $body; return $body;
} }
@ -729,7 +729,7 @@ class Item
*/ */
public function getSharedPost(array $item, array $fields = []): array 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]]); $shared = Post::selectFirst($fields, ['uri-id' => $item['quote-uri-id'], 'uid' => [0, $item['uid'] ?? 0]]);
if (is_array($shared)) { if (is_array($shared)) {
return [ return [
@ -770,7 +770,7 @@ class Item
return $attributes; 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']]); $shared = Post::selectFirst(['author-name', 'author-link', 'author-avatar', 'plink', 'created', 'guid', 'uri', 'body'], ['uri-id' => $item['quote-uri-id']]);
if (!empty($shared)) { if (!empty($shared)) {
return [ return [

View File

@ -324,7 +324,7 @@ class Plaintext
$post['text'] = Post\Media::removeFromBody($post['text']); $post['text'] = Post\Media::removeFromBody($post['text']);
$images = Post\Media::getByURIId($item['uri-id'], [Post\Media::IMAGE]); $images = Post\Media::getByURIId($item['uri-id'], [Post\Media::IMAGE]);
if (!empty($item['quote-uri-id'])) { if (!empty($item['quote-uri-id']) && ($item['quote-uri-id'] != $item['uri-id'])) {
$images = array_merge($images, Post\Media::getByURIId($item['quote-uri-id'], [Post\Media::IMAGE])); $images = array_merge($images, Post\Media::getByURIId($item['quote-uri-id'], [Post\Media::IMAGE]));
} }
foreach ($images as $image) { foreach ($images as $image) {
@ -355,7 +355,7 @@ class Plaintext
// Look for audio or video links // Look for audio or video links
$media = Post\Media::getByURIId($item['uri-id'], [Post\Media::AUDIO, Post\Media::VIDEO]); $media = Post\Media::getByURIId($item['uri-id'], [Post\Media::AUDIO, Post\Media::VIDEO]);
if (!empty($item['quote-uri-id'])) { if (!empty($item['quote-uri-id']) && ($item['quote-uri-id'] != $item['uri-id'])) {
$media = array_merge($media, Post\Media::getByURIId($item['quote-uri-id'], [Post\Media::AUDIO, Post\Media::VIDEO])); $media = array_merge($media, Post\Media::getByURIId($item['quote-uri-id'], [Post\Media::AUDIO, Post\Media::VIDEO]));
} }

View File

@ -1184,6 +1184,11 @@ class Item
} }
} }
if (!empty($item['quote-uri-id']) && ($item['quote-uri-id'] == $item['uri-id'])) {
Logger::info('Quote-Uri-Id is identical to Uri-Id', ['uri-id' => $item['uri-id'], 'guid' => $item['guid']]);
unset($item['quote-uri-id']);
}
if (!empty($item['quote-uri-id'])) { if (!empty($item['quote-uri-id'])) {
$item['raw-body'] = BBCode::removeSharedData($item['raw-body']); $item['raw-body'] = BBCode::removeSharedData($item['raw-body']);
$item['body'] = BBCode::removeSharedData($item['body']); $item['body'] = BBCode::removeSharedData($item['body']);
@ -3125,7 +3130,7 @@ class Item
$item['body'] = BBCode::removeSharedData($item['body']); $item['body'] = BBCode::removeSharedData($item['body']);
} elseif (empty($shared_item['uri-id']) && empty($item['quote-uri-id']) && ($item['network'] != Protocol::DIASPORA)) { } elseif (empty($shared_item['uri-id']) && empty($item['quote-uri-id']) && ($item['network'] != Protocol::DIASPORA)) {
$media = Post\Media::getByURIId($item['uri-id'], [Post\Media::ACTIVITY]); $media = Post\Media::getByURIId($item['uri-id'], [Post\Media::ACTIVITY]);
if (!empty($media)) { if (!empty($media) && ($media[0]['media-uri-id'] != $item['uri-id'])) {
$shared_item = Post::selectFirst($fields, ['uri-id' => $media[0]['media-uri-id'], 'uid' => [$item['uid'], 0]]); $shared_item = Post::selectFirst($fields, ['uri-id' => $media[0]['media-uri-id'], 'uid' => [$item['uid'], 0]]);
if (empty($shared_item['uri-id'])) { if (empty($shared_item['uri-id'])) {
$shared_item = Post::selectFirst($fields, ['plink' => $media[0]['url'], 'uid' => [$item['uid'], 0]]); $shared_item = Post::selectFirst($fields, ['plink' => $media[0]['url'], 'uid' => [$item['uid'], 0]]);

View File

@ -265,6 +265,11 @@ class Media
return $media; return $media;
} }
if ($item['uri-id'] == $media['uri-id']) {
Logger::info('Media-Uri-Id is identical to Uri-Id', ['uri-id' => $media['uri-id']]);
return $media;
}
if ( if (
!empty($item['plink']) && Strings::compareLink($item['plink'], $media['url']) && !empty($item['plink']) && Strings::compareLink($item['plink'], $media['url']) &&
parse_url($item['plink'], PHP_URL_HOST) != parse_url($item['uri'], PHP_URL_HOST) parse_url($item['plink'], PHP_URL_HOST) != parse_url($item['uri'], PHP_URL_HOST)

View File

@ -602,7 +602,7 @@ class UserNotification
*/ */
private static function checkQuoted(array $item, array $contacts): bool private static function checkQuoted(array $item, array $contacts): bool
{ {
if (empty($item['quote-uri-id'])) { if (empty($item['quote-uri-id']) || ($item['quote-uri-id'] == $item['uri-id'])) {
return false; return false;
} }
$condition = ['uri-id' => $item['quote-uri-id'], 'uid' => $item['uid'], 'author-id' => $contacts, 'deleted' => false, 'gravity' => [item::GRAVITY_PARENT, Item::GRAVITY_COMMENT]]; $condition = ['uri-id' => $item['quote-uri-id'], 'uid' => $item['uid'], 'author-id' => $contacts, 'deleted' => false, 'gravity' => [item::GRAVITY_PARENT, Item::GRAVITY_COMMENT]];

View File

@ -1752,7 +1752,7 @@ class Transmitter
$body = BBCode::setMentionsToNicknames($body); $body = BBCode::setMentionsToNicknames($body);
if (!empty($item['quote-uri-id'])) { if (!empty($item['quote-uri-id']) && ($item['quote-uri-id'] != $item['uri-id'])) {
if (Post::exists(['uri-id' => $item['quote-uri-id'], 'network' => [Protocol::ACTIVITYPUB, Protocol::DFRN]])) { if (Post::exists(['uri-id' => $item['quote-uri-id'], 'network' => [Protocol::ACTIVITYPUB, Protocol::DFRN]])) {
$real_quote = true; $real_quote = true;
$data['quoteUrl'] = $item['quote-uri']; $data['quoteUrl'] = $item['quote-uri'];
@ -1772,7 +1772,7 @@ class Transmitter
if (!empty($language)) { if (!empty($language)) {
$richbody = BBCode::setMentionsToNicknames($item['body'] ?? ''); $richbody = BBCode::setMentionsToNicknames($item['body'] ?? '');
$richbody = Post\Media::removeFromEndOfBody($richbody); $richbody = Post\Media::removeFromEndOfBody($richbody);
if (!empty($item['quote-uri-id'])) { if (!empty($item['quote-uri-id']) && ($item['quote-uri-id'] != $item['uri-id'])) {
if ($real_quote) { if ($real_quote) {
$richbody = DI::contentItem()->addShareLink($richbody, $item['quote-uri-id']); $richbody = DI::contentItem()->addShareLink($richbody, $item['quote-uri-id']);
} else { } else {
@ -1784,7 +1784,7 @@ class Transmitter
$data['contentMap'][$language] = BBCode::convertForUriId($item['uri-id'], $richbody, BBCode::EXTERNAL); $data['contentMap'][$language] = BBCode::convertForUriId($item['uri-id'], $richbody, BBCode::EXTERNAL);
} }
if (!empty($item['quote-uri-id'])) { if (!empty($item['quote-uri-id']) && ($item['quote-uri-id'] != $item['uri-id'])) {
$source = DI::contentItem()->addSharedPost($item, $item['body']); $source = DI::contentItem()->addSharedPost($item, $item['body']);
} else { } else {
$source = $item['body']; $source = $item['body'];