* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); }
+if (!defined('GNUSOCIAL')) { exit(1); }
-class TagAction extends Action
+// @todo FIXME: documentation missing.
+class TagAction extends ManagedAction
{
-
var $notice;
+ var $tag;
+ var $page;
- function prepare($args)
+ protected function prepare(array $args=array())
{
parent::prepare($args);
+
$taginput = $this->trimmed('tag');
$this->tag = common_canonical_tag($taginput);
- if (!$this->tag) {
+ if (empty($this->tag)) {
common_redirect(common_local_url('publictagcloud'), 301);
- return false;
}
- if ($this->tag != $taginput) {
- common_redirect(common_local_url('tag', array('tag' => $this->tag)),
- 301);
- return false;
+ // after common_canonical_tag we have a lowercase, no-specials tag string
+ if ($this->tag !== $taginput) {
+ common_redirect(common_local_url('tag', array('tag' => $this->tag)), 301);
}
$this->page = ($this->arg('page')) ? ($this->arg('page')+0) : 1;
$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){
- // TRANS: Server error when page not found (404)
+ // TRANS: Server error when page not found (404).
$this->serverError(_('No such page.'),$code=404);
}
return true;
}
- function showSections()
- {
- $pop = new PopularNoticeSection($this);
- $pop->show();
- }
-
function title()
{
if ($this->page == 1) {
}
}
- function handle($args)
- {
- parent::handle($args);
-
- $this->showPage();
- }
-
function getFeeds()
{
- return array(new Feed(Feed::RSS1,
+ return array(new Feed(Feed::JSON,
+ common_local_url('ApiTimelineTag',
+ array('format' => 'as',
+ 'tag' => $this->tag)),
+ // TRANS: Link label for feed on "notices with tag" page.
+ // TRANS: %s is the tag the feed is for.
+ sprintf(_('Notice feed for tag %s (Activity Streams JSON)'),
+ $this->tag)),
+ new Feed(Feed::RSS1,
common_local_url('tagrss',
array('tag' => $this->tag)),
+ // TRANS: Link label for feed on "notices with tag" page.
+ // TRANS: %s is the tag the feed is for.
sprintf(_('Notice feed for tag %s (RSS 1.0)'),
$this->tag)),
new Feed(Feed::RSS2,
common_local_url('ApiTimelineTag',
array('format' => 'rss',
'tag' => $this->tag)),
+ // TRANS: Link label for feed on "notices with tag" page.
+ // TRANS: %s is the tag the feed is for.
sprintf(_('Notice feed for tag %s (RSS 2.0)'),
$this->tag)),
new Feed(Feed::ATOM,
common_local_url('ApiTimelineTag',
array('format' => 'atom',
'tag' => $this->tag)),
+ // TRANS: Link label for feed on "notices with tag" page.
+ // TRANS: %s is the tag the feed is for.
sprintf(_('Notice feed for tag %s (Atom)'),
$this->tag)));
}
- function showContent()
+ protected function showContent()
{
if(Event::handle('StartTagShowContent', array($this))) {
-
+
$nl = new NoticeList($this->notice, $this);
$cnt = $nl->show();