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
/home/sportsfe.../httpdocs/wp-conte.../plugins/contact-.../modules/recaptch...
File: recaptcha.php
<?php
[0] Fix | Delete
/**
[1] Fix | Delete
* reCAPTCHA module main file
[2] Fix | Delete
*
[3] Fix | Delete
* @link https://contactform7.com/recaptcha/
[4] Fix | Delete
*/
[5] Fix | Delete
[6] Fix | Delete
wpcf7_include_module_file( 'recaptcha/service.php' );
[7] Fix | Delete
[8] Fix | Delete
[9] Fix | Delete
add_action( 'wpcf7_init', 'wpcf7_recaptcha_register_service', 40, 0 );
[10] Fix | Delete
[11] Fix | Delete
/**
[12] Fix | Delete
* Registers the reCAPTCHA service.
[13] Fix | Delete
*/
[14] Fix | Delete
function wpcf7_recaptcha_register_service() {
[15] Fix | Delete
$integration = WPCF7_Integration::get_instance();
[16] Fix | Delete
[17] Fix | Delete
$integration->add_service( 'recaptcha',
[18] Fix | Delete
WPCF7_RECAPTCHA::get_instance()
[19] Fix | Delete
);
[20] Fix | Delete
}
[21] Fix | Delete
[22] Fix | Delete
[23] Fix | Delete
add_action(
[24] Fix | Delete
'wp_enqueue_scripts',
[25] Fix | Delete
'wpcf7_recaptcha_enqueue_scripts',
[26] Fix | Delete
20, 0
[27] Fix | Delete
);
[28] Fix | Delete
[29] Fix | Delete
/**
[30] Fix | Delete
* Enqueues frontend scripts for reCAPTCHA.
[31] Fix | Delete
*/
[32] Fix | Delete
function wpcf7_recaptcha_enqueue_scripts() {
[33] Fix | Delete
$service = WPCF7_RECAPTCHA::get_instance();
[34] Fix | Delete
[35] Fix | Delete
if ( ! $service->is_active() ) {
[36] Fix | Delete
return;
[37] Fix | Delete
}
[38] Fix | Delete
[39] Fix | Delete
$url = 'https://www.google.com/recaptcha/api.js';
[40] Fix | Delete
[41] Fix | Delete
if ( apply_filters( 'wpcf7_use_recaptcha_net', false ) ) {
[42] Fix | Delete
$url = 'https://www.recaptcha.net/recaptcha/api.js';
[43] Fix | Delete
}
[44] Fix | Delete
[45] Fix | Delete
wp_register_script( 'google-recaptcha',
[46] Fix | Delete
add_query_arg(
[47] Fix | Delete
array(
[48] Fix | Delete
'render' => $service->get_sitekey(),
[49] Fix | Delete
),
[50] Fix | Delete
$url
[51] Fix | Delete
),
[52] Fix | Delete
array(),
[53] Fix | Delete
'3.0',
[54] Fix | Delete
array( 'in_footer' => true )
[55] Fix | Delete
);
[56] Fix | Delete
[57] Fix | Delete
$assets = array();
[58] Fix | Delete
$asset_file = wpcf7_plugin_path( 'modules/recaptcha/index.asset.php' );
[59] Fix | Delete
[60] Fix | Delete
if ( file_exists( $asset_file ) ) {
[61] Fix | Delete
$assets = include( $asset_file );
[62] Fix | Delete
}
[63] Fix | Delete
[64] Fix | Delete
$assets = wp_parse_args( $assets, array(
[65] Fix | Delete
'dependencies' => array(),
[66] Fix | Delete
'version' => WPCF7_VERSION,
[67] Fix | Delete
) );
[68] Fix | Delete
[69] Fix | Delete
wp_register_script(
[70] Fix | Delete
'wpcf7-recaptcha',
[71] Fix | Delete
wpcf7_plugin_url( 'modules/recaptcha/index.js' ),
[72] Fix | Delete
array_merge(
[73] Fix | Delete
$assets['dependencies'],
[74] Fix | Delete
array(
[75] Fix | Delete
'google-recaptcha',
[76] Fix | Delete
'wp-polyfill',
[77] Fix | Delete
)
[78] Fix | Delete
),
[79] Fix | Delete
$assets['version'],
[80] Fix | Delete
array( 'in_footer' => true )
[81] Fix | Delete
);
[82] Fix | Delete
[83] Fix | Delete
wp_enqueue_script( 'wpcf7-recaptcha' );
[84] Fix | Delete
[85] Fix | Delete
wp_localize_script( 'wpcf7-recaptcha',
[86] Fix | Delete
'wpcf7_recaptcha',
[87] Fix | Delete
array(
[88] Fix | Delete
'sitekey' => $service->get_sitekey(),
[89] Fix | Delete
'actions' => apply_filters( 'wpcf7_recaptcha_actions', array(
[90] Fix | Delete
'homepage' => 'homepage',
[91] Fix | Delete
'contactform' => 'contactform',
[92] Fix | Delete
) ),
[93] Fix | Delete
)
[94] Fix | Delete
);
[95] Fix | Delete
}
[96] Fix | Delete
[97] Fix | Delete
[98] Fix | Delete
add_filter(
[99] Fix | Delete
'wpcf7_form_hidden_fields',
[100] Fix | Delete
'wpcf7_recaptcha_add_hidden_fields',
[101] Fix | Delete
100, 1
[102] Fix | Delete
);
[103] Fix | Delete
[104] Fix | Delete
/**
[105] Fix | Delete
* Adds hidden form field for reCAPTCHA.
[106] Fix | Delete
*/
[107] Fix | Delete
function wpcf7_recaptcha_add_hidden_fields( $fields ) {
[108] Fix | Delete
$service = WPCF7_RECAPTCHA::get_instance();
[109] Fix | Delete
[110] Fix | Delete
if ( ! $service->is_active() ) {
[111] Fix | Delete
return $fields;
[112] Fix | Delete
}
[113] Fix | Delete
[114] Fix | Delete
return array_merge( $fields, array(
[115] Fix | Delete
'_wpcf7_recaptcha_response' => '',
[116] Fix | Delete
) );
[117] Fix | Delete
}
[118] Fix | Delete
[119] Fix | Delete
[120] Fix | Delete
add_filter( 'wpcf7_spam', 'wpcf7_recaptcha_verify_response', 9, 2 );
[121] Fix | Delete
[122] Fix | Delete
/**
[123] Fix | Delete
* Verifies reCAPTCHA token on the server side.
[124] Fix | Delete
*/
[125] Fix | Delete
function wpcf7_recaptcha_verify_response( $spam, $submission ) {
[126] Fix | Delete
if ( $spam ) {
[127] Fix | Delete
return $spam;
[128] Fix | Delete
}
[129] Fix | Delete
[130] Fix | Delete
$service = WPCF7_RECAPTCHA::get_instance();
[131] Fix | Delete
[132] Fix | Delete
if ( ! $service->is_active() ) {
[133] Fix | Delete
return $spam;
[134] Fix | Delete
}
[135] Fix | Delete
[136] Fix | Delete
$token = trim( $_POST['_wpcf7_recaptcha_response'] ?? '' );
[137] Fix | Delete
[138] Fix | Delete
if ( $service->verify( $token ) ) { // Human
[139] Fix | Delete
$spam = false;
[140] Fix | Delete
} else { // Bot
[141] Fix | Delete
$spam = true;
[142] Fix | Delete
[143] Fix | Delete
if ( '' === $token ) {
[144] Fix | Delete
$submission->add_spam_log( array(
[145] Fix | Delete
'agent' => 'recaptcha',
[146] Fix | Delete
'reason' => __(
[147] Fix | Delete
'reCAPTCHA response token is empty.',
[148] Fix | Delete
'contact-form-7'
[149] Fix | Delete
),
[150] Fix | Delete
) );
[151] Fix | Delete
} else {
[152] Fix | Delete
$submission->add_spam_log( array(
[153] Fix | Delete
'agent' => 'recaptcha',
[154] Fix | Delete
'reason' => sprintf(
[155] Fix | Delete
__(
[156] Fix | Delete
'reCAPTCHA score (%1$.2f) is lower than the threshold (%2$.2f).',
[157] Fix | Delete
'contact-form-7'
[158] Fix | Delete
),
[159] Fix | Delete
$service->get_last_score(),
[160] Fix | Delete
$service->get_threshold()
[161] Fix | Delete
),
[162] Fix | Delete
) );
[163] Fix | Delete
}
[164] Fix | Delete
}
[165] Fix | Delete
[166] Fix | Delete
return $spam;
[167] Fix | Delete
}
[168] Fix | Delete
[169] Fix | Delete
[170] Fix | Delete
add_action( 'wpcf7_init', 'wpcf7_recaptcha_add_form_tag_recaptcha', 10, 0 );
[171] Fix | Delete
[172] Fix | Delete
/**
[173] Fix | Delete
* Registers form-tag types for reCAPTCHA.
[174] Fix | Delete
*/
[175] Fix | Delete
function wpcf7_recaptcha_add_form_tag_recaptcha() {
[176] Fix | Delete
$service = WPCF7_RECAPTCHA::get_instance();
[177] Fix | Delete
[178] Fix | Delete
if ( ! $service->is_active() ) {
[179] Fix | Delete
return;
[180] Fix | Delete
}
[181] Fix | Delete
[182] Fix | Delete
wpcf7_add_form_tag( 'recaptcha',
[183] Fix | Delete
'__return_empty_string', // no output
[184] Fix | Delete
array( 'display-block' => true )
[185] Fix | Delete
);
[186] Fix | Delete
}
[187] Fix | Delete
[188] Fix | Delete
[189] Fix | Delete
add_action( 'wpcf7_upgrade', 'wpcf7_upgrade_recaptcha_v2_v3', 10, 2 );
[190] Fix | Delete
[191] Fix | Delete
/**
[192] Fix | Delete
* Adds warnings for users upgrading from reCAPTCHA v2 to v3.
[193] Fix | Delete
*/
[194] Fix | Delete
function wpcf7_upgrade_recaptcha_v2_v3( $new_ver, $old_ver ) {
[195] Fix | Delete
if ( version_compare( '5.1-dev', $old_ver, '<=' ) ) {
[196] Fix | Delete
return;
[197] Fix | Delete
}
[198] Fix | Delete
[199] Fix | Delete
$service = WPCF7_RECAPTCHA::get_instance();
[200] Fix | Delete
[201] Fix | Delete
if ( ! $service->is_active() or $service->get_global_sitekey() ) {
[202] Fix | Delete
return;
[203] Fix | Delete
}
[204] Fix | Delete
[205] Fix | Delete
// Maybe v2 keys are used now. Warning necessary.
[206] Fix | Delete
WPCF7::update_option( 'recaptcha_v2_v3_warning', true );
[207] Fix | Delete
WPCF7::update_option( 'recaptcha', null );
[208] Fix | Delete
}
[209] Fix | Delete
[210] Fix | Delete
[211] Fix | Delete
add_action( 'wpcf7_admin_menu', 'wpcf7_admin_init_recaptcha_v2_v3', 10, 0 );
[212] Fix | Delete
[213] Fix | Delete
/**
[214] Fix | Delete
* Adds filters and actions for warnings.
[215] Fix | Delete
*/
[216] Fix | Delete
function wpcf7_admin_init_recaptcha_v2_v3() {
[217] Fix | Delete
if ( ! WPCF7::get_option( 'recaptcha_v2_v3_warning' ) ) {
[218] Fix | Delete
return;
[219] Fix | Delete
}
[220] Fix | Delete
[221] Fix | Delete
add_filter(
[222] Fix | Delete
'wpcf7_admin_menu_change_notice',
[223] Fix | Delete
'wpcf7_admin_menu_change_notice_recaptcha_v2_v3',
[224] Fix | Delete
10, 1
[225] Fix | Delete
);
[226] Fix | Delete
[227] Fix | Delete
add_action(
[228] Fix | Delete
'wpcf7_admin_warnings',
[229] Fix | Delete
'wpcf7_admin_warnings_recaptcha_v2_v3',
[230] Fix | Delete
5, 3
[231] Fix | Delete
);
[232] Fix | Delete
}
[233] Fix | Delete
[234] Fix | Delete
[235] Fix | Delete
/**
[236] Fix | Delete
* Increments the admin menu counter for the Integration page.
[237] Fix | Delete
*/
[238] Fix | Delete
function wpcf7_admin_menu_change_notice_recaptcha_v2_v3( $counts ) {
[239] Fix | Delete
$counts['wpcf7-integration'] += 1;
[240] Fix | Delete
return $counts;
[241] Fix | Delete
}
[242] Fix | Delete
[243] Fix | Delete
[244] Fix | Delete
/**
[245] Fix | Delete
* Prints warnings on the admin screen.
[246] Fix | Delete
*/
[247] Fix | Delete
function wpcf7_admin_warnings_recaptcha_v2_v3( $page, $action, $object ) {
[248] Fix | Delete
if ( 'wpcf7-integration' !== $page ) {
[249] Fix | Delete
return;
[250] Fix | Delete
}
[251] Fix | Delete
[252] Fix | Delete
$message = sprintf(
[253] Fix | Delete
esc_html( __(
[254] Fix | Delete
"API keys for reCAPTCHA v3 are different from those for v2; keys for v2 do not work with the v3 API. You need to register your sites again to get new keys for v3. For details, see %s.",
[255] Fix | Delete
'contact-form-7'
[256] Fix | Delete
) ),
[257] Fix | Delete
wpcf7_link(
[258] Fix | Delete
__( 'https://contactform7.com/recaptcha/', 'contact-form-7' ),
[259] Fix | Delete
__( 'reCAPTCHA (v3)', 'contact-form-7' )
[260] Fix | Delete
)
[261] Fix | Delete
);
[262] Fix | Delete
[263] Fix | Delete
echo sprintf(
[264] Fix | Delete
'<div class="notice notice-warning"><p>%s</p></div>',
[265] Fix | Delete
$message
[266] Fix | Delete
);
[267] Fix | Delete
}
[268] Fix | Delete
[269] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function