ensure from an RSS channel

This commit is contained in:
Evan Prodromou 2010-03-19 15:50:06 -05:00
parent 022c13418d
commit db9e57f761
1 changed files with 24 additions and 2 deletions

View File

@ -788,9 +788,20 @@ class Ostatus_profile extends Memcached_DataObject
throw new FeedSubNoHubException(); throw new FeedSubNoHubException();
} }
// Try to get a profile from the feed activity:subject $feedEl = $discover->root;
$feedEl = $discover->feed->documentElement; if ($feedEl->tagName == 'feed') {
return self::ensureAtomFeed($feedEl, $hints);
} else if ($feedEl->tagName == 'channel') {
return self::ensureRssChannel($feedEl, $hints);
} else {
throw new FeedSubBadXmlException($feeduri);
}
}
public static function ensureAtomFeed($feedEl, $hints)
{
// Try to get a profile from the feed activity:subject
$subject = ActivityUtils::child($feedEl, Activity::SUBJECT, Activity::SPEC); $subject = ActivityUtils::child($feedEl, Activity::SUBJECT, Activity::SPEC);
@ -838,6 +849,17 @@ class Ostatus_profile extends Memcached_DataObject
throw new FeedSubException("Can't find enough profile information to make a feed."); throw new FeedSubException("Can't find enough profile information to make a feed.");
} }
public static function ensureRssChannel($feedEl, $hints)
{
// @fixme we should check whether this feed has elements
// with different <author> or <dc:creator> elements, and... I dunno.
// Do something about that.
$obj = ActivityObject::fromRssChannel($feedEl);
return self::ensureActivityObjectProfile($obj, $hints);
}
/** /**
* Download and update given avatar image * Download and update given avatar image
* *