]> git.mxchange.org Git - friendica.git/commitdiff
Reworked contact-id generation
authorMichael <heluecht@pirati.ca>
Tue, 30 Jul 2019 22:02:32 +0000 (22:02 +0000)
committerMichael <heluecht@pirati.ca>
Tue, 30 Jul 2019 22:02:32 +0000 (22:02 +0000)
src/Model/Item.php
src/Protocol/ActivityPub/Processor.php

index 28f7b436d9e6ce401acfeaf67e79b0f0c309e246..fdccb37844d6311a4d23dc051a9cb9e0122b1d53 100644 (file)
@@ -1234,35 +1234,18 @@ class Item extends BaseObject
 
        private static function contactId($item)
        {
-               $contact_id = (int)$item["contact-id"];
-
-               if (!empty($contact_id)) {
-                       return $contact_id;
-               }
-               Logger::log('Missing contact-id. Called by: '.System::callstack(), Logger::DEBUG);
-               /*
-                * First we are looking for a suitable contact that matches with the author of the post
-                * This is done only for comments
-                */
-               if ($item['parent-uri'] != $item['uri']) {
+               if (!empty($item['uid']) && !Contact::isSharing($item['author-id'], $item['uid'])) {
+                       return $item['author-id'];
+               } elseif (!empty($item['contact-id'])) {
+                       return $item['contact-id'];
+               } else {
                        $contact_id = Contact::getIdForURL($item['author-link'], $item['uid']);
-               }
-
-               // If not present then maybe the owner was found
-               if ($contact_id == 0) {
-                       $contact_id = Contact::getIdForURL($item['owner-link'], $item['uid']);
-               }
-
-               // Still missing? Then use the "self" contact of the current user
-               if ($contact_id == 0) {
-                       $self = DBA::selectFirst('contact', ['id'], ['self' => true, 'uid' => $item['uid']]);
-                       if (DBA::isResult($self)) {
-                               $contact_id = $self["id"];
+                       if (!empty($contact_id)) {
+                               return $contact_id;
                        }
                }
-               Logger::log("Contact-id was missing for post ".$item['guid']." from user id ".$item['uid']." - now set to ".$contact_id, Logger::DEBUG);
 
-               return $contact_id;
+               return $item['author-id'];
        }
 
        // This function will finally cover most of the preparation functionality in mod/item.php
@@ -1465,9 +1448,6 @@ class Item extends BaseObject
 
                $item['plink'] = defaults($item, 'plink', System::baseUrl() . '/display/' . urlencode($item['guid']));
 
-               // The contact-id should be set before "self::insert" was called - but there seems to be issues sometimes
-               $item["contact-id"] = self::contactId($item);
-
                $default = ['url' => $item['author-link'], 'name' => $item['author-name'],
                        'photo' => $item['author-avatar'], 'network' => $item['network']];
 
@@ -1523,6 +1503,9 @@ class Item extends BaseObject
                unset($item['causer-id']);
                unset($item['causer-link']);
 
+               // The contact-id should be set before "self::insert" was called - but there seems to be issues sometimes
+               $item['contact-id'] = self::contactId($item);
+
                if ($item['network'] == Protocol::PHANTOM) {
                        $item['network'] = Protocol::DFRN;
                        Logger::notice('Missing network, setting to {network}.', [
index 7639d0f2a325d97ee6dc3ea6a9f2fb48a4f0d6b4..65dd6d3e627e98d32978651a650c3f4c98d02681 100644 (file)
@@ -419,8 +419,8 @@ class Processor
                                $item['contact-id'] = Contact::getIdForURL($activity['author'], $receiver, true);
                        }
 
-                       if (($receiver != 0) && empty($item['contact-id'])) {
-                               $item['contact-id'] = Contact::getIdForURL($activity['author'], 0, true);
+                       if (empty($item['contact-id'])) {
+                               $item['contact-id'] = $item['author-id'];
                        }
 
                        if (!empty($activity['directmessage'])) {