From a199192ebf67a8c2b961bab540918d8e19e8e47e Mon Sep 17 00:00:00 2001 From: Zach Copley Date: Wed, 16 Feb 2011 18:55:13 -0800 Subject: [PATCH 1/1] Add avatars and notice info --- lib/activity.php | 10 +++++--- lib/activityobject.php | 40 ++++++++++++++++++++---------- lib/activitystreamjsondocument.php | 9 ++++--- 3 files changed, 39 insertions(+), 20 deletions(-) diff --git a/lib/activity.php b/lib/activity.php index 6b3b121087..b9bd8c31fe 100644 --- a/lib/activity.php +++ b/lib/activity.php @@ -437,10 +437,14 @@ class Activity /* Purely extensions hereafter */ - if ($this->verb == ActivityVerb::POST) { - $activity['noticeInfo'] = $this->noticeInfo; - } + // XXX: a bit of a hack... Since JSON isn't namespaced we probably + // shouldn't be using 'statusnet:notice_info', but this will work + // for the moment. + foreach ($this->extra as $e) { + list($objectName, $props, $txt) = $e; + $activity[$objectName] = $props; + } return array_filter($activity); } diff --git a/lib/activityobject.php b/lib/activityobject.php index d6356ed6fb..0df9999454 100644 --- a/lib/activityobject.php +++ b/lib/activityobject.php @@ -663,24 +663,33 @@ class ActivityObject || $this->type == ActivityObject::GROUP) { // XXX: Not sure what the best avatar is to use for the - // author's "image". For now, I'm using the stream size - // one, but possibly it should be large - $avatarLink = null; + // author's "image". For now, I'm using the large size. + + $avatarLarge = null; + $avatarMediaLinks = array(); foreach ($this->avatarLinks as $a) { - if ($a->height == AVATAR_STREAM_SIZE) { - $avatarLink = $a; - break; + + // Make a MediaLink for every other Avatar + $avatar = new ActivityStreamsMediaLink( + $a->url, + $a->width, + $a->height, + $a->type, + 'avatar' + ); + + // Find the big avatar to use as the "image" + if ($a->height == AVATAR_PROFILE_SIZE) { + $imgLink = $avatar; } + + $avatarMediaLinks[] = $avatar->asArray(); } - $imgLink = new ActivityStreamsMediaLink( - $avatarLink->url, - $avatarLink->width, - $avatarLink->height, - $avatarLink->type - ); + $object['avatars'] = $avatarMediaLinks; // extension + // image $object['image'] = $imgLink->asArray(); } @@ -698,7 +707,12 @@ class ActivityObject // url (XXX: need to put the right thing here...) $object['url'] = $this->id; - // TODO: extensions (OStatus stuff, etc.) + /* Extensions */ + + foreach ($this->extra as $e) { + list($objectName, $props, $txt) = $e; + $object[$objectName] = $props; + } return array_filter($object); } diff --git a/lib/activitystreamjsondocument.php b/lib/activitystreamjsondocument.php index 00029f85f9..7e06652a45 100644 --- a/lib/activitystreamjsondocument.php +++ b/lib/activitystreamjsondocument.php @@ -77,6 +77,7 @@ class ActivityStreamJSONDocument * * @param String $title the title */ + function setTitle($title) { $this->doc['title'] = $title; @@ -205,10 +206,10 @@ class ActivityStreamsLink } $this->linkDict = array( - 'url' => $url, - 'rel' => $rel, // extension - 'mediaType' => $mediaType // extension - ); + 'url' => $url, + 'rel' => $rel, // extension + 'type' => $mediaType // extension + ); } function asArray() -- 2.39.2