diff --git a/lib/activityobject.php b/lib/activityobject.php index b5e6013b4b..f774dd3c8b 100644 --- a/lib/activityobject.php +++ b/lib/activityobject.php @@ -172,10 +172,39 @@ class ActivityObject private function _fromAuthor($element) { - $this->type = self::PERSON; // XXX: is this fair? - $this->title = $this->_childContent($element, self::NAME); + $this->type = $this->_childContent($element, + Activity::OBJECTTYPE, + Activity::SPEC); - $this->id = $this->_childContent($element, self::URI); + if (empty($this->type)) { + $this->type = self::PERSON; // XXX: is this fair? + } + + // start with + + $title = ActivityUtils::childHtmlContent($element, self::TITLE); + + if (!empty($title)) { + $this->title = html_entity_decode(strip_tags($title), ENT_QUOTES, 'UTF-8'); + } + + // fall back to + + if (empty($this->title)) { + $this->title = $this->_childContent($element, self::NAME); + } + + // start with + + $this->id = $this->_childContent($element, self::ID); + + // fall back to + + if (empty($this->id)) { + $this->id = $this->_childContent($element, self::URI); + } + + // fall further back to if (empty($this->id)) { $email = $this->_childContent($element, self::EMAIL); @@ -184,6 +213,14 @@ class ActivityObject $this->id = 'mailto:'.$email; } } + + $this->link = ActivityUtils::getPermalink($element); + + // fall finally back to + + if (empty($this->id) && !empty($this->link)) { // fallback if there's no ID + $this->id = $this->link; + } } private function _fromAtomEntry($element)