diff --git a/plugins/ActivityPub/ActivityPubPlugin.php b/plugins/ActivityPub/ActivityPubPlugin.php index 6ab6289e9f..2939a3a0c3 100644 --- a/plugins/ActivityPub/ActivityPubPlugin.php +++ b/plugins/ActivityPub/ActivityPubPlugin.php @@ -97,7 +97,7 @@ class ActivityPubPlugin extends Plugin // Look for a local notice (unfortunately GNU social doesn't // provide this functionality natively) try { - $candidate = Notice::getByID(intval(substr($url, (strlen(common_local_url('apNotice', ['id' => 0]))-1)))); + $candidate = Notice::getByID((int)substr($url, (strlen(common_local_url('apNotice', ['id' => 0]))-1))); if (common_local_url('apNotice', ['id' => $candidate->getID()]) === $url) { // Sanity check return $candidate; } else { diff --git a/plugins/ActivityPub/lib/models/Activitypub_notice.php b/plugins/ActivityPub/lib/models/Activitypub_notice.php index 33b2e263a7..92c28bffec 100644 --- a/plugins/ActivityPub/lib/models/Activitypub_notice.php +++ b/plugins/ActivityPub/lib/models/Activitypub_notice.php @@ -211,6 +211,23 @@ class Activitypub_notice throw new Exception('That\'s too long. Maximum notice size is %d character.'); }*/ + // Attachments (first part) + $attachments = []; + if (isset($object['attachment']) && is_array($object['attachment'])) { + foreach ($object['attachment'] as $attachment) { + if (array_key_exists('type', $attachment) && $attachment['type'] == 'Document') { + try { + // throws exception on failure + $attachment = MediaFile::fromUrl($attachment['url'], $actor_profile, $attachment['name']); + $act->enclosures[] = $attachment->getEnclosure(); + $attachments[] = $attachment; + } catch (Exception $e) { + // Whatever. + } + } + } + } + $actobj = new ActivityObject(); $actobj->type = ActivityObject::NOTE; $actobj->content = strip_tags($content, '