X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=actions%2Fregister.php;h=7b3c075156ec4103d2364896106eabe54dfec0d8;hb=bc2f64d7ab6c0218104e1a655209fe062d5bdd43;hp=2fc7ef9219acec175c0025daa3d236ab5ec974b0;hpb=14a76926a225dec3d29aeffa13ab7ece74f708e5;p=quix0rs-gnu-social.git diff --git a/actions/register.php b/actions/register.php index 2fc7ef9219..7b3c075156 100644 --- a/actions/register.php +++ b/actions/register.php @@ -40,25 +40,21 @@ if (!defined('STATUSNET') && !defined('LACONICA')) { * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 * @link http://status.net/ */ - class RegisterAction extends Action { /** * Has there been an error? */ - var $error = null; /** * Have we registered? */ - var $registered = false; /** * Are we processing an invite? */ - var $invite = null; /** @@ -68,19 +64,11 @@ class RegisterAction extends Action * @param $args * @return string title */ - function prepare($args) { parent::prepare($args); $this->code = $this->trimmed('code'); - // @todo this check should really be in index.php for all sensitive actions - $ssl = common_config('site', 'ssl'); - if (empty($_SERVER['HTTPS']) && ($ssl == 'always' || $ssl == 'sometimes')) { - common_redirect(common_local_url('register')); - // exit - } - if (empty($this->code)) { common_ensure_session(); if (array_key_exists('invitecode', $_SESSION)) { @@ -89,6 +77,7 @@ 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; } @@ -96,6 +85,7 @@ class RegisterAction extends Action if (!empty($this->code)) { $this->invite = Invitation::staticGet('code', $this->code); if (empty($this->invite)) { + // 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; } @@ -112,13 +102,14 @@ class RegisterAction extends Action * * @return string title */ - 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'); } } @@ -133,14 +124,15 @@ class RegisterAction extends Action * * @return void */ - function handle($args) { 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(); @@ -163,7 +155,6 @@ class RegisterAction extends Action * * @return void */ - function tryRegister() { if (Event::handle('StartRegistrationTry', array($this))) { @@ -193,27 +184,31 @@ class RegisterAction extends Action } 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 - $nickname = common_canonical_nickname($nickname); + try { + $nickname = Nickname::normalize($nickname); + } catch (NicknameException $e) { + $this->showForm($e->getMessage()); + } $email = common_canonical_email($email); if (!$this->boolean('license')) { - $this->showForm(_('You can\'t 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 (!Validate::string($nickname, array('min_length' => 1, - 'max_length' => 64, - 'format' => NICKNAME_FMT))) { - $this->showForm(_('Nickname must have only lowercase letters '. - 'and numbers and no spaces.')); } 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)) { $this->showForm(_('Email address already exists.')); @@ -221,23 +216,32 @@ class RegisterAction extends Action !Validate::uri($homepage, array('allowed_schemes' => array('http', 'https')))) { + // 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) { - $this->showForm(_('Full name is too long (max 255 chars).')); + // 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)) { - $this->showForm(sprintf(_('Bio is too long (max %d chars).'), + // 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) { - $this->showForm(_('Location is too long (max 255 chars).')); + // 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.')); + // 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, 'password' => $password, 'email' => $email, @@ -247,11 +251,13 @@ class RegisterAction extends Action 'location' => $location, 'code' => $code))) { if (!$user) { + // TRANS: Form validation error displayed when trying to register with an invalid username or password. $this->showForm(_('Invalid username or password.')); return; } // success! if (!common_set_user($user)) { + // TRANS: Server error displayed when saving fails during user registration. $this->serverError(_('Error setting user.')); return; } @@ -269,6 +275,7 @@ class RegisterAction extends Action $this->showSuccess(); } else { + // TRANS: Form validation error displayed when trying to register with an invalid username or password. $this->showForm(_('Invalid username or password.')); } } @@ -283,7 +290,6 @@ class RegisterAction extends Action * * @return boolean true if the nickname already exists */ - function nicknameExists($nickname) { $user = User::staticGet('nickname', $nickname); @@ -299,7 +305,6 @@ class RegisterAction extends Action * * @return boolean true if the address already exists */ - function emailExists($email) { $email = common_canonical_email($email); @@ -338,7 +343,6 @@ class RegisterAction extends Action * * @return void */ - function showPageNotice() { if ($this->registered) { @@ -347,10 +351,11 @@ 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. ' . + 'a new account. ' . 'You can then post notices and '. - 'link up to friends and colleagues. ')); + 'link up to friends and colleagues.')); $this->elementStart('div', 'instructions'); $this->raw($instr); @@ -367,7 +372,6 @@ class RegisterAction extends Action * * @return void */ - function showForm($error=null) { $this->error = $error; @@ -382,7 +386,6 @@ class RegisterAction extends Action * * @return void */ - function showContent() { if ($this->registered) { @@ -397,7 +400,6 @@ class RegisterAction extends Action * * @return void */ - function showFormContent() { $code = $this->trimmed('code'); @@ -409,6 +411,7 @@ class RegisterAction extends Action } 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; } @@ -418,6 +421,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()); @@ -428,62 +432,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'), - _('1-64 lowercase letters or numbers, '. - 'no punctuation or spaces. Required.')); + // 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'), - _('6 or more characters. Required.')); + // 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. Required.')); + // 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')); + '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')); + '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')); + 'or profile on another site.')); $this->elementEnd('li'); $this->elementStart('li'); $maxBio = Profile::maxBio(); if ($maxBio > 0) { - $bioInstr = sprintf(_('Describe yourself and your interests in %d chars'), + // 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.', + $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"')); + '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'); @@ -503,7 +531,8 @@ class RegisterAction extends Action $this->elementEnd('li'); } $this->elementEnd('ul'); - $this->submit('submit', _('Register')); + // TRANS: Field label on account registration page. + $this->submit('submit', _m('BUTTON','Register')); $this->elementEnd('fieldset'); $this->elementEnd('form'); } @@ -513,8 +542,9 @@ class RegisterAction extends Action $out = ''; switch (common_config('license', 'type')) { case 'private': - // TRANS: Copyright checkbox label in registration dialog, for private sites. $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 @@ -523,8 +553,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,7 +588,6 @@ class RegisterAction extends Action * * @return void */ - function showSuccess() { $this->registered = true; @@ -571,7 +601,6 @@ class RegisterAction extends Action * * @return void */ - function showSuccessContent() { $nickname = $this->arg('nickname'); @@ -580,6 +609,10 @@ class RegisterAction extends Action 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) '. @@ -604,6 +637,7 @@ class RegisterAction extends Action $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 '. @@ -618,11 +652,17 @@ class RegisterAction extends Action * * @return void */ - function showLocalNav() { $nav = new LoginGroupNav($this); $nav->show(); } -} + function showNoticeForm() + { + } + + function showProfileBlock() + { + } +}