]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - actions/register.php
Merge remote-tracking branch 'mainline/1.0.x' into people_tags_rebase
[quix0rs-gnu-social.git] / actions / register.php
index 7307bc689b26cda56839fbadfb4ada3992bbe14d..e5f3ef108025f33c76084b11fdd8e801550feb44 100644 (file)
@@ -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,12 +155,12 @@ class RegisterAction extends Action
      *
      * @return void
      */
-
     function tryRegister()
     {
         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;
@@ -193,51 +185,65 @@ 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)) {
+                // 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')))) {
+                // 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 +253,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 +277,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 +292,6 @@ class RegisterAction extends Action
      *
      * @return boolean true if the nickname already exists
      */
-
     function nicknameExists($nickname)
     {
         $user = User::staticGet('nickname', $nickname);
@@ -299,7 +307,6 @@ class RegisterAction extends Action
      *
      * @return boolean true if the address already exists
      */
-
     function emailExists($email)
     {
         $email = common_canonical_email($email);
@@ -338,7 +345,6 @@ class RegisterAction extends Action
      *
      * @return void
      */
-
     function showPageNotice()
     {
         if ($this->registered) {
@@ -347,10 +353,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. ' .
                                       '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 +374,6 @@ class RegisterAction extends Action
      *
      * @return void
      */
-
     function showForm($error=null)
     {
         $this->error = $error;
@@ -382,7 +388,6 @@ class RegisterAction extends Action
      *
      * @return void
      */
-
     function showContent()
     {
         if ($this->registered) {
@@ -397,7 +402,6 @@ class RegisterAction extends Action
      *
      * @return void
      */
-
     function showFormContent()
     {
         $code = $this->trimmed('code');
@@ -409,6 +413,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 +423,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 +434,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 +533,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');
     }
@@ -513,8 +544,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 +555,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 +590,6 @@ class RegisterAction extends Action
      *
      * @return void
      */
-
     function showSuccess()
     {
         $this->registered = true;
@@ -571,7 +603,6 @@ class RegisterAction extends Action
      *
      * @return void
      */
-
     function showSuccessContent()
     {
         $nickname = $this->arg('nickname');
@@ -580,6 +611,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 +639,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 +654,17 @@ class RegisterAction extends Action
      *
      * @return void
      */
-
     function showLocalNav()
     {
         $nav = new LoginGroupNav($this);
         $nav->show();
     }
-}
 
+    function showNoticeForm()
+    {
+    }
+
+    function showProfileBlock()
+    {
+    }
+}