]> git.mxchange.org Git - friendica.git/blobdiff - src/Protocol/ActivityPub/Receiver.php
Logging for an exception when processing activities
[friendica.git] / src / Protocol / ActivityPub / Receiver.php
index 204e631c9bf01196f81542d6cc7d986edfcf623d..db4196abc4a5e85de0b3b00253e0b8f885c224b8 100644 (file)
@@ -396,15 +396,22 @@ class Receiver
 
                // Fetch the activity on Lemmy "Announce" messages (announces of activities)
                if (($type == 'as:Announce') && in_array($object_type, array_merge(self::ACTIVITY_TYPES, ['as:Delete', 'as:Undo', 'as:Update']))) {
-                       Logger::debug('Fetch announced activity', ['object' => $object_id]);
+                       Logger::debug('Fetch announced activity', ['object' => $object_id, 'uid' => $fetch_uid]);
                        $data = Processor::fetchCachedActivity($object_id, $fetch_uid);
                        if (!empty($data)) {
                                $type = $object_type;
-                               $activity = JsonLD::compact($data);
+                               $announced_activity = JsonLD::compact($data);
 
                                // Some variables need to be refetched since the activity changed
-                               $actor = JsonLD::fetchElement($activity, 'as:actor', '@id');
-                               $object_id = JsonLD::fetchElement($activity, 'as:object', '@id');
+                               $actor = JsonLD::fetchElement($announced_activity, 'as:actor', '@id');
+                               $announced_id = JsonLD::fetchElement($announced_activity, 'as:object', '@id');
+                               if (empty($announced_id)) {
+                                       Logger::warning('No object id in announced activity', ['id' => $object_id, 'activity' => $activity, 'announced' => $announced_activity]);
+                                       return [];
+                               } else {
+                                       $activity  = $announced_activity;
+                                       $object_id = $announced_id;
+                               }
                                $object_type = self::fetchObjectType($activity, $object_id, $fetch_uid);
                        }
                }
@@ -1169,7 +1176,7 @@ class Receiver
                                                case 'as:audience':
                                                        $type = self::TARGET_AUDIENCE;
                                                        break;
-                                               }
+                                       }
 
                                        $receivers[$contact['uid']] = ['uid' => $contact['uid'], 'type' => $type];
                                }