Index: admin/configuration.php --- admin/configuration.php +++ admin/configuration.php @@ -50,6 +50,13 @@ $trusted_post_variables = array( 'xpc_private_key', 'xpc_public_key', 'breadcrumbs_separator', + 'company_mail_from', + 'newsletter_email', + 'orders_department', + 'site_administrator', + 'smtp_mail_from', + 'support_department', + 'users_department', ); define('XC_SKIP_BOUNCER_TEST',1); @@ -269,6 +276,9 @@ if ($option == 'User_Profiles') { // Check email $validation_result = $is_empty || func_check_email($val); + } elseif ($var_properties[$key]['validation'] == 'email_extended') { + // Check email via XCEmailFormat::EXTENDED + $validation_result = $is_empty || func_check_email($val, XCEmailFormat::EXTENDED); } elseif ($var_properties[$key]['validation'] == 'emails') { // Check emails list @@ -1461,6 +1471,7 @@ $smarty->assign('options', $options); $smarty->assign('option', $option); $smarty->assign('option_title', $_option_title); $smarty->assign('main', 'configuration'); +$smarty->assign('email_extended_validation_regexp', func_email_validation_regexp(XCEmailFormat::EXTENDED)); if (!empty($_option_title)) $location[] = array( $_option_title, ''); Index: include/func/func.core.php --- include/func/func.core.php +++ include/func/func.core.php @@ -52,6 +52,11 @@ define('SKIP_CACHE', !USE_CACHE); define('TEXT_MODE', TRUE); define('HTML_MODE', !TEXT_MODE); +abstract class XCEmailFormat { + const EXTENDED = 'EXTENDED'; +} + + /** * Use this function to load code of functions on demand (include/func/func.*.php) */ @@ -3044,8 +3049,7 @@ function func_get_php_execution_mode() /** * Returns regular expression for proper email validation */ -function func_email_validation_regexp() -{ +function func_email_validation_regexp($format = '') { //{{{ // Regexp for address part according to RFC 822 /* $qtext = '[^\\x0d\\x22\\x5c\\x80-\\xff]'; @@ -3068,8 +3072,13 @@ function func_email_validation_regexp() # return "^(?:[a-z0-9!#$%&'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+\/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])$"; // RFC 2822 - based reg.exp. without double quotes and square brackets - return "^[a-z0-9!#$%&'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+\/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z](?:[a-z0-9-]*[a-z0-9])$"; -} + if (empty($format)) { + return "^[a-z0-9!#$%&'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+\/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z](?:[a-z0-9-]*[a-z0-9])$"; + } elseif ($format == XCEmailFormat::EXTENDED) { + // Your Company Name format + return "^([a-z0-9!#$%&'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+\/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z](?:[a-z0-9-]*[a-z0-9]))|([A-z 0-9]{3,}[ ]{1}(<){1}[a-z0-9!#$%&'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+\/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z](?:[a-z0-9-]*[a-z0-9])(>){1})$"; + } +} //}}} /** * Display error page using message.html file Index: include/func/func.mail.php --- include/func/func.mail.php +++ include/func/func.mail.php @@ -768,11 +768,8 @@ function func_pgp_add_key() /** * This function checks if email is valid */ -function func_check_email($email) -{ - - $email_regular_expression = func_email_validation_regexp(); - +function func_check_email($email, $format = '') { + $email_regular_expression = func_email_validation_regexp($format); return preg_match('/'.$email_regular_expression.'/Di', stripslashes($email)); } Index: skin/common_files/admin/main/conf_fields_validation_js.tpl --- skin/common_files/admin/main/conf_fields_validation_js.tpl +++ skin/common_files/admin/main/conf_fields_validation_js.tpl @@ -19,6 +19,7 @@ var validationFields = [ ]; var invalid_parameter_text = '{$lng.err_invalid_field_data|wm_remove|escape:javascript}'; +var email_extended_validation_regexp = new RegExp("{$email_extended_validation_regexp|wm_remove|escape:javascript}", "gi"); {getvar var=_styles func=func_get_configuration_styles} {if $_styles} Index: skin/common_files/js/conf_fields_validation.js --- skin/common_files/js/conf_fields_validation.js +++ skin/common_files/js/conf_fields_validation.js @@ -48,7 +48,11 @@ function validateFields() { res = is_empty || value.search(email_validation_regexp) !== -1; break; - case "emails": + case "email_extended": + res = is_empty || value.search(email_extended_validation_regexp) !== -1; + break; + + case "emails": var emails = value.split(/,/); var n = 0; for (var m = 0; m < emails.length; m++) { @@ -135,6 +139,7 @@ function validateFields() { if ( !res && typeof validationFields[i].validation == 'string' + && validationFields[i].validation.match(/php_ver:(\d+.\d+.\d+)/gi) && validationFields[i].validation.match(/php_ver:(\d+.\d+.\d+)/gi).length > 0 ) { res = true;