X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=actions%2Fregister.php;h=7ab04534f6ffaf6ae72d7ebe6d237ff6f5581438;hb=ab93bb009c8533c8847aafe76ba9774d9d74e7ca;hp=47ac062713860473b6363426f1bfb55a1ebebb09;hpb=0925b968406c1035f408b6efdf7f3cdbef02e6f2;p=quix0rs-gnu-social.git diff --git a/actions/register.php b/actions/register.php index 47ac062713..7ab04534f6 100644 --- a/actions/register.php +++ b/actions/register.php @@ -27,9 +27,7 @@ * @link http://status.net/ */ -if (!defined('STATUSNET') && !defined('LACONICA')) { - exit(1); -} +if (!defined('GNUSOCIAL') && !defined('STATUSNET')) { exit(1); } /** * An action for registering a new user account @@ -64,7 +62,7 @@ class RegisterAction extends Action * @param $args * @return string title */ - function prepare($args) + protected function prepare(array $args=array()) { parent::prepare($args); $this->code = $this->trimmed('code'); @@ -79,15 +77,13 @@ class RegisterAction extends Action if (common_config('site', 'inviteonly') && empty($this->code)) { // TRANS: Client error displayed when trying to register to an invite-only site without an invitation. $this->clientError(_('Sorry, only invited people can register.')); - return false; } if (!empty($this->code)) { - $this->invite = Invitation::staticGet('code', $this->code); - if (empty($this->invite)) { + $this->invite = Invitation::getKV('code', $this->code); + if (!$this->invite instanceof Invitation) { // TRANS: Client error displayed when trying to register to an invite-only site without a valid invitation. $this->clientError(_('Sorry, invalid invitation code.')); - return false; } // Store this in case we need it common_ensure_session(); @@ -181,20 +177,20 @@ class RegisterAction extends Action $code = $this->trimmed('code'); if ($code) { - $invite = Invitation::staticGet($code); + $invite = Invitation::getKV($code); } if (common_config('site', 'inviteonly') && !($code && $invite)) { // TRANS: Client error displayed when trying to register to an invite-only site without an invitation. $this->clientError(_('Sorry, only invited people can register.')); - return; } // Input scrubbing try { - $nickname = Nickname::normalize($nickname); + $nickname = Nickname::normalize($nickname, true); } catch (NicknameException $e) { $this->showForm($e->getMessage()); + return; } $email = common_canonical_email($email); @@ -205,26 +201,16 @@ class RegisterAction extends Action } else if ($email && !Validate::email($email, common_config('email', 'check_domain'))) { // TRANS: Form validation error displayed when trying to register without a valid e-mail address. $this->showForm(_('Not a valid email address.')); - } else if ($this->nicknameExists($nickname)) { - // TRANS: Form validation error displayed when trying to register with an existing nickname. - $this->showForm(_('Nickname already in use. Try another one.')); - } else if (!User::allowed_nickname($nickname)) { - // TRANS: Form validation error displayed when trying to register with an invalid nickname. - $this->showForm(_('Not a valid nickname.')); } else if ($this->emailExists($email)) { // TRANS: Form validation error displayed when trying to register with an already registered e-mail address. $this->showForm(_('Email address already exists.')); } else if (!is_null($homepage) && (strlen($homepage) > 0) && - !Validate::uri($homepage, - array('allowed_schemes' => - array('http', 'https')))) { + !common_valid_http_url($homepage)) { // TRANS: Form validation error displayed when trying to register with an invalid homepage URL. $this->showForm(_('Homepage is not a valid URL.')); - return; } else if (!is_null($fullname) && mb_strlen($fullname) > 255) { // TRANS: Form validation error displayed when trying to register with a too long full name. $this->showForm(_('Full name is too long (maximum 255 characters).')); - return; } else if (Profile::bioTooLong($bio)) { // TRANS: Form validation error on registration page when providing too long a bio text. // TRANS: %d is the maximum number of characters for bio; used for plural. @@ -232,72 +218,51 @@ class RegisterAction extends Action 'Bio is too long (maximum %d characters).', Profile::maxBio()), Profile::maxBio())); - return; } else if (!is_null($location) && mb_strlen($location) > 255) { // TRANS: Form validation error displayed when trying to register with a too long location. $this->showForm(_('Location is too long (maximum 255 characters).')); - return; } else if (strlen($password) < 6) { // TRANS: Form validation error displayed when trying to register with too short a password. $this->showForm(_('Password must be 6 or more characters.')); - return; } else if ($password != $confirm) { // TRANS: Form validation error displayed when trying to register with non-matching passwords. $this->showForm(_('Passwords do not match.')); - } else if ($user = User::register(array('nickname' => $nickname, + } else { + try { + $user = User::register(array('nickname' => $nickname, 'password' => $password, 'email' => $email, 'fullname' => $fullname, 'homepage' => $homepage, 'bio' => $bio, 'location' => $location, - 'code' => $code))) { - if (!$user) { + 'code' => $code)); + // success! + if (!common_set_user($user)) { + // TRANS: Server error displayed when saving fails during user registration. + $this->serverError(_('Error setting user.')); + } + // this is a real login + common_real_login(true); + if ($this->boolean('rememberme')) { + common_debug('Adding rememberme cookie for ' . $nickname); + common_rememberme($user); + } + + // Re-init language env in case it changed (not yet, but soon) + common_init_language(); + + Event::handle('EndRegistrationTry', array($this)); + + $this->showSuccess(); + } catch (Exception $e) { // TRANS: Form validation error displayed when trying to register with an invalid username or password. - $this->showForm(_('Invalid username or password.')); - return; + $this->showForm($e->getMessage()); } - // success! - if (!common_set_user($user)) { - // TRANS: Server error displayed when saving fails during user registration. - $this->serverError(_('Error setting user.')); - return; - } - // this is a real login - common_real_login(true); - if ($this->boolean('rememberme')) { - common_debug('Adding rememberme cookie for ' . $nickname); - common_rememberme($user); - } - - Event::handle('EndRegistrationTry', array($this)); - - // Re-init language env in case it changed (not yet, but soon) - common_init_language(); - - $this->showSuccess(); - } else { - // TRANS: Form validation error displayed when trying to register with an invalid username or password. - $this->showForm(_('Invalid username or password.')); } } } - /** - * Does the given nickname already exist? - * - * Checks a canonical nickname against the database. - * - * @param string $nickname nickname to check - * - * @return boolean true if the nickname already exists - */ - function nicknameExists($nickname) - { - $user = User::staticGet('nickname', $nickname); - return is_object($user); - } - /** * Does the given email address already exist? * @@ -313,7 +278,7 @@ class RegisterAction extends Action if (!$email || strlen($email) == 0) { return false; } - $user = User::staticGet('email', $email); + $user = User::getKV('email', $email); return is_object($user); } @@ -324,14 +289,14 @@ class RegisterAction extends Action } } - // overrided to add hentry, and content-inner class + // overrided to add h-entry, and content-inner class function showContentBlock() { - $this->elementStart('div', array('id' => 'content', 'class' => 'hentry')); + $this->elementStart('div', array('id' => 'content', 'class' => 'h-entry')); $this->showPageTitle(); $this->showPageNoticeBlock(); $this->elementStart('div', array('id' => 'content_inner', - 'class' => 'entry-content')); + 'class' => 'e-content')); // show the actual content (forms, lists, whatever) $this->showContent(); $this->elementEnd('div'); @@ -409,13 +374,12 @@ class RegisterAction extends Action $invite = null; if ($code) { - $invite = Invitation::staticGet($code); + $invite = Invitation::getKV($code); } if (common_config('site', 'inviteonly') && !($code && $invite)) { // TRANS: Client error displayed when trying to register to an invite-only site without an invitation. $this->clientError(_('Sorry, only invited people can register.')); - return; } $this->elementStart('form', array('method' => 'post', @@ -605,7 +569,7 @@ class RegisterAction extends Action */ function showSuccessContent() { - if (Event::handle('onStartRegisterSuccess', array($this))) { + if (Event::handle('StartRegisterSuccess', array($this))) { $nickname = $this->arg('nickname'); $profileurl = common_local_url('showstream', @@ -649,7 +613,7 @@ class RegisterAction extends Action } $this->elementEnd('div'); - Event::handle('onEndRegisterSuccess', array($this)); + Event::handle('EndRegisterSuccess', array($this)); } }