forked from GNUsocial/gnu-social
Pull <atom:author> info as well as <activity:actor> when we have an old-style ActivityStreams feed. This fixes subscription setup for Cliqset feeds, which currently have a bogus activity:actor/atom:id but a good atom:author/atom:uri
This commit is contained in:
parent
b228da628d
commit
fcb614d0eb
@ -156,7 +156,11 @@ class ActivityObject
|
|||||||
{
|
{
|
||||||
$this->type = self::PERSON; // XXX: is this fair?
|
$this->type = self::PERSON; // XXX: is this fair?
|
||||||
$this->title = $this->_childContent($element, self::NAME);
|
$this->title = $this->_childContent($element, self::NAME);
|
||||||
$this->id = $this->_childContent($element, self::URI);
|
|
||||||
|
$id = $this->_childContent($element, self::URI);
|
||||||
|
if (ActivityUtils::validateUri($id)) {
|
||||||
|
$this->id = $id;
|
||||||
|
}
|
||||||
|
|
||||||
if (empty($this->id)) {
|
if (empty($this->id)) {
|
||||||
$email = $this->_childContent($element, self::EMAIL);
|
$email = $this->_childContent($element, self::EMAIL);
|
||||||
@ -169,6 +173,15 @@ class ActivityObject
|
|||||||
|
|
||||||
private function _fromAtomEntry($element)
|
private function _fromAtomEntry($element)
|
||||||
{
|
{
|
||||||
|
if ($element->localName == 'actor') {
|
||||||
|
// Old-fashioned <activity:actor>...
|
||||||
|
// First pull anything from <author>, then we'll add on top.
|
||||||
|
$author = ActivityUtils::child($element->parentNode, 'author');
|
||||||
|
if ($author) {
|
||||||
|
$this->_fromAuthor($author);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
$this->type = $this->_childContent($element, Activity::OBJECTTYPE,
|
$this->type = $this->_childContent($element, Activity::OBJECTTYPE,
|
||||||
Activity::SPEC);
|
Activity::SPEC);
|
||||||
|
|
||||||
@ -176,7 +189,11 @@ class ActivityObject
|
|||||||
$this->type = ActivityObject::NOTE;
|
$this->type = ActivityObject::NOTE;
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->id = $this->_childContent($element, self::ID);
|
$id = $this->_childContent($element, self::ID);
|
||||||
|
if (ActivityUtils::validateUri($id)) {
|
||||||
|
$this->id = $id;
|
||||||
|
}
|
||||||
|
|
||||||
$this->summary = ActivityUtils::childHtmlContent($element, self::SUMMARY);
|
$this->summary = ActivityUtils::childHtmlContent($element, self::SUMMARY);
|
||||||
$this->content = ActivityUtils::getContent($element);
|
$this->content = ActivityUtils::getContent($element);
|
||||||
|
|
||||||
|
@ -240,4 +240,26 @@ class ActivityUtils
|
|||||||
throw new ClientException(_("Can't handle embedded Base64 content yet."));
|
throw new ClientException(_("Can't handle embedded Base64 content yet."));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Is this a valid URI for remote profile/notice identification?
|
||||||
|
* Does not have to be a resolvable URL.
|
||||||
|
* @param string $uri
|
||||||
|
* @return boolean
|
||||||
|
*/
|
||||||
|
static function validateUri($uri)
|
||||||
|
{
|
||||||
|
if (Validate::uri($uri)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Possibly an upstream bug; tag: URIs aren't validated properly
|
||||||
|
// unless you explicitly ask for them. All other schemes are accepted
|
||||||
|
// for basic URI validation without asking.
|
||||||
|
if (Validate::uri($uri, array('allowed_scheme' => array('tag')))) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1170,11 +1170,7 @@ class Ostatus_profile extends Memcached_DataObject
|
|||||||
protected static function getActivityObjectProfileURI($object)
|
protected static function getActivityObjectProfileURI($object)
|
||||||
{
|
{
|
||||||
if ($object->id) {
|
if ($object->id) {
|
||||||
// Possibly an upstream bug; tag: URIs are rejected unless you
|
if (ActivityUtils::validateUri($object->id)) {
|
||||||
// explicitly ask for them. All other schemes are accepted for
|
|
||||||
// basic URI validation without asking.
|
|
||||||
if (Validate::uri($object->id) ||
|
|
||||||
Validate::uri($object->id, array('allowed_scheme' => array('tag')))) {
|
|
||||||
return $object->id;
|
return $object->id;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user