]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
Trac #1159: Fix peopletag pagination. Also phpcs cleanup.
authorZach Copley <zach@controlyourself.ca>
Sun, 8 Feb 2009 21:25:48 +0000 (13:25 -0800)
committerZach Copley <zach@controlyourself.ca>
Sun, 8 Feb 2009 21:25:48 +0000 (13:25 -0800)
actions/peopletag.php

index 3578c53fdf0d8d7f473b79ab382ba5253768d90e..6b1e34f1ab47db2b1c2aa4d2f273171233ed23a2 100644 (file)
@@ -1,9 +1,12 @@
 <?php
-/*
- * Laconica - a distributed open-source microblogging tool
- * Copyright (C) 2008, Controlez-Vous, Inc.
+/**
+ * Laconica, the distributed open-source microblogging tool
  *
- * This program is free software: you can redistribute it and/or modify
+ * Action for showing profiles self-tagged with a given tag
+ *
+ * PHP version 5
+ *
+ * LICENCE: 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
  * the Free Software Foundation, either version 3 of the License, or
  * (at your option) any later version.
  *
  * You should have received a copy of the GNU Affero General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * @category  Action
+ * @package   Laconica
+ * @author    Evan Prodromou <evan@controlyourself.ca>
+ * @author    Zach Copley <zach@controlyourself.ca>
+ * @copyright 2009 Control Yourself, Inc.
+ * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link      http://laconi.ca/
  */
 
-if (!defined('LACONICA')) { exit(1); }
+if (!defined('LACONICA')) {
+    exit(1);
+}
 
 require_once INSTALLDIR.'/lib/profilelist.php';
 
+/**
+ * This class outputs a paginated list of profiles self-tagged with a given tag
+ *
+ * @category Output
+ * @package  Laconica
+ * @author   Evan Prodromou <evan@controlyourself.ca>
+ * @author   Zach Copley <zach@controlyourself.ca>
+ * @license  http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link     http://laconi.ca/
+ *
+ * @see      Action
+ */
+
 class PeopletagAction extends Action
 {
-    
-    var $tag = null;
+
+    var $tag  = null;
     var $page = null;
-        
-    function handle($args)
+
+    /**
+     * For initializing members of the class.
+     *
+     * @param array $argarray misc. arguments
+     *
+     * @return boolean true
+     */
+    function prepare($argarray)
     {
-        parent::handle($args);    
-        
-        parent::prepare($args);
+        parent::prepare($argarray);
 
         $this->tag = $this->trimmed('tag');
 
         if (!common_valid_profile_tag($this->tag)) {
-            $this->clientError(sprintf(_('Not a valid people tag: %s'), $this->tag));
+            $this->clientError(sprintf(_('Not a valid people tag: %s'),
+                $this->tag));
             return;
         }
 
-        $this->page = $this->trimmed('page');
+        $this->page = ($this->arg('page')) ? $this->arg('page') : 1;
 
-        if (!$this->page) {
-            $this->page = 1;
-        }
-        
+        common_set_returnto($this->selfUrl());
+
+        return true;
+    }
+
+    /**
+     * Handler method
+     *
+     * @param array $argarray is ignored since it's now passed in in prepare()
+     *
+     * @return boolean is read only action?
+     */
+    function handle($argarray)
+    {
+        parent::handle($argarray);
         $this->showPage();
     }
-    
+
+    /**
+     * Whips up a query to get a list of profiles based on the provided
+     * people tag and page, initalizes a ProfileList widget, and displays
+     * it to the user.
+     *
+     * @return nothing
+     */
     function showContent()
     {
-        
+
         $profile = new Profile();
 
-        $offset = ($page-1)*PROFILES_PER_PAGE;
-        $limit = PROFILES_PER_PAGE + 1;
-        
-        if (common_config('db','type') == 'pgsql') {
+        $offset = ($this->page - 1) * PROFILES_PER_PAGE;
+        $limit  = PROFILES_PER_PAGE + 1;
+
+        if (common_config('db', 'type') == 'pgsql') {
             $lim = ' LIMIT ' . $limit . ' OFFSET ' . $offset;
         } else {
             $lim = ' LIMIT ' . $offset . ', ' . $limit;
         }
 
-        # XXX: memcached this
-        
+        // XXX: memcached this
+
         $qry =  'SELECT profile.* ' .
                 'FROM profile JOIN profile_tag ' .
                 'ON profile.id = profile_tag.tagger ' .
                 'WHERE profile_tag.tagger = profile_tag.tagged ' .
                 'AND tag = "%s" ' .
-                'ORDER BY profile_tag.modified DESC';
-        
+                'ORDER BY profile_tag.modified DESC%s';
+
         $profile->query(sprintf($qry, $this->tag, $lim));
 
-        $pl = new ProfileList($profile, null, $this);
+        $pl  = new ProfileList($profile, null, $this);
         $cnt = $pl->show();
-                
+
         $this->pagination($this->page > 1,
                           $cnt > PROFILES_PER_PAGE,
                           $this->page,
-                          $this->trimmed('action'),
+                          'peopletag',
                           array('tag' => $this->tag));
     }
-    
-    function title() 
+
+    /**
+     * Returns the page title
+     *
+     * @return string page title
+     */
+    function title()
     {
-        return sprintf( _('Users self-tagged with %s - page %d'), $this->tag, $this->page);
+        return sprintf(_('Users self-tagged with %s - page %d'),
+            $this->tag, $this->page);
     }
-    
+
 }