Edit File by line

Deprecated: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in /home/sportsfever/public_html/filemanger/function.php on line 93

Warning: Undefined array key "page_file_edit_line" in /home/sportsfever/public_html/filemanger/edit_text_line.php on line 32
/home/sportsfe.../httpdocs/wp-conte.../plugins/wpforms-.../includes/fields
File: class-email.php
[500] Fix | Delete
// Standard email field.
[501] Fix | Delete
if ( ! $confirmation ) {
[502] Fix | Delete
[503] Fix | Delete
// Primary field.
[504] Fix | Delete
printf(
[505] Fix | Delete
'<input type="email" %s %s>',
[506] Fix | Delete
wpforms_html_attributes( $primary['id'], $primary['class'], $primary['data'], $primary['attr'] ),
[507] Fix | Delete
esc_attr( $primary['required'] )
[508] Fix | Delete
);
[509] Fix | Delete
$this->field_display_error( 'primary', $field );
[510] Fix | Delete
[511] Fix | Delete
// Confirmation email field configuration.
[512] Fix | Delete
} else {
[513] Fix | Delete
[514] Fix | Delete
// Row wrapper.
[515] Fix | Delete
echo '<div class="wpforms-field-row wpforms-field-' . sanitize_html_class( $field['size'] ) . '">';
[516] Fix | Delete
[517] Fix | Delete
// Primary field.
[518] Fix | Delete
echo '<div ' . wpforms_html_attributes( false, $primary['block'] ) . '>';
[519] Fix | Delete
$this->field_display_sublabel( 'primary', 'before', $field );
[520] Fix | Delete
printf(
[521] Fix | Delete
'<input type="email" %s %s>',
[522] Fix | Delete
wpforms_html_attributes( $primary['id'], $primary['class'], $primary['data'], $primary['attr'] ),
[523] Fix | Delete
$primary['required']
[524] Fix | Delete
);
[525] Fix | Delete
$this->field_display_sublabel( 'primary', 'after', $field );
[526] Fix | Delete
$this->field_display_error( 'primary', $field );
[527] Fix | Delete
echo '</div>';
[528] Fix | Delete
[529] Fix | Delete
// Secondary field.
[530] Fix | Delete
echo '<div ' . wpforms_html_attributes( false, $secondary['block'] ) . '>';
[531] Fix | Delete
$this->field_display_sublabel( 'secondary', 'before', $field );
[532] Fix | Delete
printf(
[533] Fix | Delete
'<input type="email" %s %s>',
[534] Fix | Delete
wpforms_html_attributes( $secondary['id'], $secondary['class'], $secondary['data'], $secondary['attr'] ),
[535] Fix | Delete
$secondary['required']
[536] Fix | Delete
);
[537] Fix | Delete
$this->field_display_sublabel( 'secondary', 'after', $field );
[538] Fix | Delete
$this->field_display_error( 'secondary', $field );
[539] Fix | Delete
echo '</div>';
[540] Fix | Delete
[541] Fix | Delete
echo '</div>';
[542] Fix | Delete
[543] Fix | Delete
} // End if().
[544] Fix | Delete
}
[545] Fix | Delete
[546] Fix | Delete
/**
[547] Fix | Delete
* Format and sanitize field.
[548] Fix | Delete
*
[549] Fix | Delete
* @since 1.3.0
[550] Fix | Delete
* @param int $field_id Field ID.
[551] Fix | Delete
* @param mixed $field_submit Field value that was submitted.
[552] Fix | Delete
* @param array $form_data Form data and settings.
[553] Fix | Delete
*/
[554] Fix | Delete
public function format( $field_id, $field_submit, $form_data ) {
[555] Fix | Delete
[556] Fix | Delete
// Define data.
[557] Fix | Delete
if ( is_array( $field_submit ) ) {
[558] Fix | Delete
$value = ! empty( $field_submit['primary'] ) ? $field_submit['primary'] : '';
[559] Fix | Delete
} else {
[560] Fix | Delete
$value = ! empty( $field_submit ) ? $field_submit : '';
[561] Fix | Delete
}
[562] Fix | Delete
[563] Fix | Delete
if ( $value && ! wpforms_is_email( $value ) ) {
[564] Fix | Delete
wpforms()->get( 'process' )->errors[ $form_data['id'] ][ $field_id ] = esc_html__( 'The provided email is not valid.', 'wpforms-lite' );
[565] Fix | Delete
[566] Fix | Delete
return;
[567] Fix | Delete
}
[568] Fix | Delete
[569] Fix | Delete
$name = ! empty( $form_data['fields'][ $field_id ] ['label'] ) ? $form_data['fields'][ $field_id ]['label'] : '';
[570] Fix | Delete
[571] Fix | Delete
// Set final field details.
[572] Fix | Delete
wpforms()->get( 'process' )->fields[ $field_id ] = [
[573] Fix | Delete
'name' => sanitize_text_field( $name ),
[574] Fix | Delete
'value' => sanitize_text_field( $this->decode_punycode( $value ) ),
[575] Fix | Delete
'id' => wpforms_validate_field_id( $field_id ),
[576] Fix | Delete
'type' => $this->type,
[577] Fix | Delete
];
[578] Fix | Delete
}
[579] Fix | Delete
[580] Fix | Delete
/**
[581] Fix | Delete
* Validate field on form submit.
[582] Fix | Delete
*
[583] Fix | Delete
* @since 1.0.0
[584] Fix | Delete
*
[585] Fix | Delete
* @param int $field_id Field ID.
[586] Fix | Delete
* @param mixed $field_submit Submitted field value (raw data).
[587] Fix | Delete
* @param array $form_data Form data and settings.
[588] Fix | Delete
*/
[589] Fix | Delete
public function validate( $field_id, $field_submit, $form_data ) { // phpcs:ignore Generic.Metrics.CyclomaticComplexity.TooHigh
[590] Fix | Delete
[591] Fix | Delete
$form_id = (int) $form_data['id'];
[592] Fix | Delete
[593] Fix | Delete
parent::validate( $field_id, $field_submit, $form_data );
[594] Fix | Delete
[595] Fix | Delete
if ( ! is_array( $field_submit ) && ! empty( $field_submit ) ) {
[596] Fix | Delete
$field_submit = [
[597] Fix | Delete
'primary' => $field_submit,
[598] Fix | Delete
];
[599] Fix | Delete
}
[600] Fix | Delete
[601] Fix | Delete
if ( empty( $field_submit['primary'] ) ) {
[602] Fix | Delete
return;
[603] Fix | Delete
}
[604] Fix | Delete
[605] Fix | Delete
$process = wpforms()->get( 'process' );
[606] Fix | Delete
[607] Fix | Delete
if ( ! $process ) {
[608] Fix | Delete
return;
[609] Fix | Delete
}
[610] Fix | Delete
[611] Fix | Delete
$field_submit['primary'] = $this->email_encode_punycode( $field_submit['primary'] );
[612] Fix | Delete
[613] Fix | Delete
if ( ! $field_submit['primary'] ) {
[614] Fix | Delete
$process->errors[ $form_id ][ $field_id ] = esc_html__( 'The provided email is not valid.', 'wpforms-lite' );
[615] Fix | Delete
[616] Fix | Delete
return;
[617] Fix | Delete
}
[618] Fix | Delete
[619] Fix | Delete
// Validate email field with confirmation.
[620] Fix | Delete
if ( isset( $form_data['fields'][ $field_id ]['confirmation'] ) && ! empty( $field_submit['secondary'] ) ) {
[621] Fix | Delete
$field_submit['secondary'] = $this->email_encode_punycode( $field_submit['secondary'] );
[622] Fix | Delete
[623] Fix | Delete
if ( ! $field_submit['secondary'] ) {
[624] Fix | Delete
$process->errors[ $form_id ][ $field_id ] = esc_html__( 'The provided email is not valid.', 'wpforms-lite' );
[625] Fix | Delete
[626] Fix | Delete
return;
[627] Fix | Delete
}
[628] Fix | Delete
[629] Fix | Delete
if ( $field_submit['primary'] !== $field_submit['secondary'] ) {
[630] Fix | Delete
$process->errors[ $form_id ][ $field_id ] = esc_html__( 'The provided emails do not match.', 'wpforms-lite' );
[631] Fix | Delete
[632] Fix | Delete
return;
[633] Fix | Delete
}
[634] Fix | Delete
[635] Fix | Delete
if ( ! $this->is_restricted_email( $field_submit['primary'], $form_data['fields'][ $field_id ] ) ) {
[636] Fix | Delete
$process->errors[ $form_id ][ $field_id ] = wpforms_setting( 'validation-email-restricted', esc_html__( 'This email address is not allowed.', 'wpforms-lite' ) );
[637] Fix | Delete
[638] Fix | Delete
return;
[639] Fix | Delete
}
[640] Fix | Delete
}
[641] Fix | Delete
[642] Fix | Delete
// Validate regular email field, without confirmation.
[643] Fix | Delete
if ( ! isset( $form_data['fields'][ $field_id ]['confirmation'] ) && ! $this->is_restricted_email( $field_submit['primary'], $form_data['fields'][ $field_id ] ) ) {
[644] Fix | Delete
$process->errors[ $form_id ][ $field_id ] = wpforms_setting( 'validation-email-restricted', esc_html__( 'This email address is not allowed.', 'wpforms-lite' ) );
[645] Fix | Delete
}
[646] Fix | Delete
}
[647] Fix | Delete
[648] Fix | Delete
/**
[649] Fix | Delete
* Ajax handler to detect restricted email.
[650] Fix | Delete
*
[651] Fix | Delete
* @since 1.6.3
[652] Fix | Delete
*/
[653] Fix | Delete
public function ajax_check_restricted_email() {
[654] Fix | Delete
[655] Fix | Delete
$form_id = filter_input( INPUT_POST, 'form_id', FILTER_SANITIZE_NUMBER_INT );
[656] Fix | Delete
$field_id = filter_input( INPUT_POST, 'field_id', FILTER_SANITIZE_NUMBER_INT );
[657] Fix | Delete
$email = filter_input( INPUT_POST, 'email', FILTER_SANITIZE_FULL_SPECIAL_CHARS, FILTER_FLAG_NO_ENCODE_QUOTES );
[658] Fix | Delete
[659] Fix | Delete
// The valid email can contain such characters: !#$%&'*+/=?^_`{|}~-.
[660] Fix | Delete
// After filtering the email, we need to decode the `&amp;`, otherwise the email with `&` couldn't be properly recognized.
[661] Fix | Delete
$email = str_replace( '&amp;', '&', $email );
[662] Fix | Delete
[663] Fix | Delete
if ( ! $form_id || ! $field_id || ! $email ) {
[664] Fix | Delete
wp_send_json_error();
[665] Fix | Delete
}
[666] Fix | Delete
[667] Fix | Delete
$form_data = wpforms()->get( 'form' )->get(
[668] Fix | Delete
$form_id,
[669] Fix | Delete
[ 'content_only' => true ]
[670] Fix | Delete
);
[671] Fix | Delete
[672] Fix | Delete
if ( empty( $form_data['fields'][ $field_id ] ) ) {
[673] Fix | Delete
wp_send_json_error();
[674] Fix | Delete
}
[675] Fix | Delete
[676] Fix | Delete
wp_send_json_success(
[677] Fix | Delete
$this->is_restricted_email( $email, $form_data['fields'][ $field_id ] )
[678] Fix | Delete
);
[679] Fix | Delete
}
[680] Fix | Delete
[681] Fix | Delete
/**
[682] Fix | Delete
* Sanitize restricted rules.
[683] Fix | Delete
*
[684] Fix | Delete
* @since 1.6.3
[685] Fix | Delete
*/
[686] Fix | Delete
public function ajax_sanitize_restricted_rules() {
[687] Fix | Delete
[688] Fix | Delete
$this->ajax_sanitize( self::RULES );
[689] Fix | Delete
}
[690] Fix | Delete
[691] Fix | Delete
/**
[692] Fix | Delete
* Sanitize default email.
[693] Fix | Delete
*
[694] Fix | Delete
* @since 1.7.5
[695] Fix | Delete
*/
[696] Fix | Delete
public function ajax_sanitize_default_email() {
[697] Fix | Delete
[698] Fix | Delete
$this->ajax_sanitize( self::EMAIL );
[699] Fix | Delete
}
[700] Fix | Delete
[701] Fix | Delete
/**
[702] Fix | Delete
* Sanitize email options input.
[703] Fix | Delete
*
[704] Fix | Delete
* @since 1.7.5
[705] Fix | Delete
*
[706] Fix | Delete
* @param string $type Type of sanitization.
[707] Fix | Delete
*
[708] Fix | Delete
* @return void
[709] Fix | Delete
*/
[710] Fix | Delete
private function ajax_sanitize( $type ) {
[711] Fix | Delete
[712] Fix | Delete
// Run a security check.
[713] Fix | Delete
check_ajax_referer( 'wpforms-builder', 'nonce' );
[714] Fix | Delete
[715] Fix | Delete
$content = filter_input( INPUT_GET, 'content', FILTER_SANITIZE_FULL_SPECIAL_CHARS );
[716] Fix | Delete
$content = wpforms_json_decode( $content, true );
[717] Fix | Delete
[718] Fix | Delete
if ( ! $content ) {
[719] Fix | Delete
wp_send_json_error();
[720] Fix | Delete
}
[721] Fix | Delete
[722] Fix | Delete
switch ( $type ) {
[723] Fix | Delete
case self::RULES:
[724] Fix | Delete
$current = $content['current'];
[725] Fix | Delete
$other = $current === 'allow' ? 'deny' : 'allow';
[726] Fix | Delete
$current_rules = $this->sanitize_restricted_rules( $content[ $current ] );
[727] Fix | Delete
$other_rules = $this->sanitize_restricted_rules( $content[ $other ] );
[728] Fix | Delete
$intersect_rules = array_intersect( $current_rules, $other_rules );
[729] Fix | Delete
$current_rules = array_diff( $current_rules, $intersect_rules );
[730] Fix | Delete
$content = [
[731] Fix | Delete
'currentField' => $this->decode_email_patterns_rules_array( $current_rules ),
[732] Fix | Delete
'intersect' => str_replace(
[733] Fix | Delete
PHP_EOL,
[734] Fix | Delete
'<br>',
[735] Fix | Delete
$this->decode_email_patterns_rules_array( $intersect_rules )
[736] Fix | Delete
),
[737] Fix | Delete
];
[738] Fix | Delete
break;
[739] Fix | Delete
[740] Fix | Delete
case self::EMAIL:
[741] Fix | Delete
list( $local, $domain ) = $this->parse_email_pattern( $content );
[742] Fix | Delete
[743] Fix | Delete
$local = $this->sanitize_local_pattern( $local );
[744] Fix | Delete
$domain = $this->sanitize_domain_pattern( $domain );
[745] Fix | Delete
[746] Fix | Delete
$content = (string) wpforms_is_email( $this->get_pattern( $local, $domain ) );
[747] Fix | Delete
break;
[748] Fix | Delete
[749] Fix | Delete
default:
[750] Fix | Delete
break;
[751] Fix | Delete
}
[752] Fix | Delete
[753] Fix | Delete
wp_send_json_success( $content );
[754] Fix | Delete
}
[755] Fix | Delete
[756] Fix | Delete
/**
[757] Fix | Delete
* Verify that an email pattern is valid.
[758] Fix | Delete
*
[759] Fix | Delete
* @since 1.7.5
[760] Fix | Delete
*
[761] Fix | Delete
* @param string $pattern Email pattern.
[762] Fix | Delete
*
[763] Fix | Delete
* @return string|false
[764] Fix | Delete
*/
[765] Fix | Delete
private function is_email_pattern( $pattern ) {
[766] Fix | Delete
[767] Fix | Delete
if ( ! $pattern ) {
[768] Fix | Delete
// Empty pattern is not valid.
[769] Fix | Delete
return false;
[770] Fix | Delete
}
[771] Fix | Delete
[772] Fix | Delete
list( $local, $domain ) = $this->parse_email_pattern( $pattern );
[773] Fix | Delete
[774] Fix | Delete
$local = $this->sanitize_local_pattern( $local );
[775] Fix | Delete
$domain = $this->sanitize_domain_pattern( $domain );
[776] Fix | Delete
[777] Fix | Delete
if ( mb_strpos( $pattern, '@' ) === false ) {
[778] Fix | Delete
return $this->is_email_pattern_without_at( $local );
[779] Fix | Delete
}
[780] Fix | Delete
[781] Fix | Delete
$domain_check = str_replace( '*', '', $domain );
[782] Fix | Delete
$domain_check = $this->maybe_adjust_domain( $domain_check );
[783] Fix | Delete
$pattern_check = $this->get_pattern( $local, $domain_check );
[784] Fix | Delete
[785] Fix | Delete
if ( wpforms_is_email( $pattern_check ) ) {
[786] Fix | Delete
return $this->get_pattern( $local, $domain );
[787] Fix | Delete
}
[788] Fix | Delete
[789] Fix | Delete
return false;
[790] Fix | Delete
}
[791] Fix | Delete
[792] Fix | Delete
/**
[793] Fix | Delete
* Sanitize the local or domain part of the email pattern.
[794] Fix | Delete
*
[795] Fix | Delete
* @since 1.7.5
[796] Fix | Delete
*
[797] Fix | Delete
* @param string $part Local or domain part of the email pattern.
[798] Fix | Delete
* @param string $pattern Sanitization pattern.
[799] Fix | Delete
*
[800] Fix | Delete
* @return string
[801] Fix | Delete
*/
[802] Fix | Delete
private function sanitize_part_pattern( $part, $pattern ) {
[803] Fix | Delete
[804] Fix | Delete
/**
[805] Fix | Delete
* Smart tag placeholder. Should contain allowed chars only.
[806] Fix | Delete
* See patterns in sanitize_local_pattern(), sanitize_domain_pattern().
[807] Fix | Delete
*/
[808] Fix | Delete
$smart_tag_placeholder = '-wpforms-smart-tag-';
[809] Fix | Delete
[810] Fix | Delete
$smart_tag_pattern = '/{.+?}/';
[811] Fix | Delete
$smart_tags = [];
[812] Fix | Delete
[813] Fix | Delete
if ( preg_match_all( $smart_tag_pattern, $part, $m ) ) {
[814] Fix | Delete
$smart_tags = $m[0];
[815] Fix | Delete
[816] Fix | Delete
foreach ( $smart_tags as $smart_tag ) {
[817] Fix | Delete
$part = preg_replace(
[818] Fix | Delete
'/' . preg_quote( $smart_tag, '/' ) . '/',
[819] Fix | Delete
$smart_tag_placeholder,
[820] Fix | Delete
$part,
[821] Fix | Delete
1
[822] Fix | Delete
);
[823] Fix | Delete
}
[824] Fix | Delete
}
[825] Fix | Delete
[826] Fix | Delete
// Sanitize part by pattern.
[827] Fix | Delete
$part = preg_replace( $pattern, '', $part );
[828] Fix | Delete
[829] Fix | Delete
foreach ( $smart_tags as $smart_tag ) {
[830] Fix | Delete
$part = preg_replace(
[831] Fix | Delete
'/' . preg_quote( $smart_tag_placeholder, '/' ) . '/',
[832] Fix | Delete
$smart_tag,
[833] Fix | Delete
$part,
[834] Fix | Delete
1
[835] Fix | Delete
);
[836] Fix | Delete
}
[837] Fix | Delete
[838] Fix | Delete
return $part;
[839] Fix | Delete
}
[840] Fix | Delete
[841] Fix | Delete
/**
[842] Fix | Delete
* Sanitize the local part of the email pattern.
[843] Fix | Delete
*
[844] Fix | Delete
* @since 1.7.5
[845] Fix | Delete
*
[846] Fix | Delete
* @param string $local Local part of the email pattern.
[847] Fix | Delete
*
[848] Fix | Delete
* @return string
[849] Fix | Delete
*/
[850] Fix | Delete
private function sanitize_local_pattern( $local ) {
[851] Fix | Delete
[852] Fix | Delete
/**
[853] Fix | Delete
* This regexp is from is_email() WP core function
[854] Fix | Delete
* with added international characters and
[855] Fix | Delete
* asterisk [*] for patterns.
[856] Fix | Delete
*/
[857] Fix | Delete
return $this->sanitize_part_pattern( $local, '/[^a-zA-Z0-9\x{0080}-\x{0FFF}!#$%&\'*+\/=?^_`{|}~.-]/u' );
[858] Fix | Delete
}
[859] Fix | Delete
[860] Fix | Delete
/**
[861] Fix | Delete
* Sanitize the domain part of the email pattern.
[862] Fix | Delete
*
[863] Fix | Delete
* @since 1.7.5
[864] Fix | Delete
*
[865] Fix | Delete
* @param string $domain Domain part of the email pattern.
[866] Fix | Delete
*
[867] Fix | Delete
* @return string
[868] Fix | Delete
*/
[869] Fix | Delete
private function sanitize_domain_pattern( $domain ) {
[870] Fix | Delete
[871] Fix | Delete
/**
[872] Fix | Delete
* This regexp is from is_email() WP core function
[873] Fix | Delete
* with added international characters,
[874] Fix | Delete
* dot [.] for the whole domain part and
[875] Fix | Delete
* asterisk [*] for patterns.
[876] Fix | Delete
*/
[877] Fix | Delete
return $this->sanitize_part_pattern( $domain, '/[^a-z0-9\x{0080}-\x{FFFF}-.*]/u' );
[878] Fix | Delete
}
[879] Fix | Delete
[880] Fix | Delete
/**
[881] Fix | Delete
* Maybe replace empty subdomains with templates.
[882] Fix | Delete
*
[883] Fix | Delete
* @since 1.7.5
[884] Fix | Delete
*
[885] Fix | Delete
* @param string $domain Email domain.
[886] Fix | Delete
*
[887] Fix | Delete
* @return string
[888] Fix | Delete
*/
[889] Fix | Delete
private function maybe_adjust_domain( $domain ) {
[890] Fix | Delete
[891] Fix | Delete
$domain_subs = array_pad( explode( '.', $domain ), 2, '' );
[892] Fix | Delete
$domain_template_subs = [ 'a', 'me' ];
[893] Fix | Delete
[894] Fix | Delete
foreach ( $domain_template_subs as $index => $domain_template_sub ) {
[895] Fix | Delete
$domain_subs[ $index ] = trim( $domain_subs[ $index ] );
[896] Fix | Delete
[897] Fix | Delete
if ( ! $domain_subs[ $index ] ) {
[898] Fix | Delete
$domain_subs[ $index ] = $domain_template_sub;
[899] Fix | Delete
}
[900] Fix | Delete
}
[901] Fix | Delete
[902] Fix | Delete
return implode( '.', $domain_subs );
[903] Fix | Delete
}
[904] Fix | Delete
[905] Fix | Delete
/**
[906] Fix | Delete
* Get pattern from local and domain parts.
[907] Fix | Delete
*
[908] Fix | Delete
* @since 1.7.5
[909] Fix | Delete
*
[910] Fix | Delete
* @param string $local Local part.
[911] Fix | Delete
* @param string $domain Domain part.
[912] Fix | Delete
*
[913] Fix | Delete
* @return string
[914] Fix | Delete
*/
[915] Fix | Delete
private function get_pattern( $local, $domain = '' ) {
[916] Fix | Delete
[917] Fix | Delete
return implode( '@', array_filter( [ $local, $domain ] ) );
[918] Fix | Delete
}
[919] Fix | Delete
[920] Fix | Delete
/**
[921] Fix | Delete
* Sanitize restricted rules.
[922] Fix | Delete
*
[923] Fix | Delete
* @since 1.6.3
[924] Fix | Delete
*
[925] Fix | Delete
* @param string $content Content.
[926] Fix | Delete
*
[927] Fix | Delete
* @return array
[928] Fix | Delete
*/
[929] Fix | Delete
private function sanitize_restricted_rules( $content ) {
[930] Fix | Delete
[931] Fix | Delete
$patterns = array_filter( preg_split( '/\r\n|\r|\n|,/', $content ) );
[932] Fix | Delete
[933] Fix | Delete
foreach ( $patterns as $key => $pattern ) {
[934] Fix | Delete
$pattern = mb_strtolower( trim( $pattern ) );
[935] Fix | Delete
$email_pattern = $this->is_email_pattern( $pattern );
[936] Fix | Delete
[937] Fix | Delete
if ( ! $email_pattern ) {
[938] Fix | Delete
unset( $patterns[ $key ] );
[939] Fix | Delete
continue;
[940] Fix | Delete
}
[941] Fix | Delete
[942] Fix | Delete
$patterns[ $key ] = $this->encode_punycode( $email_pattern );
[943] Fix | Delete
}
[944] Fix | Delete
[945] Fix | Delete
return array_unique( $patterns );
[946] Fix | Delete
}
[947] Fix | Delete
[948] Fix | Delete
/**
[949] Fix | Delete
* The check is a restricted email.
[950] Fix | Delete
*
[951] Fix | Delete
* @since 1.6.3
[952] Fix | Delete
*
[953] Fix | Delete
* @param string $email Email string.
[954] Fix | Delete
* @param array $field Field data.
[955] Fix | Delete
*
[956] Fix | Delete
* @return bool
[957] Fix | Delete
*/
[958] Fix | Delete
private function is_restricted_email( $email, $field ) {
[959] Fix | Delete
[960] Fix | Delete
if ( empty( $field['filter_type'] ) || empty( $field[ $field['filter_type'] ] ) ) {
[961] Fix | Delete
return true;
[962] Fix | Delete
}
[963] Fix | Delete
[964] Fix | Delete
$email = mb_strtolower( trim( $email ) );
[965] Fix | Delete
[966] Fix | Delete
if ( ! wpforms_is_email( $email ) ) {
[967] Fix | Delete
return false;
[968] Fix | Delete
}
[969] Fix | Delete
[970] Fix | Delete
// Chrome and Edge encode <input type="email"> to punycode, but domain part only.
[971] Fix | Delete
// Firefox sends intl email as is.
[972] Fix | Delete
if ( $this->is_encoded_punycode( $email ) ) {
[973] Fix | Delete
$email = $this->decode_punycode( $email );
[974] Fix | Delete
}
[975] Fix | Delete
[976] Fix | Delete
$patterns = $this->sanitize_restricted_rules( $field[ $field['filter_type'] ] );
[977] Fix | Delete
$patterns = array_map( [ $this, 'decode_punycode' ], $patterns );
[978] Fix | Delete
$patterns = array_map( [ $this, 'sanitize_email_pattern' ], $patterns );
[979] Fix | Delete
[980] Fix | Delete
$check = $field['filter_type'] === 'allowlist';
[981] Fix | Delete
[982] Fix | Delete
foreach ( $patterns as $pattern ) {
[983] Fix | Delete
if ( preg_match( '/' . $pattern . '/', $email ) ) {
[984] Fix | Delete
return $check;
[985] Fix | Delete
}
[986] Fix | Delete
}
[987] Fix | Delete
[988] Fix | Delete
return ! $check;
[989] Fix | Delete
}
[990] Fix | Delete
[991] Fix | Delete
/**
[992] Fix | Delete
* Sanitize from email patter a REGEX pattern.
[993] Fix | Delete
*
[994] Fix | Delete
* @since 1.6.3
[995] Fix | Delete
*
[996] Fix | Delete
* @param string $pattern Pattern line.
[997] Fix | Delete
*
[998] Fix | Delete
* @return string
[999] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function