if (Event::handle('StartNoticeAsActivity', array($this, &$act))) {
+ $act->id = $this->uri;
+ $act->time = strtotime($this->created);
+ $act->link = $this->bestUrl();
+ $act->content = common_xml_safe_str($this->rendered);
+ $act->title = common_xml_safe_str($this->content);
+
$profile = $this->getProfile();
$act->actor = ActivityObject::fromProfile($profile);
$act->actor->extra[] = $profile->profileInfo($cur);
- $act->verb = ActivityVerb::POST;
- $act->objects[] = ActivityObject::fromNotice($this);
- // XXX: should this be handled by default processing for object entry?
+ if ($this->repeat_of) {
- $act->time = strtotime($this->created);
- $act->link = $this->bestUrl();
+ $repeated = Notice::staticGet('id', $this->repeat_of);
- $act->content = common_xml_safe_str($this->rendered);
- $act->id = $this->uri;
- $act->title = common_xml_safe_str($this->content);
+ $act->verb = ActivityVerb::SHARE;
+ $act->objects[] = $repeated->asActivity($cur);
+
+ } else {
+
+ $act->verb = ActivityVerb::POST;
+ $act->objects[] = ActivityObject::fromNotice($this);
+
+ }
+
+ // XXX: should this be handled by default processing for object entry?
// Categories
} else {
$activity['object'] = array();
foreach($this->objects as $object) {
- $activity['object'][] = $object->asArray();
+ $oa = $object->asArray();
+ if ($object instanceof Activity) {
+ // throw in a type
+ // XXX: hackety-hack
+ $oa['type'] = 'activity';
+ }
+ $activity['object'][] = $oa;
}
}
return $xs->getString();
}
- function outputTo($xs, $namespace=false, $author=true, $source=false)
+ function outputTo($xs, $namespace=false, $author=true, $source=false, $tag='entry')
{
if ($namespace) {
$attrs = array('xmlns' => 'http://www.w3.org/2005/Atom',
$attrs = array();
}
- $xs->elementStart('entry', $attrs);
+ $xs->elementStart($tag, $attrs);
- if ($this->verb == ActivityVerb::POST && count($this->objects) == 1) {
+ if ($tag != 'entry') {
+ $xs->element('activity:object-type', null, ActivityObject::ACTIVITY);
+ }
+
+ if ($this->verb == ActivityVerb::POST && count($this->objects) == 1 && $tag == 'entry') {
$obj = $this->objects[0];
$obj->outputTo($xs, null);
$this->actor->outputTo($xs, 'activity:actor');
}
- if ($this->verb != ActivityVerb::POST || count($this->objects) != 1) {
+ if ($this->verb != ActivityVerb::POST || count($this->objects) != 1 || $tag != 'entry') {
foreach($this->objects as $object) {
- $object->outputTo($xs, 'activity:object');
+ if ($object instanceof Activity) {
+ $object->outputTo($xs, false, true, true, 'activity:object');
+ } else {
+ $object->outputTo($xs, 'activity:object');
+ }
}
}
$xs->element($tag, $attrs, $content);
}
- $xs->elementEnd('entry');
+ $xs->elementEnd($tag);
return;
}