]> git.mxchange.org Git - friendica.git/blobdiff - src/Protocol/ActivityPub/Receiver.php
Merge branch 'stable' into develop
[friendica.git] / src / Protocol / ActivityPub / Receiver.php
index 558406ddc7d474c890cea3da358cfecdced3f7c0..7c753f18860f43a94e2b92186dfbdab8d2a213c8 100644 (file)
@@ -111,9 +111,12 @@ class Receiver
                }
 
                $http_signer = HTTPSignature::getSigner($body, $header);
-               if (empty($http_signer)) {
+               if ($http_signer === false) {
                        Logger::warning('Invalid HTTP signature, message will be discarded.');
                        return;
+               } elseif (empty($http_signer)) {
+                       Logger::info('Signer is a tombstone. The message will be discarded, the signer account is deleted.');
+                       return;
                } else {
                        Logger::info('Valid HTTP signature', ['signer' => $http_signer]);
                }
@@ -660,13 +663,14 @@ class Receiver
                }
 
                if (!empty($actor)) {
-                       $profile = APContact::getByURL($actor);
+                       $profile   = APContact::getByURL($actor);
                        $followers = $profile['followers'] ?? '';
-
-                       Logger::log('Actor: ' . $actor . ' - Followers: ' . $followers, Logger::DEBUG);
+                       $is_forum  = ($actor['type'] ?? '') == 'Group';
+                       Logger::info('Got actor and followers', ['actor' => $actor, 'followers' => $followers]);
                } else {
                        Logger::info('Empty actor', ['activity' => $activity]);
                        $followers = '';
+                       $is_forum  = false;
                }
 
                // We have to prevent false follower assumptions upon thread completions
@@ -689,7 +693,7 @@ class Receiver
                                }
 
                                // Fetch the receivers for the public and the followers collection
-                               if (in_array($receiver, [$followers, self::PUBLIC_COLLECTION]) && !empty($actor)) {
+                               if ((($receiver == $followers) || (($receiver == self::PUBLIC_COLLECTION) && !$is_forum)) && !empty($actor)) {
                                        $receivers = self::getReceiverForActor($actor, $tags, $receivers, $follower_target);
                                        continue;
                                }
@@ -1108,14 +1112,6 @@ class Receiver
                                                'image' => $pageImage,
                                        ];
                                        break;
-                               case 'as:Link':
-                                       $attachlist[] = [
-                                               'type' => str_replace('as:', '', JsonLD::fetchElement($attachment, '@type')),
-                                               'mediaType' => JsonLD::fetchElement($attachment, 'as:mediaType', '@value'),
-                                               'name' => JsonLD::fetchElement($attachment, 'as:name', '@value'),
-                                               'url' => JsonLD::fetchElement($attachment, 'as:href', '@id')
-                                       ];
-                                       break;
                                case 'as:Image':
                                        $mediaType = JsonLD::fetchElement($attachment, 'as:mediaType', '@value');
                                        $imageFullUrl = JsonLD::fetchElement($attachment, 'as:url', '@id');
@@ -1177,7 +1173,10 @@ class Receiver
                                                'type' => str_replace('as:', '', JsonLD::fetchElement($attachment, '@type')),
                                                'mediaType' => JsonLD::fetchElement($attachment, 'as:mediaType', '@value'),
                                                'name' => JsonLD::fetchElement($attachment, 'as:name', '@value'),
-                                               'url' => JsonLD::fetchElement($attachment, 'as:url', '@id')
+                                               'url' => JsonLD::fetchElement($attachment, 'as:url', '@id'),
+                                               'height' => JsonLD::fetchElement($attachment, 'as:height', '@value'),
+                                               'width' => JsonLD::fetchElement($attachment, 'as:width', '@value'),
+                                               'image' => JsonLD::fetchElement($attachment, 'as:image', '@id')
                                        ];
                        }
                }