forked from GNUsocial/gnu-social
break out email registration forms to their own modules
This commit is contained in:
parent
5253b9ea68
commit
2e75100108
@ -57,6 +57,10 @@ class EmailRegistrationPlugin extends Plugin
|
||||
case 'EmailregisterAction':
|
||||
include_once $dir . '/' . strtolower(mb_substr($cls, 0, -6)) . '.php';
|
||||
return false;
|
||||
case 'EmailRegistrationForm':
|
||||
case 'ConfirmRegistrationForm':
|
||||
include_once $dir . '/' . strtolower($cls) . '.php';
|
||||
return false;
|
||||
default:
|
||||
return true;
|
||||
}
|
||||
|
161
plugins/EmailRegistration/confirmregistrationform.php
Normal file
161
plugins/EmailRegistration/confirmregistrationform.php
Normal file
@ -0,0 +1,161 @@
|
||||
<?php
|
||||
/**
|
||||
* StatusNet - the distributed open-source microblogging tool
|
||||
* Copyright (C) 2011, StatusNet, Inc.
|
||||
*
|
||||
* Registration confirmation form
|
||||
*
|
||||
* PHP version 5
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* @category Email registration
|
||||
* @package StatusNet
|
||||
* @author Evan Prodromou <evan@status.net>
|
||||
* @copyright 2011 StatusNet, Inc.
|
||||
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
|
||||
* @link http://status.net/
|
||||
*/
|
||||
|
||||
if (!defined('STATUSNET')) {
|
||||
// This check helps protect against security problems;
|
||||
// your code file can't be executed directly from the web.
|
||||
exit(1);
|
||||
}
|
||||
|
||||
/**
|
||||
* Registration confirmation form
|
||||
*
|
||||
* @category Email registration
|
||||
* @package StatusNet
|
||||
* @author Evan Prodromou <evan@status.net>
|
||||
* @copyright 2011 StatusNet, Inc.
|
||||
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
|
||||
* @link http://status.net/
|
||||
*/
|
||||
|
||||
class ConfirmRegistrationForm extends Form
|
||||
{
|
||||
protected $code;
|
||||
protected $nickname;
|
||||
protected $email;
|
||||
|
||||
function __construct($out, $nickname, $email, $code)
|
||||
{
|
||||
parent::__construct($out);
|
||||
$this->nickname = $nickname;
|
||||
$this->email = $email;
|
||||
$this->code = $code;
|
||||
}
|
||||
|
||||
function formData()
|
||||
{
|
||||
$this->out->element('p', 'instructions',
|
||||
sprintf(_('Enter a password to confirm your account.')));
|
||||
|
||||
$this->hidden('code', $this->code);
|
||||
|
||||
$this->out->elementStart('ul', 'form_data');
|
||||
|
||||
$this->elementStart('li');
|
||||
// TRANS: Field label on account registration page.
|
||||
$this->password('password', _('Password'),
|
||||
// TRANS: Field title on account registration page.
|
||||
_('6 or more characters.'));
|
||||
$this->elementEnd('li');
|
||||
$this->elementStart('li');
|
||||
// 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');
|
||||
|
||||
$this->element('input', array('name' => 'tos',
|
||||
'type' => 'checkbox',
|
||||
'class' => 'checkbox',
|
||||
'id' => 'tos',
|
||||
'value' => 'true'));
|
||||
$this->text(' ');
|
||||
|
||||
$this->elementStart('label', array('class' => 'checkbox',
|
||||
'for' => 'tos'));
|
||||
|
||||
|
||||
$this->raw(sprintf(_('I agree to the <a href="%1$s">Terms of service</a> and '.
|
||||
'<a href="%1$s">Privacy policy</a> of this site.'),
|
||||
common_local_url('doc', 'tos'),
|
||||
common_local_url('doc', 'privacy')));
|
||||
|
||||
$this->elementEnd('label');
|
||||
|
||||
$this->elementEnd('li');
|
||||
|
||||
$this->out->elementEnd('ul');
|
||||
}
|
||||
|
||||
function method()
|
||||
{
|
||||
return 'post';
|
||||
}
|
||||
|
||||
/**
|
||||
* Buttons for form actions
|
||||
*
|
||||
* Submit and cancel buttons (or whatever)
|
||||
* Sub-classes should overload this to show their own buttons.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
|
||||
function formActions()
|
||||
{
|
||||
// TRANS: Button text for action to save a new bookmark.
|
||||
$this->out->submit('submit', _m('BUTTON', 'Register'));
|
||||
}
|
||||
|
||||
/**
|
||||
* ID of the form
|
||||
*
|
||||
* Should be unique on the page. Sub-classes should overload this
|
||||
* to show their own IDs.
|
||||
*
|
||||
* @return int ID of the form
|
||||
*/
|
||||
|
||||
function id()
|
||||
{
|
||||
return 'form_email_registration';
|
||||
}
|
||||
|
||||
/**
|
||||
* Action of the form.
|
||||
*
|
||||
* URL to post to. Should be overloaded by subclasses to give
|
||||
* somewhere to post to.
|
||||
*
|
||||
* @return string URL to post to
|
||||
*/
|
||||
|
||||
function action()
|
||||
{
|
||||
return common_local_url('register');
|
||||
}
|
||||
|
||||
function formClass()
|
||||
{
|
||||
return 'form_confirm_registration form_settings';
|
||||
}
|
||||
}
|
@ -74,6 +74,7 @@ class EmailregisterAction extends Action
|
||||
protected $password2;
|
||||
protected $state;
|
||||
protected $error;
|
||||
protected $complete;
|
||||
|
||||
function prepare($argarray)
|
||||
{
|
||||
@ -99,14 +100,12 @@ class EmailregisterAction extends Action
|
||||
|
||||
$this->invitation = Invitation::staticGet('code', $this->code);
|
||||
|
||||
if (!empty($this->invitation)) {
|
||||
$this->state = self::CONFIRMINVITE;
|
||||
} else {
|
||||
$this->state = self::CONFIRMREGISTER;
|
||||
if (empty($this->invitation)) {
|
||||
|
||||
$this->confirmation = Confirm_address::staticGet('code', $this->code);
|
||||
|
||||
if (empty($this->confirmation)) {
|
||||
throw new ClientException(_('No such confirmation code.'), 405);
|
||||
throw new ClientException(_('No such confirmation code.'), 403);
|
||||
}
|
||||
}
|
||||
|
||||
@ -247,7 +246,7 @@ class EmailregisterAction extends Action
|
||||
$this->form = new ConfirmRegistrationForm($this,
|
||||
$nickname,
|
||||
$email,
|
||||
$this->invitation->code);
|
||||
$this->code);
|
||||
$this->showPage();
|
||||
}
|
||||
|
||||
@ -271,9 +270,9 @@ class EmailregisterAction extends Action
|
||||
|
||||
$nickname = $this->nicknameFromEmail($email);
|
||||
|
||||
$this->user = User::registerNew(array('nickname' => $nickname,
|
||||
'email' => $email,
|
||||
'email_confirmed' => true));
|
||||
$this->user = User::register(array('nickname' => $nickname,
|
||||
'email' => $email,
|
||||
'email_confirmed' => true));
|
||||
|
||||
if (empty($this->user)) {
|
||||
throw new Exception("Failed to register user.");
|
||||
@ -293,7 +292,7 @@ class EmailregisterAction extends Action
|
||||
throw new Exception('No confirmation thing.');
|
||||
}
|
||||
|
||||
common_redirect(common_local_url('doc', array('file' => 'registered')),
|
||||
common_redirect(common_local_url('doc', array('title' => 'welcome')),
|
||||
303);
|
||||
}
|
||||
|
||||
@ -307,6 +306,10 @@ class EmailregisterAction extends Action
|
||||
$headers['To'] = trim($confirm->address);
|
||||
$headers['Subject'] = sprintf(_('Confirm your registration on %1$s'), $sitename);
|
||||
|
||||
$confirmUrl = common_local_url('register', array('code' => $confirm->code));
|
||||
|
||||
common_debug('Confirm URL is ' . $confirmUrl);
|
||||
|
||||
$body = sprintf(_('Someone (probably you) has requested an account on %1$s using this email address.'.
|
||||
"\n".
|
||||
'To confirm the address, click the following URL or copy it into the address bar of your browser.'.
|
||||
@ -315,7 +318,7 @@ class EmailregisterAction extends Action
|
||||
"\n".
|
||||
'If it was not you, you can safely ignore this message.'),
|
||||
$sitename,
|
||||
common_local_url('register', array('code' => $confirm->code)));
|
||||
$confirmUrl);
|
||||
|
||||
mail_send($recipients, $headers, $body);
|
||||
}
|
||||
@ -376,203 +379,3 @@ class EmailregisterAction extends Action
|
||||
return $nickname;
|
||||
}
|
||||
}
|
||||
|
||||
class EmailRegistrationForm extends Form
|
||||
{
|
||||
protected $email;
|
||||
|
||||
function __construct($out, $email)
|
||||
{
|
||||
parent::__construct($out);
|
||||
$this->email = $email;
|
||||
}
|
||||
|
||||
function formData()
|
||||
{
|
||||
$this->out->element('p', 'instructions',
|
||||
_('Enter your email address to register for an account.'));
|
||||
|
||||
$this->out->elementStart('fieldset', array('id' => 'new_bookmark_data'));
|
||||
$this->out->elementStart('ul', 'form_data');
|
||||
|
||||
$this->li();
|
||||
$this->out->input('email',
|
||||
// TRANS: Field label on form for adding a new bookmark.
|
||||
_m('LABEL','E-mail address'),
|
||||
$this->email);
|
||||
$this->unli();
|
||||
|
||||
$this->out->elementEnd('ul');
|
||||
$this->out->elementEnd('fieldset');
|
||||
}
|
||||
|
||||
function method()
|
||||
{
|
||||
return 'post';
|
||||
}
|
||||
|
||||
/**
|
||||
* Buttons for form actions
|
||||
*
|
||||
* Submit and cancel buttons (or whatever)
|
||||
* Sub-classes should overload this to show their own buttons.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
|
||||
function formActions()
|
||||
{
|
||||
// TRANS: Button text for action to save a new bookmark.
|
||||
$this->out->submit('submit', _m('BUTTON', 'Register'));
|
||||
}
|
||||
|
||||
/**
|
||||
* ID of the form
|
||||
*
|
||||
* Should be unique on the page. Sub-classes should overload this
|
||||
* to show their own IDs.
|
||||
*
|
||||
* @return int ID of the form
|
||||
*/
|
||||
|
||||
function id()
|
||||
{
|
||||
return 'form_email_registration';
|
||||
}
|
||||
|
||||
/**
|
||||
* Action of the form.
|
||||
*
|
||||
* URL to post to. Should be overloaded by subclasses to give
|
||||
* somewhere to post to.
|
||||
*
|
||||
* @return string URL to post to
|
||||
*/
|
||||
|
||||
function action()
|
||||
{
|
||||
return common_local_url('register');
|
||||
}
|
||||
|
||||
function formClass()
|
||||
{
|
||||
return 'form_email_registration';
|
||||
}
|
||||
}
|
||||
|
||||
class ConfirmRegistrationForm extends Form
|
||||
{
|
||||
protected $code;
|
||||
protected $nickname;
|
||||
protected $email;
|
||||
|
||||
function __construct($out, $nickname, $email, $code)
|
||||
{
|
||||
parent::__construct($out);
|
||||
$this->nickname = $nickname;
|
||||
$this->email = $email;
|
||||
$this->code = $code;
|
||||
}
|
||||
|
||||
function formData()
|
||||
{
|
||||
$this->out->element('p', 'instructions',
|
||||
sprintf(_('Enter a password to confirm your account.')));
|
||||
|
||||
$this->out->elementStart('fieldset', array('id' => 'new_bookmark_data'));
|
||||
$this->out->elementStart('ul', 'form_data');
|
||||
|
||||
$this->hidden('code', $this->code);
|
||||
|
||||
$this->elementStart('li');
|
||||
// TRANS: Field label on account registration page.
|
||||
$this->password('password', _('Password'),
|
||||
// TRANS: Field title on account registration page.
|
||||
_('6 or more characters.'));
|
||||
$this->elementEnd('li');
|
||||
$this->elementStart('li');
|
||||
// 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');
|
||||
|
||||
$this->element('input', array('name' => 'tos',
|
||||
'type' => 'checkbox',
|
||||
'class' => 'checkbox',
|
||||
'id' => 'tos',
|
||||
'value' => 'true'));
|
||||
$this->text(' ');
|
||||
|
||||
$this->elementStart('label', array('class' => 'checkbox',
|
||||
'for' => 'tos'));
|
||||
|
||||
|
||||
$this->raw(sprintf(_('I agree to the <a href="%1$s">Terms of service</a> and '.
|
||||
'<a href="%1$s">Privacy policy</a> of this site.'),
|
||||
common_local_url('doc', 'tos'),
|
||||
common_local_url('doc', 'privacy')));
|
||||
|
||||
$this->elementEnd('label');
|
||||
|
||||
$this->elementEnd('li');
|
||||
|
||||
$this->out->elementEnd('ul');
|
||||
$this->out->elementEnd('fieldset');
|
||||
}
|
||||
|
||||
function method()
|
||||
{
|
||||
return 'post';
|
||||
}
|
||||
|
||||
/**
|
||||
* Buttons for form actions
|
||||
*
|
||||
* Submit and cancel buttons (or whatever)
|
||||
* Sub-classes should overload this to show their own buttons.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
|
||||
function formActions()
|
||||
{
|
||||
// TRANS: Button text for action to save a new bookmark.
|
||||
$this->out->submit('submit', _m('BUTTON', 'Register'));
|
||||
}
|
||||
|
||||
/**
|
||||
* ID of the form
|
||||
*
|
||||
* Should be unique on the page. Sub-classes should overload this
|
||||
* to show their own IDs.
|
||||
*
|
||||
* @return int ID of the form
|
||||
*/
|
||||
|
||||
function id()
|
||||
{
|
||||
return 'form_email_registration';
|
||||
}
|
||||
|
||||
/**
|
||||
* Action of the form.
|
||||
*
|
||||
* URL to post to. Should be overloaded by subclasses to give
|
||||
* somewhere to post to.
|
||||
*
|
||||
* @return string URL to post to
|
||||
*/
|
||||
|
||||
function action()
|
||||
{
|
||||
return common_local_url('register');
|
||||
}
|
||||
|
||||
function formClass()
|
||||
{
|
||||
return 'form_confirm_registration';
|
||||
}
|
||||
}
|
||||
|
130
plugins/EmailRegistration/emailregistrationform.php
Normal file
130
plugins/EmailRegistration/emailregistrationform.php
Normal file
@ -0,0 +1,130 @@
|
||||
<?php
|
||||
/**
|
||||
* StatusNet - the distributed open-source microblogging tool
|
||||
* Copyright (C) 2011, StatusNet, Inc.
|
||||
*
|
||||
* Email registration form
|
||||
*
|
||||
* PHP version 5
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* @category Email registration
|
||||
* @package StatusNet
|
||||
* @author Evan Prodromou <evan@status.net>
|
||||
* @copyright 2011 StatusNet, Inc.
|
||||
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
|
||||
* @link http://status.net/
|
||||
*/
|
||||
|
||||
if (!defined('STATUSNET')) {
|
||||
// This check helps protect against security problems;
|
||||
// your code file can't be executed directly from the web.
|
||||
exit(1);
|
||||
}
|
||||
|
||||
/**
|
||||
* Email registration form
|
||||
*
|
||||
* @category Email registration
|
||||
* @package StatusNet
|
||||
* @author Evan Prodromou <evan@status.net>
|
||||
* @copyright 2011 StatusNet, Inc.
|
||||
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
|
||||
* @link http://status.net/
|
||||
*/
|
||||
|
||||
class EmailRegistrationForm extends Form
|
||||
{
|
||||
protected $email;
|
||||
|
||||
function __construct($out, $email)
|
||||
{
|
||||
parent::__construct($out);
|
||||
$this->email = $email;
|
||||
}
|
||||
|
||||
function formData()
|
||||
{
|
||||
$this->out->element('p', 'instructions',
|
||||
_('Enter your email address to register for an account.'));
|
||||
|
||||
$this->out->elementStart('fieldset', array('id' => 'new_bookmark_data'));
|
||||
$this->out->elementStart('ul', 'form_data');
|
||||
|
||||
$this->li();
|
||||
$this->out->input('email',
|
||||
// TRANS: Field label on form for adding a new bookmark.
|
||||
_m('LABEL','E-mail address'),
|
||||
$this->email);
|
||||
$this->unli();
|
||||
|
||||
$this->out->elementEnd('ul');
|
||||
$this->out->elementEnd('fieldset');
|
||||
}
|
||||
|
||||
function method()
|
||||
{
|
||||
return 'post';
|
||||
}
|
||||
|
||||
/**
|
||||
* Buttons for form actions
|
||||
*
|
||||
* Submit and cancel buttons (or whatever)
|
||||
* Sub-classes should overload this to show their own buttons.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
|
||||
function formActions()
|
||||
{
|
||||
// TRANS: Button text for action to save a new bookmark.
|
||||
$this->out->submit('submit', _m('BUTTON', 'Register'));
|
||||
}
|
||||
|
||||
/**
|
||||
* ID of the form
|
||||
*
|
||||
* Should be unique on the page. Sub-classes should overload this
|
||||
* to show their own IDs.
|
||||
*
|
||||
* @return int ID of the form
|
||||
*/
|
||||
|
||||
function id()
|
||||
{
|
||||
return 'form_email_registration';
|
||||
}
|
||||
|
||||
/**
|
||||
* Action of the form.
|
||||
*
|
||||
* URL to post to. Should be overloaded by subclasses to give
|
||||
* somewhere to post to.
|
||||
*
|
||||
* @return string URL to post to
|
||||
*/
|
||||
|
||||
function action()
|
||||
{
|
||||
return common_local_url('register');
|
||||
}
|
||||
|
||||
function formClass()
|
||||
{
|
||||
return 'form_email_registration form_settings';
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user