]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - plugins/OpenID/finishopenidlogin.php
Merge remote-tracking branch 'mainline/1.0.x' into people_tags_rebase
[quix0rs-gnu-social.git] / plugins / OpenID / finishopenidlogin.php
index 0053a7f1d29e0b7f40d888992d1bd113158bcb33..bc93bc21a62f219734cf0d4ed82437946f0f0564 100644 (file)
@@ -118,11 +118,24 @@ class FinishopenidloginAction extends Action
         $this->element('p', null,
                        _m('Create a new user with this nickname.'));
         $this->elementStart('ul', 'form_data');
+
+        // Hook point for captcha etc
+        Event::handle('StartRegistrationFormData', array($this));
+
         $this->elementStart('li');
         $this->input('newname', _m('New nickname'),
                      ($this->username) ? $this->username : '',
-                     _m('1-64 lowercase letters or numbers, no punctuation or spaces'));
+                     _m('1-64 lowercase letters or numbers, no punctuation or spaces.'));
+        $this->elementEnd('li');
+        $this->elementStart('li');
+        $this->input('email', _m('Email'), $this->getEmail(),
+                     _m('Used only for updates, announcements, '.
+                       'and password recovery.'));
         $this->elementEnd('li');
+
+        // Hook point for captcha etc
+        Event::handle('EndRegistrationFormData', array($this));
+
         $this->elementStart('li');
         $this->element('input', array('type' => 'checkbox',
                                       'id' => 'license',
@@ -133,7 +146,7 @@ class FinishopenidloginAction extends Action
                                           'class' => 'checkbox'));
         // TRANS: OpenID plugin link text.
         // TRANS: %s is a link to a licese with the license name as link text.
-        $message = _('My text and files are available under %s ' .
+        $message = _m('My text and files are available under %s ' .
                      'except this private data: password, ' .
                      'email address, IM address, and phone number.');
         $link = '<a href="' .
@@ -180,6 +193,39 @@ class FinishopenidloginAction extends Action
         $this->elementEnd('form');
     }
 
+    /**
+     * Get specified e-mail from the form, or the OpenID sreg info, or the
+     * invite code.
+     *
+     * @return string
+     */
+    function getEmail()
+    {
+        $email = $this->trimmed('email');
+        if (!empty($email)) {
+            return $email;
+        }
+
+        // Pull from openid thingy
+        list($display, $canonical, $sreg) = $this->getSavedValues();
+        if (!empty($sreg['email'])) {
+            return $sreg['email'];
+        }
+
+        // Terrible hack for invites...
+        if (common_config('site', 'inviteonly')) {
+            $code = $_SESSION['invitecode'];
+            if ($code) {
+                $invite = Invitation::staticGet($code);
+
+                if ($invite && $invite->address_type == 'email') {
+                    return $invite->address;
+                }
+            }
+        }
+        return '';
+    }
+
     function tryLogin()
     {
         $consumer = oid_consumer();
@@ -220,9 +266,9 @@ class FinishopenidloginAction extends Action
 
             if ($user) {
                 oid_set_last($display);
-                # XXX: commented out at @edd's request until better
-                # control over how data flows from OpenID provider.
-                # oid_update_user($user, $sreg);
+                // XXX: commented out at @edd's request until better
+                // control over how data flows from OpenID provider.
+                // oid_update_user($user, $sreg);
                 common_set_user($user);
                 common_real_login(true);
                 if (isset($_SESSION['openid_rememberme']) && $_SESSION['openid_rememberme']) {
@@ -260,7 +306,11 @@ class FinishopenidloginAction extends Action
 
     function createNewUser()
     {
-        # FIXME: save invite code before redirect, and check here
+        // FIXME: save invite code before redirect, and check here
+
+        if (!Event::handle('StartRegistrationTry', array($this))) {
+            return;
+        }
 
         if (common_config('site', 'closed')) {
             // TRANS: OpenID plugin message. No new user registration is allowed on the site.
@@ -314,7 +364,7 @@ class FinishopenidloginAction extends Action
             return;
         }
 
-        # Possible race condition... let's be paranoid
+        // Possible race condition... let's be paranoid
 
         $other = oid_get_user($canonical);
 
@@ -329,8 +379,8 @@ class FinishopenidloginAction extends Action
         $location = '';
         if (!empty($sreg['country'])) {
             if ($sreg['postcode']) {
-                # XXX: use postcode to get city and region
-                # XXX: also, store postcode somewhere -- it's valuable!
+                // XXX: use postcode to get city and region
+                // XXX: also, store postcode somewhere -- it's valuable!
                 $location = $sreg['postcode'] . ', ' . $sreg['country'];
             } else {
                 $location = $sreg['country'];
@@ -343,14 +393,10 @@ class FinishopenidloginAction extends Action
             $fullname = '';
         }
 
-        if (!empty($sreg['email']) && Validate::email($sreg['email'], common_config('email', 'check_domain'))) {
-            $email = $sreg['email'];
-        } else {
-            $email = '';
-        }
+        $email = $this->getEmail();
 
-        # XXX: add language
-        # XXX: add timezone
+        // XXX: add language
+        // XXX: add timezone
 
         $args = array('nickname' => $nickname,
                       'email' => $email,
@@ -374,6 +420,9 @@ class FinishopenidloginAction extends Action
             common_rememberme($user);
         }
         unset($_SESSION['openid_rememberme']);
+
+        Event::handle('EndRegistrationTry', array($this));
+
         common_redirect(common_local_url('showstream', array('nickname' => $user->nickname)),
                         303);
     }
@@ -389,7 +438,7 @@ class FinishopenidloginAction extends Action
             return;
         }
 
-        # They're legit!
+        // They're legit!
 
         $user = User::staticGet('nickname', $nickname);
 
@@ -428,7 +477,7 @@ class FinishopenidloginAction extends Action
     {
         $url = common_get_returnto();
         if ($url) {
-            # We don't have to return to it again
+            // We don't have to return to it again
             common_set_returnto(null);
            $url = common_inject_session($url);
         } else {
@@ -442,7 +491,7 @@ class FinishopenidloginAction extends Action
     function bestNewNickname($display, $sreg)
     {
 
-        # Try the passed-in nickname
+        // Try the passed-in nickname
 
         if (!empty($sreg['nickname'])) {
             $nickname = $this->nicknamize($sreg['nickname']);
@@ -451,7 +500,7 @@ class FinishopenidloginAction extends Action
             }
         }
 
-        # Try the full name
+        // Try the full name
 
         if (!empty($sreg['fullname'])) {
             $fullname = $this->nicknamize($sreg['fullname']);
@@ -460,7 +509,7 @@ class FinishopenidloginAction extends Action
             }
         }
 
-        # Try the URL
+        // Try the URL
 
         $from_url = $this->openidToNickname($display);
 
@@ -468,7 +517,7 @@ class FinishopenidloginAction extends Action
             return $from_url;
         }
 
-        # XXX: others?
+        // XXX: others?
 
         return null;
     }
@@ -496,10 +545,10 @@ class FinishopenidloginAction extends Action
         }
     }
 
-    # We try to use an OpenID URL as a legal StatusNet user name in this order
-    # 1. Plain hostname, like http://evanp.myopenid.com/
-    # 2. One element in path, like http://profile.typekey.com/EvanProdromou/
-    #    or http://getopenid.com/evanprodromou
+    // We try to use an OpenID URL as a legal StatusNet user name in this order
+    // 1. Plain hostname, like http://evanp.myopenid.com/
+    // 2. One element in path, like http://profile.typekey.com/EvanProdromou/
+    //    or http://getopenid.com/evanprodromou
 
     function urlToNickname($openid)
     {
@@ -513,8 +562,8 @@ class FinishopenidloginAction extends Action
         if (!$base) {
             return null;
         } else {
-            # =evan.prodromou
-            # or @gratis*evan.prodromou
+            // =evan.prodromou
+            // or @gratis*evan.prodromou
             $parts = explode('*', substr($base, 1));
             return $this->nicknamize(array_pop($parts));
         }
@@ -529,7 +578,7 @@ class FinishopenidloginAction extends Action
         }
     }
 
-    # Given a string, try to make it work as a nickname
+    // Given a string, try to make it work as a nickname
 
     function nicknamize($str)
     {