X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=lib%2Fprofileaction.php;h=3dc28a7cc48fd56ec6f4de30588660373e2d1584;hb=01a4ab30dc1dfbf4d6ee6a42a7f8f45a1a42894d;hp=5a5d526e42065f6bd5974c535e4c0e516000c644;hpb=e868ac41cd8221c45dfed56a43d155fb2307a7e4;p=quix0rs-gnu-social.git diff --git a/lib/profileaction.php b/lib/profileaction.php index 5a5d526e42..3dc28a7cc4 100644 --- a/lib/profileaction.php +++ b/lib/profileaction.php @@ -48,6 +48,36 @@ abstract class ProfileAction extends ManagedAction protected $target = null; // Profile that we're showing + protected function doPreparation() + { + // showstream requires a nickname + $nickname_arg = $this->trimmed('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->getActionName(), $args), 301); + } + + try { + $user = User::getByNickname($nickname); + } catch (NoSuchUserException $e) { + $group = Local_group::getKV('nickname', $nickname); + if ($group instanceof Local_group) { + common_redirect($group->getProfile()->getUrl()); + } + + // No user nor group found, throw the NoSuchUserException again + throw $e; + } + + $this->target = $user->getProfile(); + } + protected function prepare(array $args=array()) { // this will call ->doPreparation() which child classes use to set $this->target @@ -65,11 +95,6 @@ abstract class ProfileAction extends ManagedAction return true; } - protected function profileActionPreparation() - { - // Nothing to do by default. - } - public function getTarget() { if (!$this->target instanceof Profile) {