]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
ProfileAction derivatives somewhat migrated to ManagedAction
authorMikael Nordfeldth <mmn@hethane.se>
Mon, 12 May 2014 20:41:05 +0000 (22:41 +0200)
committerMikael Nordfeldth <mmn@hethane.se>
Mon, 12 May 2014 20:41:05 +0000 (22:41 +0200)
actions/all.php
actions/showstream.php
actions/subqueue.php
actions/usergroups.php
lib/action.php
lib/galleryaction.php
lib/profileaction.php

index a0e0b9a08b71a59ff2c4e7a7ba19f6cd922361b3..2a3c0ef0b622950dc61b19a89eacc0357ed944b7 100644 (file)
@@ -41,11 +41,6 @@ class AllAction extends ProfileAction
 {
     var $notice;
 
-    function isReadOnly($args)
-    {
-        return true;
-    }
-
     protected function prepare(array $args=array())
     {
         parent::prepare($args);
@@ -69,18 +64,6 @@ class AllAction extends ProfileAction
         return true;
     }
 
-    protected function handle()
-    {
-        parent::handle();
-
-        if (!$this->target instanceof Profile) {
-            // TRANS: Client error when user not found for an action.
-            $this->clientError(_('No such user.'));
-        }
-
-        $this->showPage();
-    }
-
     function title()
     {
         if (!empty($this->scoped) && $this->scoped->id == $this->target->id) {
index a2cd880972e3577d81cec1b70008bf0c454e9e60..7c38eca14a7637e99248f0d1f1844c338cc1f2d5 100644 (file)
@@ -72,10 +72,6 @@ class ShowstreamAction extends ProfileAction
         return true;
     }
 
-    function isReadOnly($args)
-    {
-        return true;
-    }
 
     function title()
     {
@@ -103,13 +99,6 @@ class ShowstreamAction extends ProfileAction
         }
     }
 
-    protected function handle()
-    {
-        parent::handle();
-
-        $this->showPage();
-    }
-
     function showContent()
     {
         $this->showNotices();
index b1c914ebda6c0bedf8afe75230e309175d82e0cd..46a656fe5dc829375be4cc64324f9ee748c6b7d9 100644 (file)
@@ -44,20 +44,13 @@ require_once(INSTALLDIR.'/lib/profilelist.php');
  */
 class SubqueueAction extends GalleryAction
 {
-    var $page = null;
+    protected $needLogin = true;
 
-    function isReadOnly($args)
-    {
-        return true;
-    }
-
-    // @todo FIXME: most of this belongs in a base class, sounds common to most group actions?
-    function prepare($args)
+    protected function prepare(array $args=array())
     {
         parent::prepare($args);
 
-        $cur = common_current_user();
-        if (!$cur || $cur->id != $this->profile->id) {
+        if ($this->scoped->id != $this->target->id) {
             // TRANS: Client error displayed when trying to approve group applicants without being a group administrator.
             $this->clientError(_('You may only approve your own pending subscriptions.'));
         }
@@ -70,12 +63,12 @@ class SubqueueAction extends GalleryAction
             // TRANS: Title of the first page showing pending subscribers still awaiting approval.
             // TRANS: %s is the name of the user.
             return sprintf(_('%s subscribers awaiting approval'),
-                           $this->profile->nickname);
+                           $this->target->getNickname());
         } else {
             // TRANS: Title of all but the first page showing pending subscribersmembers still awaiting approval.
             // TRANS: %1$s is the name of the user, %2$d is the page number of the members list.
             return sprintf(_('%1$s subscribers awaiting approval, page %2$d'),
-                           $this->profile->nickname,
+                           $this->target->getNickname(),
                            $this->page);
         }
     }
@@ -95,7 +88,7 @@ class SubqueueAction extends GalleryAction
 
         $cnt = 0;
 
-        $members = $this->profile->getRequests($offset, $limit);
+        $members = $this->target->getRequests($offset, $limit);
 
         if ($members) {
             // @fixme change!
@@ -107,7 +100,7 @@ class SubqueueAction extends GalleryAction
 
         $this->pagination($this->page > 1, $cnt > PROFILES_PER_PAGE,
                           $this->page, 'subqueue',
-                          array('nickname' => $this->profile->nickname)); // urgh
+                          array('nickname' => $this->target->getNickname())); // urgh
     }
 }
 
@@ -134,7 +127,7 @@ class SubQueueListItem extends ProfileListItem
     function showApproveButtons()
     {
         $this->out->elementStart('li', 'entity_approval');
-        $form = new ApproveSubForm($this->out, $this->profile);
+        $form = new ApproveSubForm($this->out, $this->target);
         $form->show();
         $this->out->elementEnd('li');
     }
index e2e2fff97f344ba7110ca687e835254d5be8ea56..fd112ba8ecba7af85d714077deee3dbce97beee9 100644 (file)
@@ -45,16 +45,8 @@ require_once INSTALLDIR.'/lib/grouplist.php';
  * @license  http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
  * @link     http://status.net/
  */
-class UsergroupsAction extends ProfileAction
+class UsergroupsAction extends GalleryAction
 {
-    var $page = null;
-    var $profile = null;
-
-    function isReadOnly($args)
-    {
-        return true;
-    }
-
     function title()
     {
         if ($this->page == 1) {
@@ -70,48 +62,6 @@ class UsergroupsAction extends ProfileAction
         }
     }
 
-    function prepare($args)
-    {
-        parent::prepare($args);
-
-        $nickname_arg = $this->arg('nickname');
-        $nickname = common_canonical_nickname($nickname_arg);
-
-        // Permanent redirect on non-canonical nickname
-
-        if ($nickname_arg != $nickname) {
-            $args = array('nickname' => $nickname);
-            if ($this->arg('page') && $this->arg('page') != 1) {
-                $args['page'] = $this->arg['page'];
-            }
-            common_redirect(common_local_url('usergroups', $args), 301);
-        }
-
-        $this->user = User::getKV('nickname', $nickname);
-
-        if (!$this->user) {
-            // TRANS: Client error displayed requesting groups for a non-existing user.
-            $this->clientError(_('No such user.'), 404);
-        }
-
-        $this->profile = $this->user->getProfile();
-
-        if (!$this->profile) {
-            // TRANS: Error message displayed when referring to a user without a profile.
-            $this->serverError(_('User has no profile.'));
-        }
-
-        $this->page = $this->trimmed('page', 1);
-
-        return true;
-    }
-
-    function handle($args)
-    {
-        parent::handle($args);
-        $this->showPage();
-    }
-
     function showContent()
     {
         $this->elementStart('p', array('id' => 'new_group'));
index 4d917dc69e1fe7d2581b1a604e9a1a10799cb1c8..b7102739d6c36f6890731272d02ce9a10041c0f7 100644 (file)
@@ -166,6 +166,7 @@ class Action extends HTMLOutputter // lawsuit
         return $this->scoped;
     }
 
+    // Must be run _after_ prepare
     public function getActionName()
     {
         return $this->action;
index 975933f6cceeb492c393f985d0d64594b1663b29..4fdd97d468331b0bbf942ad31fc3297cc2c49031 100644 (file)
@@ -30,67 +30,14 @@ define('AVATARS_PER_PAGE', 80);
 // @todo FIXME: Class documentation missing.
 class GalleryAction extends ProfileAction
 {
-    var $profile = null;
-    var $page = null;
-    var $tag = null;
-
-    function prepare($args)
+    protected function handle()
     {
-        parent::prepare($args);
-
-        // FIXME very similar code below
-
-        $nickname_arg = $this->arg('nickname');
-        $nickname = common_canonical_nickname($nickname_arg);
-
-        // Permanent redirect on non-canonical nickname
-
-        if ($nickname_arg != $nickname) {
-            $args = array('nickname' => $nickname);
-            if ($this->arg('page') && $this->arg('page') != 1) {
-                $args['page'] = $this->arg['page'];
-            }
-            common_redirect(common_local_url($this->trimmed('action'), $args), 301);
-        }
-
-        $this->user = User::getKV('nickname', $nickname);
-
-        if (!$this->user) {
-            // TRANS: Client error displayed when trying to perform a gallery action with an unknown user.
-            $this->clientError(_('No such user.'), 404);
-        }
-
-        $this->profile = $this->user->getProfile();
-
-        if (!$this->profile) {
-            // TRANS: Error message displayed when referring to a user without a profile.
-            $this->serverError(_('User has no profile.'));
+        // Post from the tag dropdown; redirect to a GET
+        if ($this->isPost()) {
+            common_redirect($this->selfUrl(), 303);
         }
 
-        $this->page = ($this->arg('page')) ? ($this->arg('page')+0) : 1;
-
-        $this->tag = $this->trimmed('tag');
-        $this->q   = $this->trimmed('q');
-
-        return true;
-    }
-
-    function isReadOnly($args)
-    {
-        return true;
-    }
-
-    function handle($args)
-    {
-        parent::handle($args);
-
-               // Post from the tag dropdown; redirect to a GET
-
-               if ($_SERVER['REQUEST_METHOD'] == 'POST') {
-                   common_redirect($this->selfUrl(), 303);
-               }
-
-        $this->showPage();
+        parent::handle();
     }
 
     function showContent()
@@ -120,14 +67,14 @@ class GalleryAction extends ProfileAction
                            array('href' =>
                                  common_local_url($this->trimmed('action'),
                                                   array('nickname' =>
-                                                        $this->user->nickname))),
+                                                        $this->target->getNickname()))),
                            // TRANS: List element on gallery action page to show all tags.
                            _m('TAGS','All'));
             $this->elementEnd('li');
             $this->elementStart('li', array('id'=>'filter_tags_item'));
             $this->elementStart('form', array('name' => 'bytag',
                                                'id' => 'form_filter_bytag',
-                                              'action' => common_path('?action=' . $this->trimmed('action')),
+                                              'action' => common_path('?action=' . $this->getActionName()),
                                                'method' => 'post'));
             $this->elementStart('fieldset');
             // TRANS: Fieldset legend on gallery action page.
@@ -136,7 +83,7 @@ class GalleryAction extends ProfileAction
             $this->dropdown('tag', _('Tag'), $content,
                             // TRANS: Dropdown field title on gallery action page for a list containing tags.
                             _('Choose a tag to narrow list.'), false, $tag);
-            $this->hidden('nickname', $this->user->nickname);
+            $this->hidden('nickname', $this->target->getNickname());
             // TRANS: Submit button text on gallery action page.
             $this->submit('submit', _m('BUTTON','Go'));
             $this->elementEnd('fieldset');
@@ -154,8 +101,8 @@ class GalleryAction extends ProfileAction
         $profile_tag = new Notice_tag();
         $profile_tag->query('SELECT DISTINCT(tag) ' .
                             'FROM profile_tag, subscription ' .
-                            'WHERE tagger = ' . $this->profile->id . ' ' .
-                            'AND ' . $usr . ' = ' . $this->profile->id . ' ' .
+                            'WHERE tagger = ' . $this->target->id . ' ' .
+                            'AND ' . $usr . ' = ' . $this->target->id . ' ' .
                             'AND ' . $lst . ' = tagged ' .
                             'AND tagger != tagged');
         $tags = array();
@@ -173,7 +120,7 @@ class GalleryAction extends ProfileAction
 
     function showProfileBlock()
     {
-        $block = new AccountProfileBlock($this, $this->profile);
+        $block = new AccountProfileBlock($this, $this->target);
         $block->show();
     }
 }
index 02f0bbad5441e1a45a823ba4fcec49bf7efe9265..83b3170bed170c48e2d907908565c978346c9ba5 100644 (file)
@@ -46,7 +46,7 @@ require_once INSTALLDIR.'/lib/groupminilist.php';
  * @license  http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
  * @link     http://status.net/
  */
-class ProfileAction extends Action
+class ProfileAction extends ManagedAction
 {
     var $page    = null;
     var $tag     = null;
@@ -68,7 +68,7 @@ class ProfileAction extends Action
                 if ($this->arg('page') && $this->arg('page') != 1) {
                     $args['page'] = $this->arg['page'];
                 }
-                common_redirect(common_local_url($this->trimmed('action'), $args), 301);
+                common_redirect(common_local_url($this->getActionName(), $args), 301);
             }
             $this->user = User::getKV('nickname', $nickname);
 
@@ -82,15 +82,16 @@ class ProfileAction extends Action
             $id = (int)$this->arg('id');
             $this->target = Profile::getKV('id', $id);
 
-            if (!($this->target instanceof Profile)) {
+            if (!$this->target instanceof Profile) {
                 // TRANS: Error message displayed when referring to a user without a profile.
                 $this->serverError(_m('Profile ID does not exist.'));
             }
 
-            $user = User::getKV('id', $this->target->id);
-            if ($user instanceof User) {
-                // This is a local user -- send to their regular profile.
-                common_redirect(common_local_url('showstream', array('nickname' => $user->nickname)));
+            if ($this->target->isLocal()) {
+                // For local users when accessed by id number, redirect to
+                // the same action but using the nickname as argument.
+                common_redirect(common_local_url($this->getActionName(),
+                                                array('nickname'=>$user->getNickname())));
             }
         }
 
@@ -108,6 +109,11 @@ class ProfileAction extends Action
         return true;
     }
 
+    function isReadOnly($args)
+    {
+        return true;
+    }
+
     function showSections()
     {
         $this->showSubscriptions();
@@ -127,7 +133,7 @@ class ProfileAction extends Action
     private function statsSectionLink($actionClass, $title, $cssClass='')
     {
         $this->element('a', array('href' => common_local_url($actionClass,
-                                                             array('nickname' => $this->profile->nickname)),
+                                                             array('nickname' => $this->target->getNickname())),
                                   'class' => $cssClass),
                        $title);
     }
@@ -141,11 +147,11 @@ class ProfileAction extends Action
             // TRANS: H2 text for user subscription statistics.
             $this->statsSectionLink('subscriptions', _('Following'));
             $this->text(' ');
-            $this->text($this->profile->subscriptionCount());
+            $this->text($this->target->subscriptionCount());
             $this->elementEnd('h2');
         
             try {
-                $profile = $this->profile->getSubscribed(0, PROFILES_PER_MINILIST + 1);
+                $profile = $this->target->getSubscribed(0, PROFILES_PER_MINILIST + 1);
                 $pml = new ProfileMiniList($profile, $this);
                 $pml->show();
             } catch (NoResultException $e) {
@@ -169,11 +175,11 @@ class ProfileAction extends Action
             // TRANS: H2 text for user subscriber statistics.
             $this->statsSectionLink('subscribers', _('Followers'));
             $this->text(' ');
-            $this->text($this->profile->subscriberCount());
+            $this->text($this->target->subscriberCount());
             $this->elementEnd('h2');
 
             try {
-                $profile = $this->profile->getSubscribers(0, PROFILES_PER_MINILIST + 1);
+                $profile = $this->target->getSubscribers(0, PROFILES_PER_MINILIST + 1);
                 $sml = new SubscribersMiniList($profile, $this);
                 $sml->show();
             } catch (NoResultException $e) {
@@ -189,8 +195,8 @@ class ProfileAction extends Action
 
     function showStatistics()
     {
-        $notice_count = $this->profile->noticeCount();
-        $age_days     = (time() - strtotime($this->profile->created)) / 86400;
+        $notice_count = $this->target->noticeCount();
+        $age_days     = (time() - strtotime($this->target->created)) / 86400;
         if ($age_days < 1) {
             // Rather than extrapolating out to a bajillion...
             $age_days = 1;
@@ -203,7 +209,7 @@ class ProfileAction extends Action
         // TRANS: H2 text for user statistics.
         $this->element('h2', null, _('Statistics'));
 
-        $profile = $this->profile;
+        $profile = $this->target;
         $actionParams = array('nickname' => $profile->nickname);
         $stats = array(
             array(
@@ -258,7 +264,7 @@ class ProfileAction extends Action
 
     function showGroups()
     {
-        $groups = $this->profile->getGroups(0, GROUPS_PER_MINILIST + 1);
+        $groups = $this->target->getGroups(0, GROUPS_PER_MINILIST + 1);
 
         $this->elementStart('div', array('id' => 'entity_groups',
                                          'class' => 'section'));
@@ -267,11 +273,11 @@ class ProfileAction extends Action
             // TRANS: H2 text for user group membership statistics.
             $this->statsSectionLink('usergroups', _('Groups'));
             $this->text(' ');
-            $this->text($this->profile->getGroupCount());
+            $this->text($this->target->getGroupCount());
             $this->elementEnd('h2');
 
             if ($groups instanceof User_group) {
-                $gml = new GroupMiniList($groups, $this->profile, $this);
+                $gml = new GroupMiniList($groups, $this->target, $this);
                 $cnt = $gml->show();
             } else {
                 // TRANS: Text for user user group membership statistics if user is not a member of any group.
@@ -285,9 +291,7 @@ class ProfileAction extends Action
 
     function showLists()
     {
-        $cur = common_current_user();
-
-        $lists = $this->profile->getLists($cur);
+        $lists = $this->target->getLists($this->scoped);
 
         if ($lists->N > 0) {
             $this->elementStart('div', array('id' => 'entity_lists',
@@ -296,7 +300,7 @@ class ProfileAction extends Action
             if (Event::handle('StartShowListsMiniList', array($this))) {
 
                 $url = common_local_url('peopletagsbyuser',
-                                        array('nickname' => $this->profile->nickname));
+                                        array('nickname' => $this->target->getNickname()));
 
                 $this->elementStart('h2');
                 $this->element('a',
@@ -317,7 +321,7 @@ class ProfileAction extends Action
                         $url = $lists->mainpage;
                     } else {
                         $url = common_local_url('showprofiletag',
-                                                array('tagger' => $this->profile->nickname,
+                                                array('tagger' => $this->target->getNickname(),
                                                       'tag'    => $lists->tag));
                     }
                     if (!$first) {