private function _setUserEmail()
{
global $defender;
$locale = fusion_get_locale();
$settings = fusion_get_settings();
$this->data['user_hide_email'] = !empty($_POST['user_hide_email']) && $_POST['user_hide_email'] == 1 ? 1 : 0;
$this->_userEmail = isset($_POST['user_email']) ? form_sanitizer($_POST['user_email'], "", "user_email") : "";
if ($this->_userEmail != "" && $this->_userEmail != $this->userData['user_email']) {
// override the requirements of password to change email address of a member in admin panel
if (iADMIN && checkrights("M")) {
$this->_isValidCurrentPassword = true;
// changing an email in administration panel
} elseif (!$this->registration) {
$this->verify_password();
}
// Require user password for email change
if ($this->_isValidCurrentPassword || $this->registration) {
// Require a valid email account
if (preg_check("/^[-0-9A-Z_\\.]{1,50}@([-0-9A-Z_\\.]+\\.){1,50}([0-9A-Z]){2,6}\$/i", $this->_userEmail)) {
if (dbcount("(blacklist_id)", DB_BLACKLIST, ":email like replace(if (blacklist_email like '%@%' or blacklist_email like '%\\%%', blacklist_email, concat('%@', blacklist_email)), '_', '\\_')", array(':email' => $this->_userEmail))) {
// this email blacklisted.
$defender->stop();
$defender->setInputError('user_email');
$defender->setErrorText('user_email', $locale['u124']);
} else {
$email_active = dbcount("(user_id)", DB_USERS, "user_email='" . $this->_userEmail . "'");
$email_inactive = dbcount("(user_code)", DB_NEW_USERS, "user_email='" . $this->_userEmail . "'");
if ($email_active == 0 && $email_inactive == 0) {
if ($this->verifyNewEmail && $settings['email_verification'] == 1) {
$this->_verifyNewEmail();
} else {
// Require this for return
$this->data['user_email'] = $this->_userEmail;
}
} else {
// email taken
$defender->stop();
$defender->setInputError('user_email');
$defender->setErrorText('user_email', $locale['u125']);
}
}
} else {
// invalid email address
$defender->stop();
$defender->setInputError('user_email');
$defender->setErrorText('user_email', $locale['u123']);
// once refresh, text lost.
}
} else {
// must have a valid password to change email
$defender->stop();
$defender->setInputError('user_email');
$defender->setErrorText('user_email', $locale['u156']);
}
}
}