forked from GNUsocial/gnu-social
Rudimentary support for enclosures and some fiddling
This commit is contained in:
parent
ddda31038e
commit
b1675ff175
@ -354,13 +354,58 @@ class Activity
|
|||||||
// body
|
// body
|
||||||
$activity['body'] = $this->content;
|
$activity['body'] = $this->content;
|
||||||
|
|
||||||
// generator <--- might be useful; might be too much junk
|
// generator <-- We should use this when we know a notice is created
|
||||||
|
// locally
|
||||||
|
|
||||||
// icon <-- should we use this?
|
// icon <-- Should we use this? Maybe a little bubble like we have
|
||||||
|
// on Facebook posts?
|
||||||
|
|
||||||
// object
|
// object
|
||||||
if ($this->verb == ActivityVerb::POST && count($this->objects) == 1) {
|
if ($this->verb == ActivityVerb::POST && count($this->objects) == 1) {
|
||||||
$activity['object'] = $this->objects[0]->asArray();
|
$activity['object'] = $this->objects[0]->asArray();
|
||||||
|
|
||||||
|
// Instead of adding enclosures as an extension to JSON
|
||||||
|
// Activities, it seems like we should be using the
|
||||||
|
// attachedObjects property of ActivityObject
|
||||||
|
|
||||||
|
$attachedObjects = array();
|
||||||
|
|
||||||
|
// XXX: OK, this is kinda cheating. We should probably figure out
|
||||||
|
// what kind of objects these are based on mime-type and then
|
||||||
|
// create specific object types. Right now this rely on
|
||||||
|
// duck-typing. Also, we should include an embed code for
|
||||||
|
// video attachments.
|
||||||
|
|
||||||
|
foreach ($this->enclosures as $enclosure) {
|
||||||
|
|
||||||
|
if (is_string($enclosure)) {
|
||||||
|
|
||||||
|
$attachedObjects[]['id'] = $enclosure;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
$attachedObjects[]['id'] = $enclosure->url;
|
||||||
|
|
||||||
|
$mediaLink = new ActivityStreamsMediaLink(
|
||||||
|
$enclosure->url,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
$enclosure->mimetype
|
||||||
|
// XXX: Add 'size' as an extension to MediaLink?
|
||||||
|
);
|
||||||
|
|
||||||
|
$attachedObjects[]['mediaLink'] = $mediaLink->asArray(); // extension
|
||||||
|
|
||||||
|
if ($enclosure->title) {
|
||||||
|
$attachedObjects[]['displayName'] = $enclosure->title;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!empty($attachedObjects)) {
|
||||||
|
$activity['object']['attachedObjects'] = $attachedObjects;
|
||||||
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
$activity['object'] = array();
|
$activity['object'] = array();
|
||||||
foreach($this->objects as $object) {
|
foreach($this->objects as $object) {
|
||||||
@ -370,7 +415,8 @@ class Activity
|
|||||||
|
|
||||||
$activity['postedTime'] = self::iso8601Date($this->time); // Change to exactly be RFC3339?
|
$activity['postedTime'] = self::iso8601Date($this->time); // Change to exactly be RFC3339?
|
||||||
|
|
||||||
// provider <--- again not sure we should use this
|
// provider <-- We should probably use this for showing the the source
|
||||||
|
// of remote notices, if known
|
||||||
|
|
||||||
// target
|
// target
|
||||||
if (!empty($this->target)) {
|
if (!empty($this->target)) {
|
||||||
@ -380,7 +426,8 @@ class Activity
|
|||||||
// title
|
// title
|
||||||
$activity['title'] = $this->title;
|
$activity['title'] = $this->title;
|
||||||
|
|
||||||
// updatedTime <-- should we use? spec says activity MAY have this
|
// updatedTime <-- Should we use this to indicate the time we received
|
||||||
|
// a remote notice? Probably not.
|
||||||
|
|
||||||
// verb
|
// verb
|
||||||
//
|
//
|
||||||
@ -388,7 +435,12 @@ class Activity
|
|||||||
// relative simple name is easier to parse
|
// relative simple name is easier to parse
|
||||||
$activity['verb'] = substr($this->verb, strrpos($this->verb, '/') + 1);
|
$activity['verb'] = substr($this->verb, strrpos($this->verb, '/') + 1);
|
||||||
|
|
||||||
// TODO: extensions (ActivityContext, OStatus stuff, etc.)
|
/* Purely extensions hereafter */
|
||||||
|
|
||||||
|
if ($this->verb == ActivityVerb::POST) {
|
||||||
|
$activity['noticeInfo'] = $this->noticeInfo;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
return array_filter($activity);
|
return array_filter($activity);
|
||||||
}
|
}
|
||||||
|
@ -645,16 +645,18 @@ class ActivityObject
|
|||||||
{
|
{
|
||||||
$object = array();
|
$object = array();
|
||||||
|
|
||||||
// TODO: attachedObjects
|
// XXX: attachedObjects are added by Activity
|
||||||
|
|
||||||
// displayName
|
// displayName
|
||||||
$object['displayName'] = $this->title;
|
$object['displayName'] = $this->title;
|
||||||
|
|
||||||
|
|
||||||
// TODO: downstreamDuplicates
|
// TODO: downstreamDuplicates
|
||||||
// TODO: embedCode (video)
|
|
||||||
|
// embedCode (used for video)
|
||||||
|
|
||||||
// id
|
// id
|
||||||
|
//
|
||||||
|
// XXX: Should we use URL here? or a crazy tag URI?
|
||||||
$object['id'] = $this->id;
|
$object['id'] = $this->id;
|
||||||
|
|
||||||
if ($this->type == ActivityObject::PERSON
|
if ($this->type == ActivityObject::PERSON
|
||||||
|
@ -207,7 +207,7 @@ class ActivityStreamsLink
|
|||||||
$this->linkDict = array(
|
$this->linkDict = array(
|
||||||
'url' => $url,
|
'url' => $url,
|
||||||
'rel' => $rel, // extension
|
'rel' => $rel, // extension
|
||||||
'media_type' => $mediaType // extension
|
'mediaType' => $mediaType // extension
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user