]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - actions/tag.php
Merge branch 'master' into social-master
[quix0rs-gnu-social.git] / actions / tag.php
index 7c6f99d92bac58cb6ef98d8641c425f2169b5653..8631082467b44ccf71cdf1bb7599dd455fcd7a00 100644 (file)
  * 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;
@@ -48,63 +49,68 @@ class TagAction extends Action
         $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);
+            // TRANS: Client error when page not found (404).
+            $this->clientError(_('No such page.'), 404);
         }
 
         return true;
     }
 
-    function showSections()
-    {
-        $pop = new PopularNoticeSection($this);
-        $pop->show();
-    }
-
     function title()
     {
         if ($this->page == 1) {
+            // TRANS: Title for first page of notices with tags.
+            // TRANS: %s is the tag.
             return sprintf(_('Notices tagged with %s'), $this->tag);
         } else {
+            // TRANS: Title for all but the first page of notices with tags.
+            // TRANS: %1$s is the tag, %2$d is the page number.
             return sprintf(_('Notices tagged with %1$s, page %2$d'),
                            $this->tag,
                            $this->page);
         }
     }
 
-    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);
+
+            $nl = new PrimaryNoticeList($this->notice, $this, array('show_n'=>NOTICES_PER_PAGE));
 
             $cnt = $nl->show();
 
@@ -115,7 +121,7 @@ class TagAction extends Action
         }
     }
 
-    function isReadOnly($args)
+    function isReadOnly(array $args=array())
     {
         return true;
     }