]> git.mxchange.org Git - friendica.git/blobdiff - src/Model/Contact.php
Merge pull request #10478 from annando/notice
[friendica.git] / src / Model / Contact.php
index 39553ea9b3f3bad49b88e5646e15711e082b32a6..0184861c3c2d8403750bb075d5c69a03781cd43c 100644 (file)
@@ -185,11 +185,7 @@ class Contact
                        $fields['gsid'] = GServer::getID($fields['baseurl'], true);
                }
 
-               if (!empty($fields['url']) && !empty($fields['guid'])) {
-                       $fields['uri-id'] = ItemURI::insert(['uri' => $fields['url'], 'guid' => $fields['guid']]);
-               } elseif (!empty($fields['url'])) {
-                       $fields['uri-id'] = ItemURI::getIdByURI($fields['url']);
-               }
+               $fields['uri-id'] = ItemURI::getIdByURI($fields['url']);
 
                if (empty($fields['created'])) {
                        $fields['created'] = DateTimeFormat::utcNow();
@@ -1076,12 +1072,12 @@ class Contact
                        return 0;
                }
 
-               $contact = self::getByURL($url, false, ['id', 'network'], $uid);
+               $contact = self::getByURL($url, false, ['id', 'network', 'uri-id'], $uid);
 
                if (!empty($contact)) {
                        $contact_id = $contact["id"];
 
-                       if (empty($update)) {
+                       if (empty($update) && (!empty($contact['uri-id']) || is_bool($update))) {
                                Logger::debug('Contact found', ['url' => $url, 'uid' => $uid, 'update' => $update, 'cid' => $contact_id]);
                                return $contact_id;
                        }
@@ -2028,7 +2024,7 @@ class Contact
                // 'xmpp', 'sensitive'
 
                $fields = ['uid', 'uri-id', 'avatar', 'header', 'name', 'nick', 'location', 'keywords', 'about', 'subscribe',
-                       'manually-approve', 'unsearchable', 'url', 'guid', 'addr', 'batch', 'notify', 'poll', 'request', 'confirm', 'poco',
+                       'manually-approve', 'unsearchable', 'url', 'addr', 'batch', 'notify', 'poll', 'request', 'confirm', 'poco',
                        'network', 'alias', 'baseurl', 'gsid', 'forum', 'prv', 'contact-type', 'pubkey', 'last-item'];
                $contact = DBA::selectFirst('contact', $fields, ['id' => $id]);
                if (!DBA::isResult($contact)) {
@@ -2112,6 +2108,7 @@ class Contact
                }
 
                $update = false;
+               $guid = $ret['guid'] ?? '';
 
                // make sure to not overwrite existing values with blank entries except some technical fields
                $keep = ['batch', 'notify', 'poll', 'request', 'confirm', 'poco', 'baseurl'];
@@ -2157,10 +2154,10 @@ class Contact
                        return true;
                }
 
-               if (empty($ret['guid'])) {
+               if (empty($guid)) {
                        $ret['uri-id'] = ItemURI::getIdByURI($ret['url']);
                } else {
-                       $ret['uri-id']  = ItemURI::insert(['uri' => $ret['uri'], 'guid' => $ret['guid']]);
+                       $ret['uri-id'] = ItemURI::insert(['uri' => $ret['url'], 'guid' => $guid]);
                }
 
                $ret['nurl']    = Strings::normaliseLink($ret['url']);