]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
ostatus:conversation element instead of link rel=""
authorMikael Nordfeldth <mmn@hethane.se>
Thu, 27 Nov 2014 12:39:38 +0000 (13:39 +0100)
committerMikael Nordfeldth <mmn@hethane.se>
Thu, 27 Nov 2014 12:47:31 +0000 (13:47 +0100)
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
lib/activitycontext.php

index 6fd04c4db1709e16862475de53ad6da4c463b090..2d3930df0d85ec46207e6ff63fa9790556f3f664 100644 (file)
@@ -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) {
index cebd72ea9078573fb53e3ab2aa22b9c8af45f716..32f15c1e9f963d8afa48d4e852b2067fafce2a44 100644 (file)
@@ -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