diff --git a/src/Model/Item.php b/src/Model/Item.php index 0c48c95291..3e0faddf75 100644 --- a/src/Model/Item.php +++ b/src/Model/Item.php @@ -1061,13 +1061,7 @@ class Item // Create Diaspora signature if ($item['origin'] && empty($item['diaspora_signed_text']) && ($item['gravity'] != GRAVITY_PARENT)) { - if ($uid == 0) { - $sender_contact = Contact::getById($item['contact-id'], ['uid']); - $sender_uid = $sender_contact['uid']; - } else { - $sender_uid = $uid; - } - $signed = Diaspora::createCommentSignature($sender_uid, $item); + $signed = Diaspora::createCommentSignature($item); if (!empty($signed)) { $item['diaspora_signed_text'] = json_encode($signed); } diff --git a/src/Protocol/Diaspora.php b/src/Protocol/Diaspora.php index 53140521d0..2c3e9add63 100644 --- a/src/Protocol/Diaspora.php +++ b/src/Protocol/Diaspora.php @@ -4044,14 +4044,25 @@ class Diaspora /** * Creates the signature for Comments that are created on our system * - * @param integer $uid The user of that comment * @param array $item Item array * * @return array Signed content * @throws \Exception */ - public static function createCommentSignature($uid, array $item) + public static function createCommentSignature(array $item) { + $contact = Contact::getById($item['author-id'], ['url']); + if (empty($contact['url'])) { + Logger::warning('Author Contact not found', ['author-id' => $item['author-id']]); + return false; + } + + $uid = User::getIdForURL($contact['url']); + if (empty($uid)) { + Logger::info('No owner post, so not storing signature', ['url' => $contact['url']]); + return false; + } + $owner = User::getOwnerDataById($uid); if (empty($owner)) { Logger::info('No owner post, so not storing signature');