exit(1);
}
-require_once INSTALLDIR . '/lib/apiprivateauth.php';
-
/**
* Returns the most recent notices (default 20) posted by everybody
*
* @return boolean success flag
*
*/
- function prepare($args)
+ protected function prepare(array $args=array())
{
parent::prepare($args);
*
* Just show the notices
*
- * @param array $args $_REQUEST data (unused)
- *
* @return void
*/
- function handle($args)
+ protected function handle()
{
- parent::handle($args);
+ parent::handle();
$this->showTimeline();
}
+ function title()
+ {
+ // TRANS: Title for site timeline. %s is the GNU social sitename.
+ return sprintf(_("%s public timeline"), common_config('site', 'name'));
+ }
+
/**
* Show the timeline of notices
*
*/
function showTimeline()
{
- $sitename = common_config('site', 'name');
+ $nonapi_action = substr($this->action, strlen('apitimeline')); // Just so we don't need to set this explicitly
+
$sitelogo = (common_config('site', 'logo')) ? common_config('site', 'logo') : Theme::path('logo.png');
- // TRANS: Title for site timeline. %s is the StatusNet sitename.
- $title = sprintf(_("%s public timeline"), $sitename);
+ $title = $this->title();
$taguribase = TagURI::base();
- $id = "tag:$taguribase:PublicTimeline";
- $link = common_local_url('public');
+ $id = "tag:$taguribase:" . ucfirst($nonapi_action) . 'Timeline'; // Public or Networkpublic probably
+ $link = common_local_url($nonapi_action);
$self = $this->getSelfUri();
- // TRANS: Subtitle for site timeline. %s is the StatusNet sitename.
- $subtitle = sprintf(_("%s updates from everyone!"), $sitename);
+ // TRANS: Subtitle for site timeline. %s is the GNU social sitename.
+ $subtitle = sprintf(_("%s updates from everyone!"), common_config('site', 'name'));
switch($this->format) {
case 'xml':
$atom->setSubtitle($subtitle);
$atom->setLogo($sitelogo);
$atom->setUpdated('now');
- $atom->addLink(common_local_url('public'));
+ $atom->addLink(common_local_url($nonapi_action));
$atom->setSelfLink($self);
$atom->addEntryFromNotices($this->notices);
case 'json':
$this->showJsonTimeline($this->notices);
break;
+ case 'as':
+ header('Content-Type: ' . ActivityStreamJSONDocument::CONTENT_TYPE);
+ $doc = new ActivityStreamJSONDocument($this->auth_user);
+ $doc->setTitle($title);
+ $doc->addLink($link, 'alternate', 'text/html');
+ $doc->addItemsFromNotices($this->notices);
+ $this->raw($doc->asString());
+ break;
default:
- // TRANS: Client error displayed when trying to handle an unknown API method.
+ // TRANS: Client error displayed when coming across a non-supported API method.
$this->clientError(_('API method not found.'), $code = 404);
break;
}
{
$notices = array();
- $notice = Notice::publicStream(
- ($this->page - 1) * $this->count, $this->count, $this->since_id,
- $this->max_id
- );
+ $stream = $this->getStream();
- while ($notice->fetch()) {
- $notices[] = clone($notice);
- }
+ $notice = $stream->getNotices(($this->page - 1) * $this->count,
+ $this->count,
+ $this->since_id,
+ $this->max_id);
+
+ $notices = $notice->fetchAll();
+
+ NoticeList::prefill($notices);
return $notices;
}
+ protected function getStream()
+ {
+ return new PublicNoticeStream($this->scoped);
+ }
+
/**
* Is this action read only?
*
*
* @return boolean true
*/
- function isReadOnly($args)
+ function isReadOnly(array $args=array())
{
return true;
}