[ActivityPub][NOTICE] Process attachments
This commit is contained in:
parent
4c92cc967b
commit
33721c85cd
|
@ -97,7 +97,7 @@ class ActivityPubPlugin extends Plugin
|
||||||
// Look for a local notice (unfortunately GNU social doesn't
|
// Look for a local notice (unfortunately GNU social doesn't
|
||||||
// provide this functionality natively)
|
// provide this functionality natively)
|
||||||
try {
|
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
|
if (common_local_url('apNotice', ['id' => $candidate->getID()]) === $url) { // Sanity check
|
||||||
return $candidate;
|
return $candidate;
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -211,6 +211,23 @@ class Activitypub_notice
|
||||||
throw new Exception('That\'s too long. Maximum notice size is %d character.');
|
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 = new ActivityObject();
|
||||||
$actobj->type = ActivityObject::NOTE;
|
$actobj->type = ActivityObject::NOTE;
|
||||||
$actobj->content = strip_tags($content, '<p><b><i><u><a><ul><ol><li>');
|
$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);
|
$note = Notice::saveActivity($act, $actor_profile, $options);
|
||||||
|
|
||||||
|
// Attachments (last part)
|
||||||
|
foreach($attachments as $attachment) {
|
||||||
|
$attachment->attachToNotice($note);
|
||||||
|
}
|
||||||
|
|
||||||
return $note;
|
return $note;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user