]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - lib/activity.php
Rework geolocation status display so you can actually tell what it's doing and whethe...
[quix0rs-gnu-social.git] / lib / activity.php
index 6b3b121087ac502afd9783c53db78d22c2391b19..b781e498467f0331dbf9dd10db41d015b0cf1faa 100644 (file)
@@ -354,16 +354,38 @@ class Activity
         // body
         $activity['body'] = $this->content;
 
-        // generator <-- We should use this when we know a notice is created
-        //               locally
+        // generator <-- We could use this when we know a notice is created
+        //               locally. Or if we know the upstream Generator.
+
+        // icon <-- I've decided to use the posting user's stream avatar here
+        //          for now (also included in the avatarLinks extension)
 
-        // icon <-- Should we use this? Maybe a little bubble like we have
-        //          on Facebook posts?
 
         // object
         if ($this->verb == ActivityVerb::POST && count($this->objects) == 1) {
             $activity['object'] = $this->objects[0]->asArray();
 
+            // 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)) {
+                    $loc = $this->context->location;
+
+                    // GeoJSON
+
+                    $activity['geopoint'] = array(
+                        'type'        => 'Point',
+                        'coordinates' => array($loc->lat, $loc->lon)
+                    );
+
+                }
+
+                $activity['to']      = $this->context->getToArray();
+                $activity['context'] = $this->context->asArray();
+            }
+
             // Instead of adding enclosures as an extension to JSON
             // Activities, it seems like we should be using the
             // attachedObjects property of ActivityObject
@@ -415,8 +437,14 @@ class Activity
 
         $activity['postedTime'] = self::iso8601Date($this->time); // Change to exactly be RFC3339?
 
-        // provider <-- We should probably use this for showing the the source
-        //              of remote notices, if known
+        // provider
+        $provider = array(
+            'objectType' => 'service',
+            'displayName' => common_config('site', 'name'),
+            'url' => common_root_url()
+        );
+
+        $activity['provider'] = $provider;
 
         // target
         if (!empty($this->target)) {
@@ -437,10 +465,25 @@ class Activity
 
         /* Purely extensions hereafter */
 
-        if ($this->verb == ActivityVerb::POST) {
-            $activity['noticeInfo'] = $this->noticeInfo;
+        $tags = array();
+
+        // Use an Activity Object for term? Which object? Note?
+        foreach ($this->categories as $cat) {
+            $tags[] = $cat->term;
         }
 
+        $activity['tags'] = $tags;
+
+        // XXX: a bit of a hack... Since JSON isn't namespaced we probably
+        // shouldn't be using 'statusnet:notice_info', but this will work
+        // for the moment.
+
+        foreach ($this->extra as $e) {
+            list($objectName, $props, $txt) = $e;
+            if (!empty($objectName)) {
+                $activity[$objectName] = $props;
+            }
+        }
 
         return array_filter($activity);
     }