]> git.mxchange.org Git - friendica.git/commitdiff
Provide default host value to hash() in Model\Item::guidFromUri
authorHypolite Petovan <hypolite@mrpetovan.com>
Thu, 8 Dec 2022 03:21:23 +0000 (22:21 -0500)
committerHypolite Petovan <hypolite@mrpetovan.com>
Sat, 10 Dec 2022 16:38:37 +0000 (11:38 -0500)
- Address part of https://github.com/friendica/friendica/issues/12011#issuecomment-1338133783

src/Contact/Avatar.php
src/Model/Contact.php
src/Model/Item.php
src/Model/Mail.php
src/Protocol/Feed.php

index 0cfc8df3458275478b84340d9245440c595af10c..711a8549f26a96c7f6b85ec9de93a001210ae2b2 100644 (file)
@@ -125,7 +125,7 @@ class Avatar
 
        private static function getFilename(string $url): string
        {
-               $guid = Item::guidFromUri($url, parse_url($url, PHP_URL_HOST));
+               $guid = Item::guidFromUri($url);
 
                return substr($guid, 0, 2) . '/' . substr($guid, 3, 2) . '/' . substr($guid, 5, 3) . '/' .
                        substr($guid, 9, 2) .'/' . substr($guid, 11, 2) . '/' . substr($guid, 13, 4). '/' . substr($guid, 18) . '-';
index 873de08906f26d00d90c638f6e3950917b600295..4a10fd98eab78c321deabe7cf9b480f01a63387c 100644 (file)
@@ -2099,7 +2099,7 @@ class Contact
                if ($static) {
                        $query_params['static'] = true;
                }
-               
+
                return $url . ($guid ?: $cid) . (!empty($query_params) ? '?' . http_build_query($query_params) : '');
        }
 
@@ -2675,7 +2675,7 @@ class Contact
                }
 
                $update = false;
-               $guid = ($ret['guid'] ?? '') ?: Item::guidFromUri($ret['url'], parse_url($ret['url'], PHP_URL_HOST));
+               $guid = ($ret['guid'] ?? '') ?: Item::guidFromUri($ret['url']);
 
                // make sure to not overwrite existing values with blank entries except some technical fields
                $keep = ['batch', 'notify', 'poll', 'request', 'confirm', 'poco', 'baseurl'];
index ff4791a7cca866f23d49b733dae2286c969fa646..8b9909f8bf06699ed71f0ff8a1b8bdbf52d54027 100644 (file)
@@ -2034,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
        {
@@ -2047,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);
        }
 
        /**
index 6ccce24ba7d93d7a6ff4e428da273385216efb87..9469483d9a9749e39d131db34eef27aedb9c9873 100644 (file)
@@ -59,8 +59,7 @@ class Mail
                }
 
                if (empty($msg['guid'])) {
-                       $host = parse_url($msg['from-url'], PHP_URL_HOST);
-                       $msg['guid'] = Item::guidFromUri($msg['uri'], $host);
+                       $msg['guid'] = Item::guidFromUri($msg['uri'], parse_url($msg['from-url'], PHP_URL_HOST));
                }
 
                $msg['created'] = (!empty($msg['created']) ? DateTimeFormat::utc($msg['created']) : DateTimeFormat::utcNow());
index 29b192331609890b03606ee639b48a943c9808eb..dec463820d89507b33891087f711be5bbbcd7f8f 100644 (file)
@@ -625,8 +625,8 @@ class Feed
 
                        $notify = Item::isRemoteSelf($contact, $item);
 
-                       // Distributed items should have a well formatted URI.
-                       // Additionally we have to avoid conflicts with identical URI between imported feeds and these items.
+                       // Distributed items should have a well-formatted URI.
+                       // Additionally, we have to avoid conflicts with identical URI between imported feeds and these items.
                        if ($notify) {
                                $item['guid'] = Item::guidFromUri($orig_plink, DI::baseUrl()->getHostname());
                                $item['uri'] = Item::newURI($item['guid']);