- // Input scrubbing
- try {
- $nickname = Nickname::normalize($nickname);
- } catch (NicknameException $e) {
- $this->showForm($e->getMessage());
- }
- $email = common_canonical_email($email);
-
- 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->clientError(_('Not a valid email address.'),404,'json');
- } else if ($this->nicknameExists($nickname)) {
- // TRANS: Form validation error displayed when trying to register with an existing nickname.
- $this->clientError(_('Nickname already in use. Try another one.'),404,'json');
- } else if (!User::allowed_nickname($nickname)) {
- // TRANS: Form validation error displayed when trying to register with an invalid nickname.
- $this->clientError(_('Not a valid nickname.'),404,'json');
- } else if ($this->emailExists($email)) {
- // TRANS: Form validation error displayed when trying to register with an already registered e-mail address.
- $this->clientError(_('Email address already exists.'),404,'json');
- } else if (!is_null($homepage) && (strlen($homepage) > 0) &&
- !common_valid_http_url($homepage)) {
- // TRANS: Form validation error displayed when trying to register with an invalid homepage URL.
- $this->clientError(_('Homepage is not a valid URL.'),404,'json');
- 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->clientError(_('Full name is too long (maximum 255 characters).'),404,'json');
- 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.
- $this->clientError(sprintf(_m('Bio is too long (maximum %d character).',
- 'Bio is too long (maximum %d characters).',
- Profile::maxBio()),
- Profile::maxBio()),404,'json');
- 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->clientError(_('Location is too long (maximum 255 characters).'),404,'json');
- return;
- } else if (strlen($password) < 6) {
- // TRANS: Form validation error displayed when trying to register with too short a password.
- $this->clientError(_('Password must be 6 or more characters.'),404,'json');
- return;
- } else if ($password != $confirm) {
- // TRANS: Form validation error displayed when trying to register with non-matching passwords.
- $this->clientError(_('Passwords do not match.'),404,'json');
- } else {
-
- // annoy spammers
- sleep(7);
-
- if ($user = User::register(array('nickname' => $nickname,
- 'password' => $password,
- 'email' => $email,
- 'fullname' => $fullname,
- 'homepage' => $homepage,
- 'bio' => $bio,
- 'location' => $location,
- 'code' => $code))) {
- if (!$user) {
- // TRANS: Form validation error displayed when trying to register with an invalid username or password.
- $this->clientError(_('Invalid username or password.'),404,'json');
- return;
- }
-
- Event::handle('EndRegistrationTry', array($this));
-
- $this->initDocument('json');
- $this->showJsonObjects($this->twitterUserArray($user->getProfile()));
- $this->endDocument('json');
-
- } else {
- // TRANS: Form validation error displayed when trying to register with an invalid username or password.
- $this->clientError(_('Invalid username or password.'),404,'json');
- }
- }
- }
- }
-