X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FProtocol%2FActivityPub%2FReceiver.php;h=4504cee4c49367b7e587d0b2d767ba21a0e55aff;hb=3d8e82d95d9cc76b45a8db301b22c4111f335e1c;hp=f094833060255c7acb9fe85d7df1f00eb52b82d5;hpb=1e305e748d0bb88a0da0b0d54c8f9d02f0117de2;p=friendica.git diff --git a/src/Protocol/ActivityPub/Receiver.php b/src/Protocol/ActivityPub/Receiver.php index f094833060..4504cee4c4 100644 --- a/src/Protocol/ActivityPub/Receiver.php +++ b/src/Protocol/ActivityPub/Receiver.php @@ -1,6 +1,6 @@ $object_data['object_id'], 'type' => $type, 'signer' => $signer, 'actor' => $actor, 'attributedTo' => $attributed_to]); return; @@ -617,7 +635,7 @@ class Receiver break; default: - Logger::log('Unknown activity: ' . $type . ' ' . $object_data['object_type'], Logger::DEBUG); + Logger::info('Unknown activity: ' . $type . ' ' . $object_data['object_type']); break; } } @@ -932,16 +950,16 @@ class Receiver $data = ActivityPub::fetchContent($object_id, $uid); if (!empty($data)) { $object = JsonLD::compact($data); - Logger::log('Fetched content for ' . $object_id, Logger::DEBUG); + Logger::info('Fetched content for ' . $object_id); } else { - Logger::log('Empty content for ' . $object_id . ', check if content is available locally.', Logger::DEBUG); + Logger::info('Empty content for ' . $object_id . ', check if content is available locally.'); $item = Post::selectFirst(Item::DELIVER_FIELDLIST, ['uri' => $object_id]); if (!DBA::isResult($item)) { - Logger::log('Object with url ' . $object_id . ' was not found locally.', Logger::DEBUG); + Logger::info('Object with url ' . $object_id . ' was not found locally.'); return false; } - Logger::log('Using already stored item for url ' . $object_id, Logger::DEBUG); + Logger::info('Using already stored item for url ' . $object_id); $data = ActivityPub\Transmitter::createNote($item); $object = JsonLD::compact($data); } @@ -957,7 +975,7 @@ class Receiver return false; } } else { - Logger::log('Using original object for url ' . $object_id, Logger::DEBUG); + Logger::info('Using original object for url ' . $object_id); } $type = JsonLD::fetchElement($object, '@type'); @@ -966,6 +984,18 @@ class Receiver return false; } + // Lemmy is resharing "create" activities instead of content + // We fetch the content from the activity. + if (in_array($type, ['as:Create'])) { + $object = $object['as:object']; + $type = JsonLD::fetchElement($object, '@type'); + if (empty($type)) { + Logger::info('Empty type'); + return false; + } + $object_data = self::processObject($object); + } + // We currently don't handle 'pt:CacheFile', but with this step we avoid logging if (in_array($type, self::CONTENT_TYPES) || ($type == 'pt:CacheFile')) { $object_data = self::processObject($object); @@ -984,7 +1014,7 @@ class Receiver return self::fetchObject($object_id, [], false, $uid); } - Logger::log('Unhandled object type: ' . $type, Logger::DEBUG); + Logger::info('Unhandled object type: ' . $type); return false; } @@ -1340,6 +1370,14 @@ class Receiver // An empty "id" field is translated to "./" by the compactor, so we have to check for this content if (empty($object_data['reply-to-id']) || ($object_data['reply-to-id'] == './')) { $object_data['reply-to-id'] = $object_data['id']; + + // On activities the "reply to" is the id of the object it refers to + if (in_array($object_data['object_type'], self::ACTIVITY_TYPES)) { + $object_id = JsonLD::fetchElement($object, 'as:object', '@id'); + if (!empty($object_id)) { + $object_data['reply-to-id'] = $object_id; + } + } } else { // Some systems (e.g. GNU Social) don't reply to the "id" field but the "uri" field. $replyToId = Item::getURIByLink($object_data['reply-to-id']); @@ -1389,7 +1427,6 @@ class Receiver $object_data = self::getSource($object, $object_data); $object_data['start-time'] = JsonLD::fetchElement($object, 'as:startTime', '@value'); $object_data['end-time'] = JsonLD::fetchElement($object, 'as:endTime', '@value'); - $object_data['adjust'] = JsonLD::fetchElement($object, 'dfrn:adjust', '@value'); $object_data['location'] = $location; $object_data['latitude'] = JsonLD::fetchElement($object, 'as:location', 'as:latitude', '@type', 'as:Place'); $object_data['latitude'] = JsonLD::fetchElement($object_data, 'latitude', '@value');