]> git.mxchange.org Git - friendica.git/blobdiff - src/Protocol/ActivityPub/Receiver.php
Collect data about used protocols for delivery
[friendica.git] / src / Protocol / ActivityPub / Receiver.php
index 735e412fdebf94c5c660a8e9e53064258afb5e63..1d425600d81b76ded4dda6f4819c1690e60e2751 100644 (file)
@@ -194,6 +194,11 @@ class Receiver
                        return [];
                }
 
+               if (!is_string($object_id)) {
+                       Logger::info('Invalid object id', ['object' => $object_id]);
+                       return [];
+               }
+
                $object_type = self::fetchObjectType($activity, $object_id, $uid);
 
                // Fetch the content only on activities where this matters
@@ -217,8 +222,7 @@ class Receiver
 
                        // We had been able to retrieve the object data - so we can trust the source
                        $trust_source = true;
-               } elseif (in_array($type, ['as:Like', 'as:Dislike']) ||
-                       (($type == 'as:Follow') && in_array($object_type, self::CONTENT_TYPES))) {
+               } elseif (in_array($type, array_merge(self::ACTIVITY_TYPES, ['as:Follow'])) && 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 ech individual array element.
                        $object_data = self::processObject($activity);
@@ -779,7 +783,7 @@ class Receiver
 
                if ($type == 'as:Announce') {
                        $object_id = JsonLD::fetchElement($object, 'object', '@id');
-                       if (empty($object_id)) {
+                       if (empty($object_id) || !is_string($object_id)) {
                                return false;
                        }
                        return self::fetchObject($object_id, [], false, $uid);