<?php
/*
- * Laconica - a distributed open-source microblogging tool
- * Copyright (C) 2008, Controlez-Vous, Inc.
+ * StatusNet - the distributed open-source microblogging tool
+ * Copyright (C) 2008, 2009, StatusNet, Inc.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-if (!defined('LACONICA')) { exit(1); }
+if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); }
class TagAction extends Action
{
+
+ var $notice;
+
function prepare($args)
{
parent::prepare($args);
common_set_returnto($this->selfUrl());
+ $this->notice = Notice_tag::getStream($this->tag, (($this->page-1)*NOTICES_PER_PAGE), NOTICES_PER_PAGE + 1);
+
+ if($this->page > 1 && $this->notice->N == 0){
+ $this->serverError(_('No such page'),$code=404);
+ }
+
return true;
}
{
$pop = new PopularNoticeSection($this);
$pop->show();
-
- $notice_tag = new Notice_tag;
- $query = 'select file_id, count(file_id) as c from notice_tag join file_to_post on post_id = notice_id where tag="' . $notice_tag->escape($this->tag) . '" group by file_id order by c desc';
- $notice_tag->query($query);
- $this->elementStart('ol');
- while ($notice_tag->fetch()) {
- $this->elementStart('li');
- $this->element('a', array('class' => 'attachment', 'href' => common_local_url('attachment', array('attachment' => $notice_tag->file_id))), "Attachment tagged {$notice_tag->c} times");
- $this->elementEnd('li');
- }
- $this->elementEnd('ol');
}
function title()
function getFeeds()
{
return array(new Feed(Feed::RSS1,
- common_local_url('tagrss', array('tag' => $this->tag)),
- sprintf(_('Feed for tag %s'), $this->tag)));
- }
-
- /**
- * Output document relationship links
- *
- * @return void
- */
- function showRelationshipLinks()
- {
- $this->sequenceRelationships($this->page > 1, $this->count > NOTICES_PER_PAGE, // FIXME
- $this->page, 'tag', array('tag' => $this->tag));
- }
-
- function showPageNotice()
- {
- return sprintf(_('Messages tagged "%s", most recent first'), $this->tag);
+ common_local_url('tagrss',
+ array('tag' => $this->tag)),
+ sprintf(_('Notice feed for tag %s (RSS 1.0)'),
+ $this->tag)),
+ new Feed(Feed::RSS2,
+ common_local_url('api',
+ array('apiaction' => 'tags',
+ 'method' => 'timeline',
+ 'argument' => $this->tag.'.rss')),
+ sprintf(_('Notice feed for %s group (RSS 2.0)'),
+ $this->tag)),
+ new Feed(Feed::ATOM,
+ common_local_url('api',
+ array('apiaction' => 'tags',
+ 'method' => 'timeline',
+ 'argument' => $this->tag.'.atom')),
+ sprintf(_('Notice feed for tag %s (Atom)'),
+ $this->tag)));
}
function showContent()
{
- $notice = Notice_tag::getStream($this->tag, (($this->page-1)*NOTICES_PER_PAGE), NOTICES_PER_PAGE + 1);
-
- $nl = new NoticeList($notice, $this);
+ $nl = new NoticeList($this->notice, $this);
$cnt = $nl->show();