diff --git a/src/Protocol/Diaspora.php b/src/Protocol/Diaspora.php index 9e80c13028..1bfe1ca652 100644 --- a/src/Protocol/Diaspora.php +++ b/src/Protocol/Diaspora.php @@ -4133,6 +4133,17 @@ class Diaspora return false; } + $parent_post = Post::selectFirstPost(['gravity', 'signed_text', 'author-link'], ['uri-id' => $item['thr-parent-id']]); + if (empty(FContact::getByURL($parent_post['author-link'], false))) { + Logger::info('Parent author is no Diaspora contact. A signature will not be created.', ['uri-id' => $item['uri-id'], 'guid' => $item['guid']]); + return false; + } + + if (($parent_post['gravity'] == GRAVITY_COMMENT) && empty($parent_post['signed_text'])) { + Logger::info('Parent comment has got no Diaspora signature. A signature will not be created.', ['uri-id' => $item['uri-id'], 'guid' => $item['guid']]); + return false; + } + $message = self::constructComment($item, $owner); if ($message === false) { return false; diff --git a/src/Worker/Notifier.php b/src/Worker/Notifier.php index 3b4e1478c0..7d3d3d6b7c 100644 --- a/src/Worker/Notifier.php +++ b/src/Worker/Notifier.php @@ -191,6 +191,10 @@ class Notifier // when the original comment author does support the Diaspora protocol. if ($thr_parent['author-link'] && $target_item['parent-uri'] != $target_item['thr-parent']) { $diaspora_delivery = Diaspora::isSupportedByContactUrl($thr_parent['author-link']); + if ($diaspora_delivery && empty($target_item['signed_text'])) { + Logger::debug('Post has got no Diaspora signature, so there will be no Diaspora delivery', ['guid' => $target_item['guid'], 'uri-id' => $target_item['uri-id']]); + $diaspora_delivery = false; + } Logger::info('Threaded comment', ['diaspora_delivery' => (int)$diaspora_delivery]); }