]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - lib/activitycontext.php
Use pre-defined const instead of strings
[quix0rs-gnu-social.git] / lib / activitycontext.php
index fd0dfe06c1b7bfef81f9e82a322dc689d23f31be..e383b05734431c51dd1a6c554ccbfe6679ce941a 100644 (file)
@@ -38,9 +38,11 @@ class ActivityContext
     public $replyToUrl;
     public $location;
     public $attention = array();
+    public $attentionType = array();
     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';
@@ -130,4 +132,84 @@ class ActivityContext
         common_log(LOG_ERR, "Ignoring bogus georss:point value $point");
         return null;
     }
+
+    /**
+     * Returns context (StatusNet stuff) as an array suitable for serializing
+     * in JSON. Right now context stuff is an extension to Activity.
+     *
+     * @return array the context
+     */
+
+    function asArray()
+    {
+        $context = array();
+
+        $context['inReplyTo']    = $this->getInReplyToArray();
+        $context['conversation'] = $this->conversation;
+        $context['forwardId']    = $this->forwardID;
+        $context['forwardUrl']   = $this->forwardUrl;
+
+        return array_filter($context);
+    }
+
+    /**
+     * Returns an array of arrays representing Activity Objects (intended to be
+     * serialized in JSON) that represent WHO the Activity is supposed to
+     * be received by. This is not really specified but appears in an example
+     * of the current spec as an extension. We might want to figure out a JSON
+     * serialization for OStatus and use that to express mentions instead.
+     *
+     * XXX: People's ideas on how to do this are all over the place
+     *
+     * @return array the array of recipients
+     */
+
+    function getToArray()
+    {
+        $tos = array();
+
+        foreach ($this->attention as $attnUrl) {
+            if (array_key_exists($attnUrl, $this->attentionType)) {
+                $type = ActivityObject::canonicalType($this->attentionType[$attnUrl]);
+            } else {
+                $type = ActivityObject::canonicalType(ActivityObject::PERSON);
+            }
+            $to = array(
+                'objectType' => $type,
+                'id'         => $attnUrl
+            );
+            $tos[] = $to;
+        }
+
+        return $tos;
+    }
+
+    /**
+     * Return an array for the notices this notice is a reply to 
+     * suitable for serializing as JSON note objects.
+     *
+     * @return array the array of notes
+     */
+
+     function getInReplyToArray()
+     {
+         if (empty($this->replyToID) && empty($this->replyToUrl)) {
+             return null;
+         }
+
+         $replyToObj = array('objectType' => 'note');
+
+         // XXX: Possibly shorten this to just the numeric ID?
+         //      Currently, it's the full URI of the notice.
+         if (!empty($this->replyToID)) {
+             $replyToObj['id'] = $this->replyToID;
+         }
+         if (!empty($this->replyToUrl)) {
+             $replyToObj['url'] = $this->replyToUrl;
+         }
+
+         return $replyToObj;
+     }
+
 }
+