From bff89bc864dadf90728ea802825d7da445cd9158 Mon Sep 17 00:00:00 2001 From: Evan Prodromou Date: Sat, 31 Dec 2011 02:31:26 -0800 Subject: [PATCH] catch up to spec --- lib/activity.php | 44 ++++++++++++++++++++++++++++++++++++-------- 1 file changed, 36 insertions(+), 8 deletions(-) diff --git a/lib/activity.php b/lib/activity.php index 5234a54c03..99c76c9126 100644 --- a/lib/activity.php +++ b/lib/activity.php @@ -389,9 +389,32 @@ class Activity $activity['geopoint'] = array( 'type' => 'Point', - 'coordinates' => array($loc->lat, $loc->lon) + 'coordinates' => array($loc->lat, $loc->lon), + 'deprecated' => true, ); + $lat = $loc->lat + 0.0; + $lon = $loc->lon + 0.0; + + $position = (($lat > 0.0) ? ("+".$lat) : $lat) . "." . + (($lon > 0.0) ? ("+".$lon) : $lon) . "/"; + + $activity['location'] = array( + 'objectType' => 'place', + 'position' => $position + ); + + $name = $loc->getName(); + + if ($name) { + $activity['location']['displayName'] = $name; + } + + $url = $loc->getURL(); + + if ($url) { + $activity['location']['url'] = $url; + } } $activity['to'] = $this->context->getToArray(); @@ -487,15 +510,20 @@ class Activity /* Purely extensions hereafter */ - $tags = array(); - - // Use an Activity Object for term? Which object? Note? - foreach ($this->categories as $cat) { - $tags[] = $cat->term; + if ($activity['verb'] == 'post') { + $tags = array(); + foreach ($this->categories as $cat) { + if (mb_strlen($cat->term) > 0) { + // Couldn't figure out which object type to use, so... + $tags[] = array('objectType' => 'http://activityschema.org/object/hashtag', + 'displayName' => $cat->term); + } + } + if (count($tags) > 0) { + $activity['object']['tags'] = $tags; + } } - $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. -- 2.39.5