From 06d895ee67d59ad616f7edd94a1b0eb7ce9c8aed Mon Sep 17 00:00:00 2001 From: Brion Vibber Date: Thu, 20 Jan 2011 16:56:48 -0800 Subject: [PATCH] Add email field on openid registration; needed to register if RequireValidatedEmail plugin is also present. --- plugins/OpenID/finishopenidlogin.php | 44 ++++++++++++++++++++++++---- 1 file changed, 39 insertions(+), 5 deletions(-) diff --git a/plugins/OpenID/finishopenidlogin.php b/plugins/OpenID/finishopenidlogin.php index d6bd7390dd..dfabdd7903 100644 --- a/plugins/OpenID/finishopenidlogin.php +++ b/plugins/OpenID/finishopenidlogin.php @@ -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 -- 2.39.5