X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;ds=sidebyside;f=lib%2Factivitycontext.php;h=e383b05734431c51dd1a6c554ccbfe6679ce941a;hb=2e3ef4cc078a29be245c6b19f5c8d900d9fe75cc;hp=ff3bc9411d53baeaa48b9b8d007769382bafef44;hpb=99194e03fa50b61f99164674afc949b4bbefd44a;p=quix0rs-gnu-social.git diff --git a/lib/activitycontext.php b/lib/activitycontext.php index ff3bc9411d..e383b05734 100644 --- a/lib/activitycontext.php +++ b/lib/activitycontext.php @@ -38,7 +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'; @@ -128,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; + } + } +