Version 5.0.0 beta 9

This commit is contained in:
Neo committed 2025-12-19 17:47:00 -08:00
1 parent 214f649f1d
commit 56979f8ee8
202 files changed
+4403 -1123

No files matched your search

@@ -12,7 +12,6 @@ namespace IPS\core\modules\front\system;
/* To prevent PHP errors (extending class does not exist) revealing path */
use BadMethodCallException;
use DateInterval;
use DomainException;
use Exception;
@@ -24,7 +23,6 @@ use IPS\DateTime;
use IPS\Db;
use IPS\Dispatcher\Controller;
use IPS\Email;
use IPS\Events\Event;
use IPS\Helpers\Form;
use IPS\Helpers\Form\Captcha;
use IPS\Helpers\Form\Checkbox;
@@ -550,6 +548,12 @@ class register extends Controller
}
$captcha = new Captcha;
/* If PBR request is from the last 5 minutes, don't ask for a captcha again */
if( $postBeforeRegister !== NULL AND DateTime::ts( $postBeforeRegister['timestamp'] )->add( new \DateInterval('PT5M' ) )->getTimestamp() > time() )
{
$captcha = '';
}
if ( (string) $captcha !== '' )
{
@@ -865,7 +869,7 @@ class register extends Controller
$plainSecurityKey = Login::generateRandomString();
Db::i()->update( 'core_validating', [ 'security_key' => Encrypt::fromPlaintext( $plainSecurityKey )->tag(), 'email_sent' => time() ], [ 'vid=?', $reg['vid'] ] );
Email::buildFromTemplate( 'core', $reg['email_chg'] ? 'email_change' : 'registration_validate', array( Member::loggedIn(), $reg['vid'], $plainSecurityKey ), Email::TYPE_TRANSACTIONAL )->send( Member::loggedIn() );
Email::buildFromTemplate( 'core', $reg['email_chg'] ? 'email_change' : 'registration_validate', array( Member::loggedIn(), $reg['vid'], $plainSecurityKey, $reg['new_email'] ), Email::TYPE_TRANSACTIONAL )->send( Member::loggedIn() );
}
Output::i()->redirect( Url::internal( 'app=core&module=system&controller=register&do=validating', 'front', 'register' ), 'reg_email_resent' );
@@ -935,15 +939,15 @@ class register extends Controller
}
else
{
$oldEmail = $member->email;
$member->changeEmail( $record['new_email'] );
$member->members_bitoptions['validating'] = FALSE;
$member->save();
Event::fire( 'onEmailChange', $member, array( $member->email, $record['prev_email'] ) );
Db::i()->delete( 'core_validating', array( 'member_id=?', $member->member_id ) );
/* Send a confirmation email */
Email::buildFromTemplate( 'core', 'email_address_changed', array( $member, $record['prev_email'] ), Email::TYPE_TRANSACTIONAL )->send( $record['prev_email'], array(), array(), NULL, NULL, array( 'Reply-To' => Settings::i()->email_in ) );
Email::buildFromTemplate( 'core', 'email_address_changed', array( $member, $oldEmail ), Email::TYPE_TRANSACTIONAL )->send( $oldEmail, array(), array(), NULL, NULL, array( 'Reply-To' => Settings::i()->email_in ) );
}
/* Log in */
@@ -1148,28 +1152,6 @@ class register extends Controller
}
}
/* Change the email */
$oldEmail = Member::loggedIn()->email;
Member::loggedIn()->email = $values['new_email'];
Member::loggedIn()->save();
foreach ( Login::methods() as $method )
{
try
{
$method->changeEmail( Member::loggedIn(), $oldEmail, $values['new_email'] );
}
catch( BadMethodCallException $e ) {}
}
Member::loggedIn()->logHistory( 'core', 'email_change', array( 'old' => $oldEmail, 'new' => $values['new_email'], 'by' => 'manual' ) );
/* Invalidate sessions except this one */
Member::loggedIn()->invalidateSessionsAndLogins( Session::i()->id );
if( isset( Request::i()->cookie['login_key'] ) )
{
Device::loadOrCreate( Member::loggedIn() )->updateAfterAuthentication( TRUE );
}
/* If email validation is required, do that... */
if ( in_array( Settings::i()->reg_auth_type, array( 'user', 'admin_user' ) ) )
{
@@ -1191,14 +1173,34 @@ class register extends Controller
'user_verified' => ( Settings::i()->reg_auth_type == 'admin' ),
'ip_address' => Request::i()->ipAddress(),
'email_sent' => time(),
'security_key' => Encrypt::fromPlaintext( $plainSecurityKey )->tag()
'security_key' => Encrypt::fromPlaintext( $plainSecurityKey )->tag(),
'new_email' => $values['new_email']
] );
Email::buildFromTemplate( 'core', $pending['email_chg'] ? 'email_change' : 'registration_validate', array( Member::loggedIn(), $vid, $plainSecurityKey ), Email::TYPE_TRANSACTIONAL )->send( Member::loggedIn() );
if( $pending['email_chg'] )
{
Email::buildFromTemplate( 'core', 'email_change', [ Member::loggedIn(), $vid, $plainSecurityKey, $values['new_email'] ], Email::TYPE_TRANSACTIONAL )->send( $values['new_email'], array(), array(), NULL, NULL, array( 'Reply-To' => Settings::i()->email_in ) );
}
else
{
Email::buildFromTemplate( 'core', 'registration_validate', [ Member::loggedIn(), $vid, $plainSecurityKey, $values['new_email'] ], Email::TYPE_TRANSACTIONAL )->send( Member::loggedIn() );
}
}
else
{
Event::fire( 'onEmailChange', Member::loggedIn(), array( $values['new_email'], $oldEmail ) );
/* If we don't need validation, just change it */
$oldEmail = Member::loggedIn()->email;
Member::loggedIn()->changeEmail( $values['new_email'] );
/* Invalidate sessions except this one */
Member::loggedIn()->invalidateSessionsAndLogins( Session::i()->id );
if( isset( Request::i()->cookie['login_key'] ) )
{
Device::loadOrCreate( Member::loggedIn() )->updateAfterAuthentication( TRUE );
}
/* Send a confirmation email */
Email::buildFromTemplate( 'core', 'email_address_changed', array( Member::loggedIn(), $oldEmail ), Email::TYPE_TRANSACTIONAL )->send( $oldEmail, array(), array(), NULL, NULL, array( 'Reply-To' => Settings::i()->email_in ) );
}
/* Redirect */