$page = ($this->arg('page')) ? ($this->arg('page')+0) : 1;
- common_show_header(_t('Public timeline'), array($this, 'show_header'));
+ header('X-XRDS-Location: '. common_local_url('publicxrds'));
+
+ common_show_header(_t('Public timeline'),
+ array($this, 'show_header'), NULL,
+ array($this, 'show_top'));
# XXX: Public sidebar here?
common_show_footer();
}
+ function show_top() {
+ if (common_logged_in()) {
+ common_notice_form('public');
+ }
+ }
+
function show_header() {
common_element('link', array('rel' => 'alternate',
'href' => common_local_url('publicrss'),
'type' => 'application/rss+xml',
'title' => _t('Public Stream Feed')));
+ # for client side of OpenID authentication
+ common_element('meta', array('http-equiv' => 'X-XRDS-Location',
+ 'content' => common_local_url('publicxrds')));
}
function show_notices($page) {
$notice = DB_DataObject::factory('notice');
- # XXX: filter out private notifications
+ # FIXME: bad performance
+
+ $notice->whereAdd('EXISTS (SELECT user.id from user where user.id = notice.profile_id)');
$notice->orderBy('created DESC');
$cnt = $notice->find();
- common_element_start('div', 'notices');
-
- for ($i = 0; $i < min($cnt, NOTICES_PER_PAGE); $i++) {
- if ($notice->fetch()) {
- $this->show_notice($notice);
- } else {
- // shouldn't happen!
- break;
+ if ($cnt > 0) {
+ common_element_start('ul', array('id' => 'notices'));
+ for ($i = 0; $i < min($cnt, NOTICES_PER_PAGE); $i++) {
+ if ($notice->fetch()) {
+ $this->show_notice($notice);
+ } else {
+ // shouldn't happen!
+ break;
+ }
}
- }
-
- if ($page > 1) {
- common_element_start('span', 'floatLeft width25');
- common_element('a', array('href' => common_local_url('public',
- array('page' => $page-1)),
- 'class' => 'newer'),
- _t('Newer'));
- common_element_end('span');
+ common_element_end('ul');
}
- if ($cnt > NOTICES_PER_PAGE) {
- common_element_start('span', 'floatRight width25');
- common_element('a', array('href' => common_local_url('public',
- array('page' => $page+1)),
- 'class' => 'older'),
- _t('Older'));
- common_element_end('span');
- }
- common_element_end('div');
+ common_pagination($page > 1, $cnt > NOTICES_PER_PAGE,
+ $page, 'public');
}
}