diff --git a/lib/activity.php b/lib/activity.php index 6fd04c4db1..2d3930df0d 100644 --- a/lib/activity.php +++ b/lib/activity.php @@ -627,6 +627,14 @@ class Activity if (!empty($this->context->conversation)) { $xs->element('link', array('rel' => ActivityContext::CONVERSATION, 'href' => $this->context->conversation)); + $xs->element(ActivityContext::CONVERSATION, null, $this->context->conversation); + /* Since we use XMLWriter we just use the previously hardcoded prefix for ostatus, + otherwise we should use something like this: + $xs->elementNS(array(ActivityContext::OSTATUS => 'ostatus'), // namespace + 'conversation', // tag (or the element name from ActivityContext::CONVERSATION) + null, // attributes + $this->context->conversation); // content + */ } foreach ($this->context->attention as $attnURI=>$type) { diff --git a/lib/activitycontext.php b/lib/activitycontext.php index cebd72ea90..32f15c1e9f 100644 --- a/lib/activitycontext.php +++ b/lib/activitycontext.php @@ -48,12 +48,14 @@ class ActivityContext const INREPLYTO = 'in-reply-to'; const REF = 'ref'; const HREF = 'href'; + + // OStatus element names with prefixes const OBJECTTYPE = 'ostatus:object-type'; // FIXME: Undocumented! + const CONVERSATION = 'ostatus:conversation'; const POINT = 'point'; const MENTIONED = 'mentioned'; - const CONVERSATION = 'ostatus:conversation'; const ATTN_PUBLIC = 'http://activityschema.org/collection/public'; @@ -72,7 +74,14 @@ class ActivityContext $this->location = $this->getLocation($element); - $this->conversation = ActivityUtils::getLink($element, self::CONVERSATION); + $convs = $element->getElementsByTagNameNS(self::OSTATUS, self::CONVERSATION); + foreach ($convs as $conv) { + $this->conversation = $conv->textContent; + } + if (empty($this->conversation)) { + // fallback to the atom:link rel="ostatus:conversation" element + $this->conversation = ActivityUtils::getLink($element, self::CONVERSATION); + } // Multiple attention links allowed