X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FProtocol%2FActivityPub%2FReceiver.php;h=6797330442ab5b91bf1dc50e2b07dda97c7ac672;hb=8720561e49d2d5889fa4f4fd611efc790258ad1c;hp=0894ffc453c1b2e0bc70b25ac09d9cd762425b4c;hpb=61abc6377de478fdf4f7a71251ea90bbcff8d7b1;p=friendica.git diff --git a/src/Protocol/ActivityPub/Receiver.php b/src/Protocol/ActivityPub/Receiver.php index 0894ffc453..6797330442 100644 --- a/src/Protocol/ActivityPub/Receiver.php +++ b/src/Protocol/ActivityPub/Receiver.php @@ -385,7 +385,7 @@ class Receiver } else { $object_data['directmessage'] = JsonLD::fetchElement($activity, 'litepub:directMessage'); } - } elseif (in_array($type, array_merge(self::ACTIVITY_TYPES, ['as:Follow', 'litepub:EmojiReact'])) && in_array($object_type, self::CONTENT_TYPES)) { + } elseif (in_array($type, array_merge(self::ACTIVITY_TYPES, ['as:Follow', 'litepub:EmojiReact', 'as:View'])) && in_array($object_type, self::CONTENT_TYPES)) { // Create a mostly empty array out of the activity data (instead of the object). // This way we later don't have to check for the existence of each individual array element. $object_data = self::processObject($activity); @@ -670,8 +670,7 @@ class Receiver case 'as:Block': if (in_array($object_data['object_type'], self::ACCOUNT_TYPES)) { - // Used by Mastodon to announce that the sender has blocked the account - self::storeUnhandledActivity(false, $type, $object_data, $activity, $body, $uid, $trust_source, $push, $signer); + ActivityPub\Processor::blockAccount($object_data); } else { self::storeUnhandledActivity(true, $type, $object_data, $activity, $body, $uid, $trust_source, $push, $signer); } @@ -728,6 +727,9 @@ class Receiver } elseif (($object_data['object_type'] == 'as:Accept') && in_array($object_data['object_object_type'], self::ACCOUNT_TYPES)) { ActivityPub\Processor::rejectFollowUser($object_data); + } elseif (($object_data['object_type'] == 'as:Block') && + in_array($object_data['object_object_type'], self::ACCOUNT_TYPES)) { + ActivityPub\Processor::unblockAccount($object_data); } elseif (in_array($object_data['object_type'], array_merge(self::ACTIVITY_TYPES, ['as:Announce'])) && in_array($object_data['object_object_type'], array_merge(['as:Tombstone'], self::CONTENT_TYPES))) { ActivityPub\Processor::undoActivity($object_data); @@ -743,8 +745,10 @@ class Receiver break; case 'as:View': - if (in_array($object_data['object_type'], ['as:Note', 'as:Video'])) { - // Unhandled Peertube activity + if (in_array($object_data['object_type'], self::CONTENT_TYPES)) { + ActivityPub\Processor::createActivity($object_data, Activity::VIEW); + } elseif ($object_data['object_type'] == '') { + // The object type couldn't be determined. Most likely we don't have it here. We ignore this activity. } else { self::storeUnhandledActivity(true, $type, $object_data, $activity, $body, $uid, $trust_source, $push, $signer); } @@ -798,7 +802,7 @@ class Receiver } $tempfile = tempnam(System::getTempPath(), $file); - file_put_contents($tempfile, json_encode(['activity' => $activity, 'body' => $body, 'uid' => $uid, 'trust_source' => $trust_source, 'push' => $push, 'signer' => $signer, 'object_data' => $object_data], JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE)); + file_put_contents($tempfile, json_encode(['activity' => $activity, 'body' => $body, 'uid' => $uid, 'trust_source' => $trust_source, 'push' => $push, 'signer' => $signer, 'object_data' => $object_data], JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT)); Logger::notice('Unknown activity stored', ['type' => $type, 'object_type' => $object_data['object_type'], $object_data['object_object_type'] ?? '', 'file' => $tempfile]); }