From 8ddcd8417da0a765abf89433bb30acb0477a72ea Mon Sep 17 00:00:00 2001 From: Michael Date: Tue, 30 Jul 2019 22:02:32 +0000 Subject: [PATCH] Reworked contact-id generation --- src/Model/Item.php | 39 ++++++++------------------ src/Protocol/ActivityPub/Processor.php | 4 +-- 2 files changed, 13 insertions(+), 30 deletions(-) diff --git a/src/Model/Item.php b/src/Model/Item.php index 28f7b436d9..fdccb37844 100644 --- a/src/Model/Item.php +++ b/src/Model/Item.php @@ -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}.', [ diff --git a/src/Protocol/ActivityPub/Processor.php b/src/Protocol/ActivityPub/Processor.php index 7639d0f2a3..65dd6d3e62 100644 --- a/src/Protocol/ActivityPub/Processor.php +++ b/src/Protocol/ActivityPub/Processor.php @@ -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'])) { -- 2.39.5