* @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);
{
$notices = array();
- $profile = ($this->auth_user) ? $this->auth_user->getProfile() : null;
-
- $stream = new PublicNoticeStream($profile);
+ $stream = $this->getStream();
$notice = $stream->getNotices(($this->page - 1) * $this->count,
$this->count,
return $notices;
}
+ protected function getStream()
+ {
+ return new PublicNoticeStream($this->scoped);
+ }
+
/**
* Is this action read only?
*
// Network public tag cloud?
}
- /**
- * FIXME: Network public feed! Get a template from PublicAction
- */
function getFeeds()
{
- return array();
+ return array(new Feed(Feed::JSON,
+ common_local_url('ApiTimelineNetworkPublic',
+ array('format' => 'as')),
+ // TRANS: Link description for public timeline feed.
+ _('Public Timeline Feed (Activity Streams JSON)')),
+ new Feed(Feed::RSS1, common_local_url('publicrss'),
+ // TRANS: Link description for public timeline feed.
+ _('Public Timeline Feed (RSS 1.0)')),
+ new Feed(Feed::RSS2,
+ common_local_url('ApiTimelineNetworkPublic',
+ array('format' => 'rss')),
+ // TRANS: Link description for public timeline feed.
+ _('Public Timeline Feed (RSS 2.0)')),
+ new Feed(Feed::ATOM,
+ common_local_url('ApiTimelineNetworkPublic',
+ array('format' => 'atom')),
+ // TRANS: Link description for public timeline feed.
+ _('Public Timeline Feed (Atom)')));
}
}
array('action' => 'ApiTimelinePublic',
'format' => '(xml|json|rss|atom|as)'));
+ // this is not part of the Twitter API. Also may require authentication depending on server config!
+ $m->connect('api/statuses/networkpublic_timeline.:format',
+ array('action' => 'ApiTimelineNetworkPublic',
+ 'format' => '(xml|json|rss|atom|as)'));
+
$m->connect('api/statuses/friends_timeline/:id.:format',
array('action' => 'ApiTimelineFriends',
'id' => Nickname::INPUT_FMT,