summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEvan Prodromou <evan@status.net>2010-03-20 16:53:30 -0500
committerEvan Prodromou <evan@status.net>2010-03-20 16:53:30 -0500
commit323ff31fbd59181f4cd9a3fc4da40a1f9ff8bc99 (patch)
treefa1cf4c7af9e10d515a69cc14e1d35499a55f2e2
parent99454be38cf1dc7f962441d23ccc0a59e7b05f3d (diff)
special-case Posterous author element for activity actor
-rw-r--r--lib/activity.php18
-rw-r--r--lib/activityobject.php32
2 files changed, 41 insertions, 9 deletions
diff --git a/lib/activity.php b/lib/activity.php
index b1744e68f..691ace1f6 100644
--- a/lib/activity.php
+++ b/lib/activity.php
@@ -238,17 +238,17 @@ class Activity
$this->time = strtotime($pubDateEl->textContent);
}
- $authorEl = $this->_child($item, self::AUTHOR, self::RSS);
-
- if (!empty($authorEl)) {
+ if ($authorEl = $this->_child($item, self::AUTHOR, self::RSS)) {
$this->actor = ActivityObject::fromRssAuthor($authorEl);
+ } else if ($dcCreatorEl = $this->_child($item, self::CREATOR, self::DC)) {
+ $this->actor = ActivityObject::fromDcCreator($dcCreatorEl);
+ } else if ($posterousEl = $this->_child($item, ActivityObject::AUTHOR, ActivityObject::POSTEROUS)) {
+ // Special case for Posterous.com
+ $this->actor = ActivityObject::fromPosterousAuthor($posterousEl);
+ } else if (!empty($channel)) {
+ $this->actor = ActivityObject::fromRssChannel($channel);
} else {
- $dcCreatorEl = $this->_child($item, self::CREATOR, self::DC);
- if (!empty($dcCreatorEl)) {
- $this->actor = ActivityObject::fromDcCreator($dcCreatorEl);
- } else if (!empty($channel)) {
- $this->actor = ActivityObject::fromRssChannel($channel);
- }
+ // No actor!
}
$this->title = ActivityUtils::childContent($item, ActivityObject::TITLE, self::RSS);
diff --git a/lib/activityobject.php b/lib/activityobject.php
index b1e9071ed..18e3e21dd 100644
--- a/lib/activityobject.php
+++ b/lib/activityobject.php
@@ -80,6 +80,13 @@ class ActivityObject
const URI = 'uri';
const EMAIL = 'email';
+ const POSTEROUS = 'http://posterous.com/help/rss/1.0';
+ const AUTHOR = 'author';
+ const USERIMAGE = 'userImage';
+ const PROFILEURL = 'profileUrl';
+ const NICKNAME = 'nickName';
+ const DISPLAYNAME = 'displayName';
+
public $element;
public $type;
public $id;
@@ -296,6 +303,31 @@ class ActivityObject
return $obj;
}
+ public static function fromPosterousAuthor($el)
+ {
+ $obj = new ActivityObject();
+
+ $obj->type = ActivityObject::PERSON; // @fixme any others...?
+
+ $userImage = ActivityUtils::childContent($el, self::USERIMAGE, self::POSTEROUS);
+
+ if (!empty($userImage)) {
+ $obj->avatarLinks[] = $userImage;
+ }
+
+ $obj->link = ActivityUtils::childContent($el, self::PROFILEURL, self::POSTEROUS);
+ $obj->id = $obj->link;
+
+ $obj->poco = new PoCo();
+
+ $obj->poco->preferredUsername = ActivityUtils::childContent($el, self::NICKNAME, self::POSTEROUS);
+ $obj->poco->displayName = ActivityUtils::childContent($el, self::DISPLAYNAME, self::POSTEROUS);
+
+ $obj->title = $obj->poco->displayName;
+
+ return $obj;
+ }
+
private function _childContent($element, $tag, $namespace=ActivityUtils::ATOM)
{
return ActivityUtils::childContent($element, $tag, $namespace);