Add context to Activity Streams JSON

This commit is contained in:
Zach Copley 2011-02-18 00:51:08 -08:00
parent 11f77b2fca
commit 60f62199a1
2 changed files with 52 additions and 0 deletions

View File

@ -450,6 +450,9 @@ class Activity
/* more extensions */
// Context stuff. For now I'm just sticking most of it
// in a property called "context"
if (!empty($this->context)) {
if (!empty($this->context->location)) {
@ -461,8 +464,11 @@ class Activity
'type' => 'Point',
'coordinates' => array($loc->lat, $loc->lon)
);
}
$activity['to'] = $this->context->getToArray();
$activity['context'] = $this->context->asArray();
}
return array_filter($activity);

View File

@ -130,4 +130,50 @@ class ActivityContext
common_log(LOG_ERR, "Ignoring bogus georss:point value $point");
return null;
}
/**
* Returns context (StatusNet stuff) as an array suitable for serializing
* in JSON. Right now context stuff is an extension to Activity.
*
* @return array the context
*/
function asArray()
{
$context = array();
$context['replyToId'] = $this->replyToID;
$context['replyToUrl'] = $this->replyToUrl;
$context['conversation'] = $this->conversation;
$context['forwardId'] = $this->forwardID;
$context['forwardUrl'] = $this->forwardUrl;
// XXX: We might want to have the attention to stuff
// in here like we do with Atom
return array_filter($context);
}
/**
* Returns an array of arrays representing Activity Objects (intended to be
* serialized in JSON) that represent WHO the Activity is supposed to
* be received by. This is not really specified but appears in an example
* of the current spec as an extension. We might want to figure out a JSON
* serialization for OStatus and use that to express mentions instead.
*
* XXX: People's ideas on how to do this are all over the place
*
* @return array the array of recipients
*/
function getToArray()
{
$tos = array();
foreach ($this->attention as $attnUrl) {
$to = array('id' => $attnUrl, 'url' => $attnUrl);
$tos[] = $to;
}
return $tos;
}
}