]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - actions/tag.php
Mark OembedAction, XrdAction, and (plugin) AutocompleteAction as read-only. Tweaked...
[quix0rs-gnu-social.git] / actions / tag.php
index 47420e4c33c799ee83136f54f003e8116bc0dfcc..7c6f99d92bac58cb6ef98d8641c425f2169b5653 100644 (file)
@@ -1,7 +1,7 @@
 <?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);
@@ -42,6 +45,13 @@ class TagAction extends Action
 
         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){
+            // TRANS: Server error when page not found (404)
+            $this->serverError(_('No such page.'),$code=404);
+        }
+
         return true;
     }
 
@@ -49,16 +59,14 @@ class TagAction extends Action
     {
         $pop = new PopularNoticeSection($this);
         $pop->show();
-        $freqatt = new FrequentAttachmentSection($this);
-        $freqatt->show();
     }
 
     function title()
     {
         if ($this->page == 1) {
-            return sprintf(_("Notices tagged with %s"), $this->tag);
+            return sprintf(_('Notices tagged with %s'), $this->tag);
         } else {
-            return sprintf(_("Notices tagged with %s, page %d"),
+            return sprintf(_('Notices tagged with %1$s, page %2$d'),
                            $this->tag,
                            $this->page);
         }
@@ -74,36 +82,37 @@ class TagAction extends Action
     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('ApiTimelineTag',
+                                               array('format' => 'rss',
+                                                     'tag' => $this->tag)),
+                              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)),
+                              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);
+        if(Event::handle('StartTagShowContent', array($this))) {
+            
+            $nl = new NoticeList($this->notice, $this);
 
-        $nl = new NoticeList($notice, $this);
+            $cnt = $nl->show();
 
-        $cnt = $nl->show();
+            $this->pagination($this->page > 1, $cnt > NOTICES_PER_PAGE,
+                              $this->page, 'tag', array('tag' => $this->tag));
 
-        $this->pagination($this->page > 1, $cnt > NOTICES_PER_PAGE,
-                          $this->page, 'tag', array('tag' => $this->tag));
+            Event::handle('EndTagShowContent', array($this));
+        }
     }
 
     function isReadOnly($args)