Some better context for notices as arrays

This commit is contained in:
Evan Prodromou 2013-06-07 03:11:23 -04:00
parent 9bb5d8c695
commit 6164940e8c
3 changed files with 34 additions and 4 deletions

View File

@ -1577,6 +1577,7 @@ class Notice extends Managed_DataObject
$rprofile = Profile::staticGet('id', $id); $rprofile = Profile::staticGet('id', $id);
if (!empty($rprofile)) { if (!empty($rprofile)) {
$ctx->attention[] = $rprofile->getUri(); $ctx->attention[] = $rprofile->getUri();
$ctx->attentionType[$rprofile->getUri()] = ActivityObject::PERSON;
} }
} }
@ -1584,6 +1585,19 @@ class Notice extends Managed_DataObject
foreach ($groups as $group) { foreach ($groups as $group) {
$ctx->attention[] = $group->getUri(); $ctx->attention[] = $group->getUri();
$ctx->attentionType[$group->getUri()] = ActivityObject::GROUP;
}
switch ($this->scope) {
case Notice::PUBLIC_SCOPE:
$ctx->attention[] = "http://activityschema.org/collection/public";
$ctx->attentionType["http://activityschema.org/collection/public"] = ActivityObject::COLLECTION;
break;
case Notice::FOLLOWER_SCOPE:
$surl = common_local_url("subscribers", array('nickname' => $profile->nickname));
$ctx->attention[] = $surl;
$ctx->attentionType[$surl] = ActivityObject::COLLECTION;
break;
} }
// XXX: deprecated; use ActivityVerb::SHARE instead // XXX: deprecated; use ActivityVerb::SHARE instead

View File

@ -38,9 +38,11 @@ class ActivityContext
public $replyToUrl; public $replyToUrl;
public $location; public $location;
public $attention = array(); public $attention = array();
public $attentionType = array();
public $conversation; public $conversation;
public $forwardID; // deprecated, use ActivityVerb::SHARE instead public $forwardID; // deprecated, use ActivityVerb::SHARE instead
public $forwardUrl; // deprecated, use ActivityVerb::SHARE instead public $forwardUrl; // deprecated, use ActivityVerb::SHARE instead
public $scope;
const THR = 'http://purl.org/syndication/thread/1.0'; const THR = 'http://purl.org/syndication/thread/1.0';
const GEORSS = 'http://www.georss.org/georss'; const GEORSS = 'http://www.georss.org/georss';
@ -167,10 +169,14 @@ class ActivityContext
$tos = array(); $tos = array();
foreach ($this->attention as $attnUrl) { foreach ($this->attention as $attnUrl) {
if (array_key_exists($attnUrl, $this->attentionType)) {
$type = ActivityObject::canonicalType($this->attentionType[$attnUrl]);
} else {
$type = ActivityObject::canonicalType(ActivityObject::PERSON);
}
$to = array( $to = array(
'objectType' => 'person', 'objectType' => $type,
'id' => $attnUrl, 'id' => $attnUrl
'url' => $attnUrl
); );
$tos[] = $to; $tos[] = $to;
} }

View File

@ -71,6 +71,7 @@ class ActivityObject
const ACTIVITY = 'http://activitystrea.ms/schema/1.0/activity'; const ACTIVITY = 'http://activitystrea.ms/schema/1.0/activity';
const SERVICE = 'http://activitystrea.ms/schema/1.0/service'; const SERVICE = 'http://activitystrea.ms/schema/1.0/service';
const IMAGE = 'http://activitystrea.ms/schema/1.0/image'; const IMAGE = 'http://activitystrea.ms/schema/1.0/image';
const COLLECTION = 'http://activitystrea.ms/schema/1.0/collection';
// Atom elements we snarf // Atom elements we snarf
@ -502,6 +503,10 @@ class ActivityObject
$object->poco = PoCo::fromProfile($profile); $object->poco = PoCo::fromProfile($profile);
if ($profile->getUser()) {
$object->extra[] = array('followers', array('url' => common_local_url('subscribers', array('nickname' => $profile->nickname))));
}
Event::handle('EndActivityObjectFromProfile', array($profile, &$object)); Event::handle('EndActivityObjectFromProfile', array($profile, &$object));
} }
@ -737,7 +742,12 @@ class ActivityObject
// downstreamDuplicates // downstreamDuplicates
// id // id
if ($this->id) {
$object['id'] = $this->id; $object['id'] = $this->id;
} else if ($this->link) {
$object['id'] = $this->link;
}
if ($this->type == ActivityObject::PERSON if ($this->type == ActivityObject::PERSON
|| $this->type == ActivityObject::GROUP) { || $this->type == ActivityObject::GROUP) {