]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - actions/register.php
moving delete profile to its own space.
[quix0rs-gnu-social.git] / actions / register.php
index e6b1931cef6de26752c7d9bbd1ed7abfaba02146..a22ffca28e8b53b8cecba0419deb3f5722e20a77 100644 (file)
@@ -36,6 +36,13 @@ class RegisterAction extends Action {
        }
 
        function try_register() {
+
+               $token = $this->trimmed('token');
+               if (!$token || $token != common_session_token()) {
+                       $this->show_form(_('There was a problem with your session token. Try again, please.'));
+                       return;
+               }
+
                $nickname = $this->trimmed('nickname');
                $email = $this->trimmed('email');
                $fullname = $this->trimmed('fullname');
@@ -48,6 +55,19 @@ class RegisterAction extends Action {
                $password = $this->arg('password');
                $confirm = $this->arg('confirm');
 
+               # invitation code, if any
+
+               $code = $this->trimmed('code');
+
+               if ($code) {
+                       $invite = Invitation::staticGet($code);
+               }
+
+               if (common_config('site', 'inviteonly') && !($code && $invite)) {
+                       $this->client_error(_('Sorry, only invited people can register.'));
+                       return;
+               }
+
                # Input scrubbing
 
                $nickname = common_canonical_nickname($nickname);
@@ -80,11 +100,14 @@ class RegisterAction extends Action {
                } else if (!is_null($location) && strlen($location) > 255) {
                        $this->show_form(_('Location is too long (max 255 chars).'));
                        return;
+               } else if (strlen($password) < 6) {
+                       $this->show_form(_('Password must be 6 or more characters.'));
+                       return;
                } else if ($password != $confirm) {
                        $this->show_form(_('Passwords don\'t match.'));
                } else if ($user = User::register(array('nickname' => $nickname, 'password' => $password, 'email' => $email,
-                                                                                               'fullname' => $fullname, 'homepage' => $homepage, 'bio' => $bio, 
-                                                                                               'location' => $location))) {
+                                                                                               'fullname' => $fullname, 'homepage' => $homepage, 'bio' => $bio,
+                                                                                               'location' => $location, 'code' => $code))) {
                        if (!$user) {
                                $this->show_form(_('Invalid username or password.'));
                                return;
@@ -119,6 +142,9 @@ class RegisterAction extends Action {
 
        function email_exists($email) {
                $email = common_canonical_email($email);
+               if (!$email || strlen($email) == 0) {
+                       return false;
+               }
                $user = User::staticGet('email', $email);
                return ($user !== false);
        }
@@ -127,26 +153,55 @@ class RegisterAction extends Action {
                if ($error) {
                        common_element('p', 'error', $error);
                } else {
-                       common_element('div', 'instructions',
-                                                  _('You can create a new account to start posting notices.'));
+                       $instr = 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. '.
+                                                                                        '(Have an [OpenID](http://openid.net/)? ' .
+                                                                                        'Try our [OpenID registration](%%action.openidlogin%%)!)'));
+
+                       common_element_start('div', 'instructions');
+                       common_raw($instr);
+                       common_element_end('div');
                }
        }
 
        function show_form($error=NULL) {
                global $config;
 
+               $code = $this->trimmed('code');
+
+               if ($code) {
+                       $invite = Invitation::staticGet($code);
+               }
+
+               if (common_config('site', 'inviteonly') && !($code && $invite)) {
+                       $this->client_error(_('Sorry, only invited people can register.'));
+                       return;
+               }
+
                common_show_header(_('Register'), NULL, $error, array($this, 'show_top'));
                common_element_start('form', array('method' => 'post',
                                                                                   'id' => 'login',
                                                                                   'action' => common_local_url('register')));
+
+               common_hidden('token', common_session_token());
+
+               if ($code) {
+                       common_hidden('code', $code);
+               }
+
                common_input('nickname', _('Nickname'), $this->trimmed('nickname'),
                                         _('1-64 lowercase letters or numbers, no punctuation or spaces. Required.'));
                common_password('password', _('Password'),
                                                _('6 or more characters. Required.'));
                common_password('confirm', _('Confirm'),
                                                _('Same as password above. Required.'));
-               common_input('email', _('Email'), $this->trimmed('email'),
+               if ($invite && $invite->address_type == 'email') {
+                       common_input('email', _('Email'), $invite->address,
                                         _('Used only for updates, announcements, and password recovery'));
+               } else {
+                       common_input('email', _('Email'), $this->trimmed('email'),
+                                                _('Used only for updates, announcements, and password recovery'));
+               }
                common_input('fullname', _('Full name'),
                                         $this->trimmed('fullname'),
                                          _('Longer name, preferably your "real" name'));
@@ -159,7 +214,7 @@ class RegisterAction extends Action {
                common_input('location', _('Location'),
                                         $this->trimmed('location'),
                                         _('Where you are, like "City, State (or Region), Country"'));
-               common_checkbox('rememberme', _('Remember me'), 
+               common_checkbox('rememberme', _('Remember me'),
                                                $this->boolean('rememberme'),
                                _('Automatically login in the future; not for shared computers!'));
                common_element_start('p');
@@ -172,7 +227,7 @@ class RegisterAction extends Action {
                }
                common_element('input', $attrs);
            common_text(_('My text and files are available under '));
-               common_element('a', array(href => $config['license']['url']),
+               common_element('a', array('href' => $config['license']['url']),
                                           $config['license']['title']);
                common_text(_(' except this private data: password, email address, IM address, phone number.'));
                common_element_end('p');
@@ -180,7 +235,7 @@ class RegisterAction extends Action {
                common_element_end('form');
                common_show_footer();
        }
-                                               
+
        function show_success() {
                $nickname = $this->arg('nickname');
                common_show_header(_('Registration successful'));
@@ -203,5 +258,5 @@ class RegisterAction extends Action {
                common_element_end('div');
                common_show_footer();
        }
-                                               
+
 }