]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
Add context to Activity Streams JSON
authorZach Copley <zach@status.net>
Fri, 18 Feb 2011 08:51:08 +0000 (00:51 -0800)
committerZach Copley <zach@status.net>
Fri, 18 Feb 2011 08:51:08 +0000 (00:51 -0800)
lib/activity.php
lib/activitycontext.php

index e2699ebadcfee1fb8d4a37be90d974ba85a5ec7a..218c965c4d0d505fe0ee4165106b259780bba0b8 100644 (file)
@@ -450,6 +450,9 @@ class Activity
 
         /* more extensions */
 
+        // Context stuff. For now I'm just sticking most of it
+        // in a property called "context"
+
         if (!empty($this->context)) {
 
             if (!empty($this->context->location)) {
@@ -461,8 +464,11 @@ class Activity
                     'type'        => 'Point',
                     'coordinates' => array($loc->lat, $loc->lon)
                 );
+
             }
 
+            $activity['to']      = $this->context->getToArray();
+            $activity['context'] = $this->context->asArray();
         }
 
         return array_filter($activity);
index fd0dfe06c1b7bfef81f9e82a322dc689d23f31be..3dc53d869d18a29f737ec50be579c3db06e391b5 100644 (file)
@@ -130,4 +130,50 @@ 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['replyToId']    = $this->replyToID;
+        $context['replyToUrl']   = $this->replyToUrl;
+        $context['conversation'] = $this->conversation;
+        $context['forwardId']    = $this->forwardID;
+        $context['forwardUrl']   = $this->forwardUrl;
+
+        // XXX: We might want to have the attention to stuff
+        //      in here like we do with Atom
+
+        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) {
+            $to = array('id' => $attnUrl, 'url' => $attnUrl);
+            $tos[] = $to;
+        }
+
+        return $tos;
+    }
+
 }