Merge pull request #14660 from annando/set-quote-id

Set the quote-uri-id when a post is linked
This commit is contained in:
Hypolite Petovan 2025-01-02 12:05:35 -05:00 committed by GitHub
commit e177ad55c1
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 34 additions and 2 deletions

View file

@ -233,6 +233,14 @@ class Item
$content_fields = ['raw-body' => trim($fields['raw-body'] ?? $fields['body'])]; $content_fields = ['raw-body' => trim($fields['raw-body'] ?? $fields['body'])];
if ($item['origin'] && empty($item['quote-uri-id'])) {
$quote_id = Post\Media::getActivityUriId($item['uri-id']);
if (!empty($quote_id)) {
Logger::notice('Found attached post', ['id' => $quote_id, 'guid' => $item['guid'], 'uri-id' => $item['uri-id']]);
$content_fields['quote-uri-id'] = $quote_id;
}
}
// Remove all media attachments from the body and store them in the post-media table // Remove all media attachments from the body and store them in the post-media table
// @todo On shared postings (Diaspora style and commented reshare) don't fetch content from the shared part // @todo On shared postings (Diaspora style and commented reshare) don't fetch content from the shared part
$content_fields['raw-body'] = Post\Media::insertFromBody($item['uri-id'], $content_fields['raw-body']); $content_fields['raw-body'] = Post\Media::insertFromBody($item['uri-id'], $content_fields['raw-body']);
@ -1221,6 +1229,14 @@ class Item
Post\Media::insertFromAttachment($item['uri-id'], $item['attach']); Post\Media::insertFromAttachment($item['uri-id'], $item['attach']);
} }
if ($item['origin'] && empty($item['quote-uri-id'])) {
$quote_id = Post\Media::getActivityUriId($item['uri-id']);
if (!empty($quote_id)) {
Logger::notice('Found attached post', ['id' => $quote_id, 'guid' => $item['guid'], 'uri-id' => $item['uri-id']]);
$item['quote-uri-id'] = $quote_id;
}
}
if (empty($item['event-id'])) { if (empty($item['event-id'])) {
unset($item['event-id']); unset($item['event-id']);
@ -4247,9 +4263,10 @@ class Item
} }
/** /**
* Fetch the uri-id of a quote * Fetch the uri-id of a quoted post by searching for data in the body or attached media
* *
* @param string $body * @param string $body The body of the
* @param int $uid The id of the user
* @return integer * @return integer
*/ */
public static function getQuoteUriId(string $body, int $uid = 0): int public static function getQuoteUriId(string $body, int $uid = 0): int

View file

@ -1130,4 +1130,19 @@ class Media
(Proxy::getPixelsFromSize($size) ? Proxy::getPixelsFromSize($size) . '/' : '') . (Proxy::getPixelsFromSize($size) ? Proxy::getPixelsFromSize($size) . '/' : '') .
$id; $id;
} }
/**
* Fetch the uri-id of an attached uri-post for a given uri-id
*
* @param integer $uri_id Uri-Id of the post
* @return integer uri-id of the first attached post
*/
public static function getActivityUriId(int $uri_id): int
{
$posts = self::getByURIId($uri_id, [self::ACTIVITY]);
if (!$posts) {
return 0;
}
return reset($posts)['media-uri-id'];
}
} }