* 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
{
// 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);
}
/**
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) {
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;
}
}