$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
// @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']);
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'])) {
unset($item['event-id']);
}
/**
- * 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
*/
public static function getQuoteUriId(string $body, int $uid = 0): int
(Proxy::getPixelsFromSize($size) ? Proxy::getPixelsFromSize($size) . '/' : '') .
$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'];
+ }
}