From 343291262e2835e590625584b08610b4eb718fd7 Mon Sep 17 00:00:00 2001 From: Mikael Nordfeldth Date: Thu, 27 Nov 2014 13:39:38 +0100 Subject: [PATCH] ostatus:conversation element instead of link rel="" Mainly because the atom:link element requires a "web resource" but we wish to supply a URI which might not be HTTP. We'll leave the old atom:link element however since it's in the OStatus 1.0 Draft2 docs and nothing newer has been released yet. --- lib/activity.php | 8 ++++++++ lib/activitycontext.php | 13 +++++++++++-- 2 files changed, 19 insertions(+), 2 deletions(-) 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