]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
Add email field on openid registration; needed to register if RequireValidatedEmail...
authorBrion Vibber <brion@pobox.com>
Fri, 21 Jan 2011 00:56:48 +0000 (16:56 -0800)
committerBrion Vibber <brion@pobox.com>
Fri, 21 Jan 2011 00:56:48 +0000 (16:56 -0800)
plugins/OpenID/finishopenidlogin.php

index d6bd7390dddb7fd118fe2ab5f7d7c02e72d8864f..dfabdd79036fd9d898fef7b6459ca344270e7cb7 100644 (file)
@@ -127,6 +127,11 @@ class FinishopenidloginAction extends Action
                      ($this->username) ? $this->username : '',
                      _m('1-64 lowercase letters or numbers, no punctuation or spaces'));
         $this->elementEnd('li');
+        $this->elementStart('li');
+        $this->input('email', _('Email'), $this->getEmail(),
+                     _('Used only for updates, announcements, '.
+                       'and password recovery'));
+        $this->elementEnd('li');
 
         // Hook point for captcha etc
         Event::handle('EndRegistrationFormData', array($this));
@@ -188,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();
@@ -355,11 +393,7 @@ 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