From: Hypolite Petovan Date: Sat, 18 May 2019 15:50:10 +0000 (-0400) Subject: Merge pull request #7153 from annando/ap-mail-delivery X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=fc312e4c98ea51c19f190c72bbb73e70ef8b5ad7;hp=69e38c2bbd0733cb4a262eb39a94ce5588db4b76;p=friendica.git Merge pull request #7153 from annando/ap-mail-delivery Fix receiver list for mails --- diff --git a/config/dbstructure.config.php b/config/dbstructure.config.php index baca2bec63..57e4378376 100755 --- a/config/dbstructure.config.php +++ b/config/dbstructure.config.php @@ -41,8 +41,8 @@ return [ "2fa_recovery_codes" => [ "comment" => "Two-factor authentication recovery codes", "fields" => [ - "uid" => ["type" => "int unsigned", "not null" => "1", "comment" => "User ID"], - "code" => ["type" => "varchar(50)", "not null" => "1", "comment" => "Recovery code string"], + "uid" => ["type" => "mediumint unsigned", "not null" => "1", "primary" => "1", "relation" => ["user" => "uid"], "comment" => "User ID"], + "code" => ["type" => "varchar(50)", "not null" => "1", "primary" => "1", "comment" => "Recovery code string"], "generated" => ["type" => "datetime", "not null" => "1", "comment" => "Datetime the code was generated"], "used" => ["type" => "datetime", "comment" => "Datetime the code was used"], ], diff --git a/src/Protocol/ActivityPub/Processor.php b/src/Protocol/ActivityPub/Processor.php index b6f3486a25..045c48a4c1 100644 --- a/src/Protocol/ActivityPub/Processor.php +++ b/src/Protocol/ActivityPub/Processor.php @@ -64,10 +64,9 @@ class Processor * * @param array $tags * @param boolean $sensitive - * @param array $implicit_mentions List of profile URLs to skip * @return string with tags */ - private static function constructTagString(array $tags, $sensitive) + private static function constructTagString(array $tags = null, $sensitive = false) { if (empty($tags)) { return ''; @@ -174,7 +173,7 @@ class Processor $item['object-type'] = ACTIVITY_OBJ_COMMENT; } - if (($activity['id'] != $activity['reply-to-id']) && !Item::exists(['uri' => $activity['reply-to-id']])) { + if (empty($activity['directmessage']) && ($activity['id'] != $activity['reply-to-id']) && !Item::exists(['uri' => $activity['reply-to-id']])) { Logger::log('Parent ' . $activity['reply-to-id'] . ' not found. Try to refetch it.'); self::fetchMissingActivity($activity['reply-to-id'], $activity); } diff --git a/src/Protocol/ActivityPub/Receiver.php b/src/Protocol/ActivityPub/Receiver.php index 7ae68cd4d1..74d9392752 100644 --- a/src/Protocol/ActivityPub/Receiver.php +++ b/src/Protocol/ActivityPub/Receiver.php @@ -207,7 +207,13 @@ class Receiver return []; } $object_data['object_id'] = $object_id; - $object_data['directmessage'] = JsonLD::fetchElement($activity, 'litepub:directMessage'); + + // Test if it is an answer to a mail + if (DBA::exists('mail', ['uri' => $object_data['reply-to-id']])) { + $object_data['directmessage'] = true; + } else { + $object_data['directmessage'] = JsonLD::fetchElement($activity, 'litepub:directMessage'); + } // We had been able to retrieve the object data - so we can trust the source $trust_source = true; @@ -936,11 +942,6 @@ class Receiver $object_data['receiver'] = self::getReceivers($object, $object_data['actor'], $object_data['tags']); - // Test if it is an answer to a mail - if (DBA::exists('mail', ['uri' => $object_data['reply-to-id']])) { - $object_data['directmessage'] = true; - } - // Common object data: // Unhandled diff --git a/src/Protocol/ActivityPub/Transmitter.php b/src/Protocol/ActivityPub/Transmitter.php index 09c56fa6f8..7fc5e2df06 100644 --- a/src/Protocol/ActivityPub/Transmitter.php +++ b/src/Protocol/ActivityPub/Transmitter.php @@ -647,6 +647,12 @@ class Transmitter $reply = DBA::selectFirst('mail', ['uri'], ['parent-uri' => $mail['parent-uri'], 'reply' => false]); + // Making the post more compatible for Mastodon by: + // - Making it a note and not an article (no title) + // - Moving the title into the "summary" field that is used as a "content warning" + $mail['body'] = '[abstract]' . $mail['title'] . "[/abstract]\n" . $mail['body']; + $mail['title'] = ''; + $mail['author-link'] = $mail['owner-link'] = $mail['from-url']; $mail['allow_cid'] = '<'.$mail['contact-id'].'>'; $mail['allow_gid'] = '';