]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - lib/activitycontext.php
Avoid having to check for notices without rendered copies in upgrade.php
[quix0rs-gnu-social.git] / lib / activitycontext.php
index 2eff3fb15fb1605513681efd16f32d25ed75786c..32f15c1e9f963d8afa48d4e852b2067fafce2a44 100644 (file)
@@ -37,24 +37,27 @@ class ActivityContext
     public $replyToID;
     public $replyToUrl;
     public $location;
-    public $attention = array();
+    public $attention = array();    // 'uri' => 'type'
     public $conversation;
-    public $forwardID; // deprecated, use ActivityVerb::SHARE instead
-    public $forwardUrl; // deprecated, use ActivityVerb::SHARE instead
+    public $scope;
 
     const THR     = 'http://purl.org/syndication/thread/1.0';
     const GEORSS  = 'http://www.georss.org/georss';
     const OSTATUS = 'http://ostatus.org/schema/1.0';
 
-    const INREPLYTO = 'in-reply-to';
-    const REF       = 'ref';
-    const HREF      = 'href';
+    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 ATTENTION    = 'ostatus:attention';
     const MENTIONED    = 'mentioned';
-    const CONVERSATION = 'ostatus:conversation';
+
+    const ATTN_PUBLIC  = 'http://activityschema.org/collection/public';
 
     function __construct($element = null)
     {
@@ -71,27 +74,28 @@ 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
 
         $links = $element->getElementsByTagNameNS(ActivityUtils::ATOM, ActivityUtils::LINK);
 
-        $attention = array();
         for ($i = 0; $i < $links->length; $i++) {
             $link = $links->item($i);
 
-            $linkRel = $link->getAttribute(ActivityUtils::REL);
-
-            // XXX: Deprecate this in favour of "mentioned" from Salmon spec
-            // http://salmon-protocol.googlecode.com/svn/trunk/draft-panzer-salmon-00.html#SALR
-            if ($linkRel == self::ATTENTION) {
-                $attention[] = $link->getAttribute(self::HREF);
-            } elseif ($linkRel == self::MENTIONED) {
-                $attention[] = $link->getAttribute(self::HREF);
+            $linkRel  = $link->getAttribute(ActivityUtils::REL);
+            $linkHref = $link->getAttribute(self::HREF);
+            if ($linkRel == self::MENTIONED && $linkHref !== '') {
+                $this->attention[$linkHref] = $link->getAttribute(ActivityContext::OBJECTTYPE);
             }
         }
-        $this->attention = array_unique($attention);
     }
 
     /**
@@ -144,8 +148,6 @@ class ActivityContext
 
         $context['inReplyTo']    = $this->getInReplyToArray();
         $context['conversation'] = $this->conversation;
-        $context['forwardId']    = $this->forwardID;
-        $context['forwardUrl']   = $this->forwardUrl;
 
         return array_filter($context);
     }
@@ -166,11 +168,10 @@ class ActivityContext
     {
         $tos = array();
 
-        foreach ($this->attention as $attnUrl) {
+        foreach ($this->attention as $attnUrl => $attnType) {
             $to = array(
-                'objectType' => 'person',
+                'objectType' => $attnType,  // can be empty
                 'id'         => $attnUrl,
-                'url'        => $attnUrl
             );
             $tos[] = $to;
         }