diff options
author | Evan Prodromou <evan@status.net> | 2010-03-20 16:53:30 -0500 |
---|---|---|
committer | Evan Prodromou <evan@status.net> | 2010-03-20 16:53:30 -0500 |
commit | 323ff31fbd59181f4cd9a3fc4da40a1f9ff8bc99 (patch) | |
tree | fa1cf4c7af9e10d515a69cc14e1d35499a55f2e2 | |
parent | 99454be38cf1dc7f962441d23ccc0a59e7b05f3d (diff) |
special-case Posterous author element for activity actor
-rw-r--r-- | lib/activity.php | 18 | ||||
-rw-r--r-- | lib/activityobject.php | 32 |
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); |