X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=actions%2Fregister.php;h=f030c279d878c8f6083915a94baf188b049b1aa5;hb=d6b28c64830f632bb2f4b6f3c9369b9e56ad217a;hp=d0dbceeb81c4f1dd63f88072a564bb202801abfa;hpb=27ef3b1d905cdf8f47b47293a757624dda88fdc7;p=quix0rs-gnu-social.git diff --git a/actions/register.php b/actions/register.php index d0dbceeb81..f030c279d8 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'); @@ -77,15 +75,15 @@ 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(); @@ -103,9 +101,11 @@ class RegisterAction extends Action function title() { if ($this->registered) { + // TRANS: Title for registration page after a succesful registration. return _('Registration successful'); } else { - return _('Register'); + // TRANS: Title for registration page. + return _m('TITLE','Register'); } } @@ -120,13 +120,15 @@ class RegisterAction extends Action * * @return void */ - function handle($args) + function handle(array $args=array()) { parent::handle($args); if (common_config('site', 'closed')) { + // TRANS: Client error displayed when trying to register to a closed site. $this->clientError(_('Registration not allowed.')); } else if (common_logged_in()) { + // TRANS: Client error displayed when trying to register while already logged in. $this->clientError(_('Already logged in.')); } else if ($_SERVER['REQUEST_METHOD'] == 'POST') { $this->tryRegister(); @@ -154,6 +156,7 @@ class RegisterAction extends Action if (Event::handle('StartRegistrationTry', array($this))) { $token = $this->trimmed('token'); if (!$token || $token != common_session_token()) { + // TRANS: Client error displayed when the session token does not match or is not given. $this->showForm(_('There was a problem with your session token. '. 'Try again, please.')); return; @@ -174,107 +177,92 @@ 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); if (!$this->boolean('license')) { - $this->showForm(_('You cannot register if you don\'t '. + // TRANS: Form validation error displayed when trying to register without agreeing to the site license. + $this->showForm(_('You cannot register if you do not '. 'agree to the license.')); } 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)) { - $this->showForm(_('Nickname already in use. Try another one.')); - } else if (!User::allowed_nickname($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. $this->showForm(sprintf(_m('Bio is too long (maximum %d character).', '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) { - $this->showForm(_('Passwords don\'t match.')); - } else if ($user = User::register(array('nickname' => $nickname, + // TRANS: Form validation error displayed when trying to register with non-matching passwords. + $this->showForm(_('Passwords do not match.')); + } else { + try { + $user = User::register(array('nickname' => $nickname, 'password' => $password, 'email' => $email, 'fullname' => $fullname, 'homepage' => $homepage, 'bio' => $bio, 'location' => $location, - 'code' => $code))) { - if (!$user) { - $this->showForm(_('Invalid username or password.')); - return; - } - // success! - if (!common_set_user($user)) { - $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); + '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($e->getMessage()); } - - Event::handle('EndRegistrationTry', array($this)); - - // Re-init language env in case it changed (not yet, but soon) - common_init_language(); - - $this->showSuccess(); - } else { - $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? * @@ -290,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); } @@ -301,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'); @@ -330,6 +318,7 @@ class RegisterAction extends Action $this->element('p', 'error', $this->error); } else { $instr = + // TRANS: Page notice on registration page. common_markup_to_html(_('With this form you can create '. 'a new account. ' . 'You can then post notices and '. @@ -385,12 +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', @@ -398,6 +387,7 @@ class RegisterAction extends Action 'class' => 'form_settings', 'action' => common_local_url('register'))); $this->elementStart('fieldset'); + // TRANS: Fieldset legend on accout registration page. $this->element('legend', null, 'Account settings'); $this->hidden('token', common_session_token()); @@ -408,66 +398,86 @@ class RegisterAction extends Action $this->elementStart('ul', 'form_data'); if (Event::handle('StartRegistrationFormData', array($this))) { $this->elementStart('li'); + // TRANS: Field label on account registration page. $this->input('nickname', _('Nickname'), $this->trimmed('nickname'), + // TRANS: Field title on account registration page. _('1-64 lowercase letters or numbers, no punctuation or spaces.')); $this->elementEnd('li'); $this->elementStart('li'); + // TRANS: Field label on account registration page. $this->password('password', _('Password'), + // TRANS: Field title on account registration page. _('6 or more characters.')); $this->elementEnd('li'); $this->elementStart('li'); - $this->password('confirm', _('Confirm'), - _('Same as password above.')); + // TRANS: Field label on account registration page. In this field the password has to be entered a second time. + $this->password('confirm', _m('PASSWORD','Confirm'), + // TRANS: Field title on account registration page. + _('Same as password above.')); $this->elementEnd('li'); $this->elementStart('li'); if ($this->invite && $this->invite->address_type == 'email') { - $this->input('email', _('Email'), $this->invite->address, + // TRANS: Field label on account registration page. + $this->input('email', _m('LABEL','Email'), $this->invite->address, + // TRANS: Field title on account registration page. _('Used only for updates, announcements, '. 'and password recovery.')); } else { - $this->input('email', _('Email'), $this->trimmed('email'), + // TRANS: Field label on account registration page. + $this->input('email', _m('LABEL','Email'), $this->trimmed('email'), + // TRANS: Field title on account registration page. _('Used only for updates, announcements, '. 'and password recovery.')); } $this->elementEnd('li'); $this->elementStart('li'); + // TRANS: Field label on account registration page. $this->input('fullname', _('Full name'), $this->trimmed('fullname'), - _('Longer name, preferably your "real" name.')); + // TRANS: Field title on account registration page. + _('Longer name, preferably your "real" name.')); $this->elementEnd('li'); $this->elementStart('li'); + // TRANS: Field label on account registration page. $this->input('homepage', _('Homepage'), $this->trimmed('homepage'), + // TRANS: Field title on account registration page. _('URL of your homepage, blog, '. 'or profile on another site.')); $this->elementEnd('li'); $this->elementStart('li'); $maxBio = Profile::maxBio(); if ($maxBio > 0) { - // TRANS: Tooltip for field label in form for profile settings. Plural + // TRANS: Text area title in form for account registration. Plural // TRANS: is decided by the number of characters available for the // TRANS: biography (%d). - $bioInstr = sprintf(_m('Describe yourself and your interests in %d character', - 'Describe yourself and your interests in %d characters', + $bioInstr = sprintf(_m('Describe yourself and your interests in %d character.', + 'Describe yourself and your interests in %d characters.', $maxBio), $maxBio); } else { - $bioInstr = _('Describe yourself and your interests'); + // TRANS: Text area title on account registration page. + $bioInstr = _('Describe yourself and your interests.'); } + // TRANS: Text area label on account registration page. $this->textarea('bio', _('Bio'), $this->trimmed('bio'), $bioInstr); $this->elementEnd('li'); $this->elementStart('li'); + // TRANS: Field label on account registration page. $this->input('location', _('Location'), $this->trimmed('location'), + // TRANS: Field title on account registration page. _('Where you are, like "City, '. 'State (or Region), Country".')); $this->elementEnd('li'); Event::handle('EndRegistrationFormData', array($this)); $this->elementStart('li', array('id' => 'settings_rememberme')); + // TRANS: Checkbox label on account registration page. $this->checkbox('rememberme', _('Remember me'), $this->boolean('rememberme'), + // TRANS: Checkbox title on account registration page. _('Automatically login in the future; '. 'not for shared computers!')); $this->elementEnd('li'); @@ -487,7 +497,8 @@ class RegisterAction extends Action $this->elementEnd('li'); } $this->elementEnd('ul'); - $this->submit('submit', _('Register')); + // TRANS: Button text to register a user on account registration page. + $this->submit('submit', _m('BUTTON','Register')); $this->elementEnd('fieldset'); $this->elementEnd('form'); } @@ -497,9 +508,9 @@ class RegisterAction extends Action $out = ''; switch (common_config('license', 'type')) { case 'private': - // TRANS: Copyright checkbox label in registration dialog, for private sites. - // TRANS: %1$s is the StatusNet sitename. $out .= htmlspecialchars(sprintf( + // TRANS: Copyright checkbox label in registration dialog, for private sites. + // TRANS: %1$s is the StatusNet sitename. _('I understand that content and data of %1$s are private and confidential.'), common_config('site', 'name'))); // fall through @@ -508,8 +519,9 @@ class RegisterAction extends Action $out .= ' '; } if (common_config('license', 'owner')) { - // TRANS: Copyright checkbox label in registration dialog, for all rights reserved with a specified copyright owner. $out .= htmlspecialchars(sprintf( + // TRANS: Copyright checkbox label in registration dialog, for all rights reserved with a specified copyright owner. + // TRANS: %1$s is the license owner. _('My text and files are copyright by %1$s.'), common_config('license', 'owner'))); } else { @@ -557,43 +569,52 @@ class RegisterAction extends Action */ function showSuccessContent() { - $nickname = $this->arg('nickname'); - - $profileurl = common_local_url('showstream', - array('nickname' => $nickname)); - - $this->elementStart('div', 'success'); - $instr = sprintf(_('Congratulations, %1$s! And welcome to %%%%site.name%%%%. '. - 'From here, you may want to...'. "\n\n" . - '* Go to [your profile](%2$s) '. - 'and post your first message.' . "\n" . - '* Add a [Jabber/GTalk address]'. - '(%%%%action.imsettings%%%%) '. - 'so you can send notices '. - 'through instant messages.' . "\n" . - '* [Search for people](%%%%action.peoplesearch%%%%) '. - 'that you may know or '. - 'that share your interests. ' . "\n" . - '* Update your [profile settings]'. - '(%%%%action.profilesettings%%%%)'. - ' to tell others more about you. ' . "\n" . - '* Read over the [online docs](%%%%doc.help%%%%)'. - ' for features you may have missed. ' . "\n\n" . - 'Thanks for signing up and we hope '. - 'you enjoy using this service.'), - $nickname, $profileurl); - - $this->raw(common_markup_to_html($instr)); - - $have_email = $this->trimmed('email'); - if ($have_email) { - $emailinstr = _('(You should receive a message by email '. - 'momentarily, with ' . - 'instructions on how to confirm '. - 'your email address.)'); - $this->raw(common_markup_to_html($emailinstr)); + if (Event::handle('StartRegisterSuccess', array($this))) { + $nickname = $this->arg('nickname'); + + $profileurl = common_local_url('showstream', + array('nickname' => $nickname)); + + $this->elementStart('div', 'success'); + // TRANS: Text displayed after successful account registration. + // TRANS: %1$s is the registered nickname, %2$s is the profile URL. + // TRANS: This message contains Markdown links in the form [link text](link) + // TRANS: and variables in the form %%%%variable%%%%. Please mind the syntax. + $instr = sprintf(_('Congratulations, %1$s! And welcome to %%%%site.name%%%%. '. + 'From here, you may want to...'. "\n\n" . + '* Go to [your profile](%2$s) '. + 'and post your first message.' . "\n" . + '* Add a [Jabber/GTalk address]'. + '(%%%%action.imsettings%%%%) '. + 'so you can send notices '. + 'through instant messages.' . "\n" . + '* [Search for people](%%%%action.peoplesearch%%%%) '. + 'that you may know or '. + 'that share your interests. ' . "\n" . + '* Update your [profile settings]'. + '(%%%%action.profilesettings%%%%)'. + ' to tell others more about you. ' . "\n" . + '* Read over the [online docs](%%%%doc.help%%%%)'. + ' for features you may have missed. ' . "\n\n" . + 'Thanks for signing up and we hope '. + 'you enjoy using this service.'), + $nickname, $profileurl); + + $this->raw(common_markup_to_html($instr)); + + $have_email = $this->trimmed('email'); + if ($have_email) { + // TRANS: Instruction text on how to deal with the e-mail address confirmation e-mail. + $emailinstr = _('(You should receive a message by email '. + 'momentarily, with ' . + 'instructions on how to confirm '. + 'your email address.)'); + $this->raw(common_markup_to_html($emailinstr)); + } + $this->elementEnd('div'); + + Event::handle('EndRegisterSuccess', array($this)); } - $this->elementEnd('div'); } /** @@ -603,11 +624,23 @@ class RegisterAction extends Action */ function showLocalNav() { - $nav = new LoginGroupNav($this); - $nav->show(); + if (common_logged_in()) { + parent::showLocalNav(); + } else { + $nav = new LoginGroupNav($this); + $nav->show(); + } } - function showNoticeForm() + /** + * Show a bit of login context + * + * @return nothing + */ + function showProfileBlock() { + if (common_logged_in()) { + parent::showProfileBlock(); + } } }