Add location to notices (closes #44)

This commit is contained in:
Diogo Cordeiro 2018-07-29 02:57:46 +01:00
parent edb3633bcd
commit 20738f48cd
3 changed files with 34 additions and 18 deletions

View File

@ -108,9 +108,10 @@ class apActorLikedAction extends ManagedAction
*/
protected function pretty_fave($fave_object)
{
$res = array("uri" => $fave_object->uri,
"created" => $fave_object->created,
"object" => Activitypub_notice::notice_to_array(Notice::getByID($fave_object->notice_id)));
$res = [
'created' => $fave_object->created,
'object' => Activitypub_notice::notice_to_array(Notice::getByID($fave_object->notice_id))
];
return $res;
}

View File

@ -127,6 +127,11 @@ foreach ($to_profiles as $tp) {
$act->context->attention[ActivityPubPlugin::actor_uri($tp)] = "http://activitystrea.ms/schema/1.0/person";
}
// Add location if that is set
if (isset ($data->object->latitude, $data->object->longitude)) {
$act->context->location = Location::fromLatLon($data->object->latitude, $data->object->longitude);
}
// Reject notice if it is too long (without the HTML)
// This is done after MediaFile::fromUpload etc. just to act the same as the ApiStatusesUpdateAction
if (Notice::contentTooLong($content)) {

View File

@ -71,21 +71,31 @@ class Activitypub_notice extends Managed_DataObject
}
$item = [
'id' => $notice->getUrl(),
'type' => 'Note',
'inReplyTo' => empty($notice->reply_to) ? null : Notice::getById($notice->reply_to)->getUrl(),
'published' => $notice->getCreated(),
'url' => $notice->getUrl(),
'atributedTo' => ActivityPubPlugin::actor_uri($profile),
'to' => $to,
'atomUri' => $notice->getUrl(),
'inReplyToAtomUri' => empty($notice->reply_to) ? null : Notice::getById($notice->reply_to)->getUrl(),
'conversation' => $notice->getConversationUrl(),
'content' => $notice->getContent(),
'is_local' => $notice->isLocal(),
'attachment' => $attachments,
'tag' => $tags
];
'context' => 'https://www.w3.org/ns/activitystreams',
'id' => $notice->getUrl(),
'type' => 'Note',
'inReplyTo' => empty($notice->reply_to) ? null : Notice::getById($notice->reply_to)->getUrl(),
'published' => $notice->getCreated(),
'url' => $notice->getUrl(),
'atributedTo' => ActivityPubPlugin::actor_uri($profile),
'to' => $to,
'atomUri' => $notice->getUrl(),
'inReplyToAtomUri' => empty($notice->reply_to) ? null : Notice::getById($notice->reply_to)->getUrl(),
'conversation' => $notice->getConversationUrl(),
'content' => $notice->getContent(),
'is_local' => $notice->isLocal(),
'attachment' => $attachments,
'tag' => $tags
];
// Do we have a location for this notice?
try {
$location = Notice_location::locFromStored($notice);
$item['latitude'] = $location->lat;
$item['longitude'] = $location->lon;
} catch (Exception $ex) {
// Apparently no.
}
return $item;
}