X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;ds=sidebyside;f=src%2FModel%2FItem.php;h=d9bd72d7c783d981de2d8338e5773494d698911b;hb=1a1e452faec7b06bc2be49289620cd59ac210c67;hp=625567a3ca33ad14d024110a4c3cf92c8fcc22e0;hpb=498a957009abf833a550169ef1ed4b271a51faa4;p=friendica.git diff --git a/src/Model/Item.php b/src/Model/Item.php index 625567a3ca..d9bd72d7c7 100644 --- a/src/Model/Item.php +++ b/src/Model/Item.php @@ -220,7 +220,7 @@ class Item $content_fields['raw-body'] = Post\Media::insertFromBody($item['uri-id'], $content_fields['raw-body']); $content_fields['raw-body'] = self::setHashtags($content_fields['raw-body']); - Post\Media::insertFromRelevantUrl($item['uri-id'], $content_fields['raw-body']); + Post\Media::insertFromRelevantUrl($item['uri-id'], $content_fields['raw-body'], $fields['body'], $item['author-network']); Post\Content::update($item['uri-id'], $content_fields); } @@ -1188,7 +1188,8 @@ class Item $item['raw-body'] = Post\Media::insertFromBody($item['uri-id'], $item['raw-body']); $item['raw-body'] = self::setHashtags($item['raw-body']); - Post\Media::insertFromRelevantUrl($item['uri-id'], $item['raw-body']); + $author = Contact::getById($item['author-id'], ['network']); + Post\Media::insertFromRelevantUrl($item['uri-id'], $item['raw-body'], $item['body'], $author['network'] ?? ''); // Check for hashtags in the body and repair or add hashtag links $item['body'] = self::setHashtags($item['body']); @@ -1628,7 +1629,7 @@ class Item if (($uid != 0) && (($item['gravity'] == self::GRAVITY_PARENT) || $is_reshare) && DI::pConfig()->get($uid, 'system', 'accept_only_sharer') == self::COMPLETION_NONE && - !in_array($item['post-reason'], [self::PR_FOLLOWER, self::PR_TAG, self::PR_TO, self::PR_CC])) { + !in_array($item['post-reason'], [self::PR_FOLLOWER, self::PR_TAG, self::PR_TO, self::PR_CC, self::PR_ACTIVITY])) { Logger::info('Contact is not a follower, thread will not be stored', ['author' => $item['author-link'], 'uid' => $uid, 'uri-id' => $uri_id, 'post-reason' => $item['post-reason']]); return 0; } @@ -2033,9 +2034,10 @@ class Item * Posts that are created on this system are using System::createUUID. * Received ActivityPub posts are using Processor::getGUIDByURL. * - * @param string $uri uri of an item entry + * @param string $uri uri of an item entry * @param string|null $host hostname for the GUID prefix * @return string Unique guid + * @throws \Exception */ public static function guidFromUri(string $uri, string $host = null): string { @@ -2046,11 +2048,16 @@ class Item // Remove the scheme to make sure that "https" and "http" doesn't make a difference unset($parsed['scheme']); + $hostPart = $host ?? $parsed['host'] ?? ''; + if (!$hostPart) { + Logger::warning('Empty host GUID part', ['uri' => $uri, 'host' => $host, 'parsed' => $parsed, 'callstack' => System::callstack(10)]); + } + // Glue it together to be able to make a hash from it $host_id = implode('/', $parsed); // Use a mixture of several hashes to provide some GUID like experience - return hash('crc32', $host) . '-'. hash('joaat', $host_id) . '-'. hash('fnv164', $host_id); + return hash('crc32', $hostPart) . '-' . hash('joaat', $host_id) . '-' . hash('fnv164', $host_id); } /** @@ -3216,8 +3223,9 @@ class Item private static function addVisualAttachments(array $attachments, array $item, string $content, bool $shared): string { DI::profiler()->startRecording('rendering'); - $leading = ''; + $leading = ''; $trailing = ''; + $images = []; // @todo In the future we should make a single for the template engine with all media in it. This allows more flexibilty. foreach ($attachments['visual'] as $attachment) { @@ -3272,19 +3280,19 @@ class Item if (self::containsLink($item['body'], $src_url)) { continue; } - $media = Renderer::replaceMacros(Renderer::getMarkupTemplate('content/image.tpl'), [ - '$image' => [ - 'src' => $src_url, - 'preview' => $preview_url, - 'attachment' => $attachment, - ], - ]); - // On Diaspora posts the attached pictures are leading - if ($item['network'] == Protocol::DIASPORA) { - $leading .= $media; - } else { - $trailing .= $media; - } + $images[] = ['src' => $src_url, 'preview' => $preview_url, 'attachment' => $attachment]; + } + } + + foreach ($images as $image) { + $media = Renderer::replaceMacros(Renderer::getMarkupTemplate('content/image.tpl'), [ + '$image' => $image, + ]); + // On Diaspora posts the attached pictures are leading + if ($item['network'] == Protocol::DIASPORA) { + $leading .= $media; + } else { + $trailing .= $media; } }