]> git.mxchange.org Git - friendica.git/commitdiff
Preparation for being able to fetch AP posts by proving the URL
authorMichael <heluecht@pirati.ca>
Wed, 17 Jul 2019 19:36:32 +0000 (19:36 +0000)
committerMichael <heluecht@pirati.ca>
Wed, 17 Jul 2019 19:36:32 +0000 (19:36 +0000)
src/Protocol/ActivityPub/Processor.php

index f2aae6af2d352547f0d9b58e5425bdc560fb7c1d..bdf2e63f2e9b1c729a7a49af4daa6ae5cc61d667 100644 (file)
@@ -522,13 +522,17 @@ class Processor
         * @param $child
         * @throws \Friendica\Network\HTTPException\InternalServerErrorException
         */
-       private static function fetchMissingActivity($url, $child)
+       public static function fetchMissingActivity($url, $child = [])
        {
                if (Config::get('system', 'ostatus_full_threads')) {
                        return;
                }
 
-               $uid = ActivityPub\Receiver::getFirstUserFromReceivers($child['receiver']);
+               if (!empty($child['receiver'])) {
+                       $uid = ActivityPub\Receiver::getFirstUserFromReceivers($child['receiver']);
+               } else {
+                       $uid = 0;
+               }
 
                $object = ActivityPub::fetchContent($url, $uid);
                if (empty($object)) {
@@ -541,15 +545,34 @@ class Processor
                        return;
                }
 
+               if (!empty($child['author'])) {
+                       $actor = $child['author'];
+               } elseif (!empty($object['actor'])) {
+                       $actor = $object['actor'];
+               } elseif (!empty($object['attributedTo'])) {
+                       $actor = $object['attributedTo'];
+               } else {
+                       // Shouldn't happen
+                       $actor = '';
+               }
+
+               if (!empty($object['published'])) {
+                       $published = $object['published'];
+               } elseif (!empty($child['published'])) {
+                       $published = $child['published'];
+               } else {
+                       $published = DateTimeFormat::utcNow();
+               }
+
                $activity = [];
                $activity['@context'] = $object['@context'];
                unset($object['@context']);
                $activity['id'] = $object['id'];
                $activity['to'] = defaults($object, 'to', []);
                $activity['cc'] = defaults($object, 'cc', []);
-               $activity['actor'] = $child['author'];
+               $activity['actor'] = $actor;
                $activity['object'] = $object;
-               $activity['published'] = defaults($object, 'published', $child['published']);
+               $activity['published'] = $published;
                $activity['type'] = 'Create';
 
                $ldactivity = JsonLD::compact($activity);