* @link http://status.net/
*/
-if (!defined('GNUSOCIAL')) { exit(1); }
+if (!defined('GNUSOCIAL')) {
+ exit(1);
+}
/**
* A class for generating JSON documents that represent an Activity Streams
const CONTENT_TYPE = 'application/json; charset=utf-8';
/* Top level array representing the document */
- protected $doc = array();
+ protected $doc = [];
/* The current authenticated user */
protected $cur;
* Constructor
*
* @param User $cur the current authenticated user
+ * @throws UserNoProfileException
*/
- function __construct($cur = null, $title = null, array $items=[], $links = null, $url = null)
+ public function __construct($cur = null, $title = null, array $items = [], $links = null, $url = null)
{
parent::__construct($items, $url);
}
/* Array of links associated with the document */
- $this->links = empty($links) ? array() : $items;
+ $this->links = empty($links) ? [] : $items;
/* URL of a document, this document? containing a list of all the items in the stream */
- if (!empty($this->url)) {
- $this->url = $this->url;
+ if (!empty($url)) {
+ $this->url = $url;
}
}
/**
* Set the title of the document
*
- * @param String $title the title
+ * @param string $title the title
*/
- function setTitle($title)
+ public function setTitle($title)
{
$this->title = $title;
}
- function setUrl($url)
+ public function setUrl($url)
{
$this->url = $url;
}
* Add more than one Item to the document
*
* @param mixed $notices an array of Notice objects or handle
- *
+ * @throws ClientException
+ * @throws ServerException
*/
- function addItemsFromNotices($notices)
+ public function addItemsFromNotices($notices)
{
if (is_array($notices)) {
foreach ($notices as $notice) {
* @param Notice $notice a Notice to add
*/
- function addItemFromNotice($notice)
+ public function addItemFromNotice($notice)
{
- $act = $notice->asActivity($this->scoped);
+ try {
+ $act = $notice->asActivity($this->scoped);
+ } catch (Exception $e) {
+ // We know exceptions like
+ // "No result found on Fave lookup."
+ // may happen because of deleted notices etc.
+ // These are irrelevant for the feed purposes.
+ return;
+ }
$act->extra[] = $notice->noticeInfo($this->scoped);
array_push($this->items, $act->asArray());
$this->count++;
*
* @param string $url the URL for the link
* @param string $rel the link relationship
+ * @throws Exception
*/
- function addLink($url = null, $rel = null, $mediaType = null)
+ public function addLink($url = null, $rel = null, $mediaType = null)
{
$link = new ActivityStreamsLink($url, $rel, $mediaType);
array_push($this->links, $link->asArray());
*
* @return string encoded JSON output
*/
- function asString()
+ public function asString()
{
$this->doc['generator'] = 'GNU social ' . GNUSOCIAL_VERSION; // extension
$this->doc['title'] = $this->title;
- $this->doc['url'] = $this->url;
+ $this->doc['url'] = $this->url;
$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
}
-
}