diff options
author | Evan Prodromou <evan@status.net> | 2010-08-10 17:03:47 -0700 |
---|---|---|
committer | Evan Prodromou <evan@status.net> | 2010-09-13 11:44:20 -0400 |
commit | d634f9cf17f683c38150d64d29b47975b5aeac70 (patch) | |
tree | 26ec375aa2775020b3a9323ce70774308f4a3d22 /classes | |
parent | d9b959fc64e4e36b0957afd33482f480b24868f9 (diff) |
Notice::asActivity
Diffstat (limited to 'classes')
-rw-r--r-- | classes/Notice.php | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/classes/Notice.php b/classes/Notice.php index f1b012465..9a6f180e5 100644 --- a/classes/Notice.php +++ b/classes/Notice.php @@ -1212,6 +1212,64 @@ class Notice extends Memcached_DataObject return $groups; } + function asActivity() + { + $profile = $this->getProfile(); + + $act = new Activity(); + + $act->actor = Activity::fromProfile($profile); + $act->verb = ActivityVerb::POST; + $act->objects[] = ActivityObject::fromNotice($this); + + $act->time = strtotime($this->created); + $act->link = $this->bestUrl(); + + $act->content = common_xml_safe_string($this->rendered); + $act->id = $this->uri; + $act->title = common_xml_safe_string($this->content); + + $ctx = new ActivityContext(); + + if (!empty($this->reply_to)) { + $reply = Notice::staticGet('id', $this->reply_to); + if (!empty($reply)) { + $ctx->replyToID = $reply->uri; + $ctx->replyToUrl = $reply->bestUrl(); + } + } + + $ctx->location = $this->getLocation(); + + $conv = null; + + if (!empty($this->conversation)) { + $conv = Conversation::staticGet('id', $this->conversation); + if (!empty($conv)) { + $ctx->conversation = $conv->uri; + } + } + + $reply_ids = $this->getReplies(); + + foreach ($reply_ids as $id) { + $profile = Profile::staticGet('id', $id); + if (!empty($profile)) { + $ctx->attention[] = $profile->uri; + } + } + + $groups = $this->getGroups(); + + foreach ($groups as $group) { + $ctx->attention[] = $group->uri; + } + + $act->context = $ctx; + + return $act; + } + // This has gotten way too long. Needs to be sliced up into functional bits // or ideally exported to a utility class. |