X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=lib%2Factivitystreamjsondocument.php;h=12c3882c25d444b299293f27544294762719010d;hb=0b9a2fdf3ad19942e85a66b94d08501ce9c927dd;hp=6d17075931768e062172820d8f383d0efee9abf7;hpb=59043dca7fb6f974b11797c4d0f20e5b78b0611d;p=quix0rs-gnu-social.git diff --git a/lib/activitystreamjsondocument.php b/lib/activitystreamjsondocument.php index 6d17075931..12c3882c25 100644 --- a/lib/activitystreamjsondocument.php +++ b/lib/activitystreamjsondocument.php @@ -54,6 +54,7 @@ class ActivityStreamJSONDocument extends JSONActivityCollection /* The current authenticated user */ protected $cur; + protected $scoped = null; /* Title of the document */ protected $title; @@ -75,7 +76,8 @@ class ActivityStreamJSONDocument extends JSONActivityCollection { parent::__construct($items, $url); - $this->cur = $cur; + $this->cur = $cur ?: common_current_user(); + $this->scoped = !is_null($this->cur) ? $this->cur->getProfile() : null; /* Title of the JSON document */ $this->title = $title; @@ -138,10 +140,8 @@ class ActivityStreamJSONDocument extends JSONActivityCollection function addItemFromNotice($notice) { - $cur = empty($this->cur) ? common_current_user() : $this->cur; - - $act = $notice->asActivity($cur); - $act->extra[] = $notice->noticeInfo($cur); + $act = $notice->asActivity($this->scoped); + $act->extra[] = $notice->noticeInfo($this->scoped); array_push($this->items, $act->asArray()); $this->count++; } @@ -165,131 +165,13 @@ class ActivityStreamJSONDocument extends JSONActivityCollection */ function asString() { - $this->doc['generator'] = 'StatusNet ' . STATUSNET_VERSION; // extension + $this->doc['generator'] = 'GNU social ' . GNUSOCIAL_VERSION; // extension $this->doc['title'] = $this->title; $this->doc['url'] = $this->url; - $this->doc['count'] = $this->count; + $this->doc['totalItems'] = $this->count; $this->doc['items'] = $this->items; $this->doc['links'] = $this->links; // extension return json_encode(array_filter($this->doc)); // filter out empty elements } } - -/** - * A class for representing MediaLinks in JSON Activities - * - * @category Feed - * @package StatusNet - * @author Zach Copley - * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 - * @link http://status.net/ - */ - -class ActivityStreamsMediaLink extends ActivityStreamsLink -{ - private $linkDict; - - function __construct( - $url = null, - $width = null, - $height = null, - $mediaType = null, // extension - $rel = null, // extension - $duration = null - ) - { - parent::__construct($url, $rel, $mediaType); - $this->linkDict = array( - 'width' => $width, - 'height' => $height, - 'duration' => $duration - ); - } - - function asArray() - { - return array_merge( - parent::asArray(), - array_filter($this->linkDict) - ); - } -} - -/* - * Collection primarily as the root of an Activity Streams doc but can be used as the value - * of extension properties in a variety of situations. - * - * A valid Collection object serialization MUST contain at least the url or items properties. - */ -class JSONActivityCollection { - - /* Non-negative integer specifying the total number of activities within the stream */ - protected $totalItems; - - /* An array containing a listing of Objects of any object type */ - protected $items; - - /* IRI referencing a JSON document containing the full listing of objects in the collection */ - protected $url; - - /** - * Constructor - * - * @param array $items array of activity items - * @param string $url url of a doc list all the objs in the collection - * @param int $totalItems total number of items in the collection - */ - function __construct($items = null, $url = null) - { - $this->items = empty($items) ? array() : $items; - $this->totalItems = count($items); - $this->url = $url; - } - - /** - * Get the total number of items in the collection - * - * @return int total the total - */ - public function getTotalItems() - { - $this->totalItems = count($items); - return $this->totalItems; - } -} - -/** - * A class for representing links in JSON Activities - * - * @category Feed - * @package StatusNet - * @author Zach Copley - * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 - * @link http://status.net/ - */ - -class ActivityStreamsLink -{ - private $linkDict; - - function __construct($url = null, $rel = null, $mediaType = null) - { - // links MUST have a URL - if (empty($url)) { - throw new Exception('Links must have a URL.'); - } - - $this->linkDict = array( - 'url' => $url, - 'rel' => $rel, // extension - 'type' => $mediaType // extension - ); - } - - function asArray() - { - return array_filter($this->linkDict); - } -} -