]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - lib/activity.php
Merge branch '1.0.x' of gitorious.org:statusnet/mainline into 1.0.x
[quix0rs-gnu-social.git] / lib / activity.php
index 25d70c982b497eaaef1251b174e8413942a4d1d4..83a115d16015088421332aef5bd57f8e850a00ed 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)) {
@@ -457,28 +485,6 @@ class Activity
             }
         }
 
-
-        // 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();
-        }
-
         return array_filter($activity);
     }
 
@@ -698,11 +704,18 @@ class Activity
         return ActivityUtils::child($element, $tag, $namespace);
     }
 
+    /**
+     * For consistency, we'll always output UTC rather than local time.
+     * Note that clients *should* accept any timezone we give them as long
+     * as it's properly formatted.
+     *
+     * @param int $tm Unix timestamp
+     * @return string
+     */
     static function iso8601Date($tm)
     {
         $dateStr = date('d F Y H:i:s', $tm);
         $d = new DateTime($dateStr, new DateTimeZone('UTC'));
-        $d->setTimezone(new DateTimeZone(common_timezone()));
         return $d->format('c');
     }
 }