forked from GNUsocial/gnu-social
[ActivityPub][NOTICE] Process attachments
This commit is contained in:
parent
7a2bb38331
commit
849ad494d8
@ -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 {
|
||||
|
@ -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, '<p><b><i><u><a><ul><ol><li>');
|
||||
@ -220,6 +237,11 @@ class Activitypub_notice
|
||||
|
||||
$note = Notice::saveActivity($act, $actor_profile, $options);
|
||||
|
||||
// Attachments (last part)
|
||||
foreach($attachments as $attachment) {
|
||||
$attachment->attachToNotice($note);
|
||||
}
|
||||
|
||||
return $note;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user