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/clone/wp-conte.../plugins/wpforms-.../includes
File: class-process.php
[500] Fix | Delete
// Convert spam errors to form errors if spam entries are not stored.
[501] Fix | Delete
if ( ! $store_spam_entries && ! empty( $this->spam_errors ) ) {
[502] Fix | Delete
$this->errors = $this->spam_errors;
[503] Fix | Delete
}
[504] Fix | Delete
[505] Fix | Delete
/**
[506] Fix | Delete
* Filter fields after processing.
[507] Fix | Delete
*
[508] Fix | Delete
* @since 1.4.0
[509] Fix | Delete
*
[510] Fix | Delete
* @param array $fields Form fields.
[511] Fix | Delete
* @param array $entry Form submission raw data ($_POST).
[512] Fix | Delete
* @param array $form_data Form data and settings.
[513] Fix | Delete
*/
[514] Fix | Delete
$this->fields = apply_filters( 'wpforms_process_after_filter', $this->fields, $entry, $this->form_data );
[515] Fix | Delete
[516] Fix | Delete
// One last error check - don't proceed if there are any errors.
[517] Fix | Delete
if ( ! empty( $this->errors[ $form_id ] ) ) {
[518] Fix | Delete
[519] Fix | Delete
if ( empty( $this->errors[ $form_id ]['header'] ) && empty( $this->errors[ $form_id ]['footer'] ) ) {
[520] Fix | Delete
$this->errors[ $form_id ]['header'] = esc_html__( 'Form has not been submitted, please see the errors below.', 'wpforms-lite' );
[521] Fix | Delete
}
[522] Fix | Delete
[523] Fix | Delete
return;
[524] Fix | Delete
}
[525] Fix | Delete
[526] Fix | Delete
// Set raw post data.
[527] Fix | Delete
$this->form_data['post_data_raw'] = [
[528] Fix | Delete
'page_url' => isset( $_POST['page_url'] ) ? esc_url_raw( wp_unslash( $_POST['page_url'] ) ) : '',
[529] Fix | Delete
];
[530] Fix | Delete
[531] Fix | Delete
// Success - add entry to database.
[532] Fix | Delete
$this->entry_id = $this->entry_save( $this->fields, $entry, $this->form_data['id'], $this->form_data );
[533] Fix | Delete
[534] Fix | Delete
// Add payment to database.
[535] Fix | Delete
$payment_id = $this->payment_save( $entry );
[536] Fix | Delete
[537] Fix | Delete
$this->form_data['entry_meta'] = [
[538] Fix | Delete
'page_url' => isset( $_POST['page_url'] ) ? esc_url_raw( wp_unslash( $_POST['page_url'] ) ) : '',
[539] Fix | Delete
'page_title' => isset( $_POST['page_title'] ) ? sanitize_text_field( wp_unslash( $_POST['page_title'] ) ) : '',
[540] Fix | Delete
'page_id' => isset( $_POST['page_id'] ) ? absint( $_POST['page_id'] ) : '',
[541] Fix | Delete
'referer' => esc_url_raw( (string) wp_get_referer() ),
[542] Fix | Delete
];
[543] Fix | Delete
[544] Fix | Delete
// Save meta data.
[545] Fix | Delete
$this->save_meta( $this->entry_id, $this->form_data['id'] );
[546] Fix | Delete
[547] Fix | Delete
/**
[548] Fix | Delete
* Runs right after adding entry to the database.
[549] Fix | Delete
*
[550] Fix | Delete
* @since 1.7.7
[551] Fix | Delete
* @since 1.8.2 Added Payment ID param.
[552] Fix | Delete
*
[553] Fix | Delete
* @param array $fields Fields data.
[554] Fix | Delete
* @param array $entry User submitted data.
[555] Fix | Delete
* @param array $form_data Form data.
[556] Fix | Delete
* @param int $entry_id Entry ID.
[557] Fix | Delete
* @param int $payment_id Payment ID.
[558] Fix | Delete
*/
[559] Fix | Delete
do_action( 'wpforms_process_entry_saved', $this->fields, $entry, $this->form_data, $this->entry_id, $payment_id );
[560] Fix | Delete
[561] Fix | Delete
// Fire the logic to send notification emails.
[562] Fix | Delete
$this->entry_email( $this->fields, $entry, $this->form_data, $this->entry_id, 'entry' );
[563] Fix | Delete
[564] Fix | Delete
// Pass completed and formatted fields in POST.
[565] Fix | Delete
$_POST['wpforms']['complete'] = $this->fields;
[566] Fix | Delete
[567] Fix | Delete
// Pass entry ID in POST.
[568] Fix | Delete
$_POST['wpforms']['entry_id'] = $this->entry_id;
[569] Fix | Delete
[570] Fix | Delete
// Logs entry depending on log levels set.
[571] Fix | Delete
if ( wpforms()->is_pro() ) {
[572] Fix | Delete
wpforms_log(
[573] Fix | Delete
$this->entry_id ? "Entry {$this->entry_id}" : 'Entry',
[574] Fix | Delete
$this->fields,
[575] Fix | Delete
[
[576] Fix | Delete
'type' => [ 'entry' ],
[577] Fix | Delete
'parent' => $this->entry_id,
[578] Fix | Delete
'form_id' => $this->form_data['id'],
[579] Fix | Delete
]
[580] Fix | Delete
);
[581] Fix | Delete
}
[582] Fix | Delete
[583] Fix | Delete
// Does not proceed if a form is marked as spam.
[584] Fix | Delete
if ( ! $marked_as_spam ) {
[585] Fix | Delete
$this->process_complete( $form_id, $this->form_data, $this->fields, $entry, $this->entry_id );
[586] Fix | Delete
}
[587] Fix | Delete
[588] Fix | Delete
$this->entry_confirmation_redirect( $this->form_data );
[589] Fix | Delete
}
[590] Fix | Delete
[591] Fix | Delete
/**
[592] Fix | Delete
* Save entry meta data.
[593] Fix | Delete
*
[594] Fix | Delete
* @since 1.8.7
[595] Fix | Delete
*
[596] Fix | Delete
* @param int $entry_id Entry ID.
[597] Fix | Delete
* @param int $form_id Form ID.
[598] Fix | Delete
*/
[599] Fix | Delete
protected function save_meta( $entry_id, $form_id ) {
[600] Fix | Delete
[601] Fix | Delete
if ( ! wpforms()->is_pro() ) {
[602] Fix | Delete
return;
[603] Fix | Delete
}
[604] Fix | Delete
[605] Fix | Delete
$meta_data = $this->form_data['entry_meta'];
[606] Fix | Delete
$entry_meta = wpforms()->get( 'entry_meta' );
[607] Fix | Delete
[608] Fix | Delete
foreach ( $meta_data as $type => $value ) {
[609] Fix | Delete
$entry_meta->add(
[610] Fix | Delete
[
[611] Fix | Delete
'entry_id' => $entry_id,
[612] Fix | Delete
'form_id' => $form_id,
[613] Fix | Delete
'user_id' => get_current_user_id(),
[614] Fix | Delete
'type' => $type,
[615] Fix | Delete
'data' => $value,
[616] Fix | Delete
],
[617] Fix | Delete
'entry_meta'
[618] Fix | Delete
);
[619] Fix | Delete
}
[620] Fix | Delete
}
[621] Fix | Delete
[622] Fix | Delete
/**
[623] Fix | Delete
* Log spam entry.
[624] Fix | Delete
*
[625] Fix | Delete
* @since 1.8.3
[626] Fix | Delete
*
[627] Fix | Delete
* @param array $entry Form submission raw data ($_POST).
[628] Fix | Delete
* @param string $message Spam message.
[629] Fix | Delete
*/
[630] Fix | Delete
private function log_spam_entry( $entry, $message ) {
[631] Fix | Delete
[632] Fix | Delete
wpforms_log(
[633] Fix | Delete
'Spam Entry ' . uniqid( '', true ),
[634] Fix | Delete
[ $message, $entry ],
[635] Fix | Delete
[
[636] Fix | Delete
'type' => [ 'spam' ],
[637] Fix | Delete
'form_id' => $this->form_data['id'],
[638] Fix | Delete
]
[639] Fix | Delete
);
[640] Fix | Delete
}
[641] Fix | Delete
[642] Fix | Delete
/**
[643] Fix | Delete
* Check if the form was submitted too quickly.
[644] Fix | Delete
*
[645] Fix | Delete
* @since 1.8.3
[646] Fix | Delete
*/
[647] Fix | Delete
private function time_limit_check() { // phpcs:ignore Generic.Metrics.CyclomaticComplexity.TooHigh
[648] Fix | Delete
[649] Fix | Delete
/**
[650] Fix | Delete
* Allow bypassing the time limit check.
[651] Fix | Delete
*
[652] Fix | Delete
* @since 1.8.3
[653] Fix | Delete
*
[654] Fix | Delete
* @param bool $bypass Whether to bypass the time limit check, default false.
[655] Fix | Delete
* @param array $form_data Form data.
[656] Fix | Delete
*
[657] Fix | Delete
* @return bool
[658] Fix | Delete
*/
[659] Fix | Delete
if ( apply_filters( 'wpforms_process_time_limit_check_bypass', false, $this->form_data ) ) {
[660] Fix | Delete
return;
[661] Fix | Delete
}
[662] Fix | Delete
[663] Fix | Delete
$settings = $this->form_data['settings'];
[664] Fix | Delete
$time_limit = ! empty( $settings['anti_spam']['time_limit'] ) ? $settings['anti_spam']['time_limit'] : [];
[665] Fix | Delete
[666] Fix | Delete
$enabled = ! empty( $time_limit['enable'] );
[667] Fix | Delete
$duration = ! empty( $time_limit['duration'] ) ? absint( $time_limit['duration'] ) : 0;
[668] Fix | Delete
[669] Fix | Delete
if ( ! $enabled || $duration <= 0 ) {
[670] Fix | Delete
return;
[671] Fix | Delete
}
[672] Fix | Delete
[673] Fix | Delete
// Convert seconds to milliseconds.
[674] Fix | Delete
$duration *= 1000;
[675] Fix | Delete
[676] Fix | Delete
//phpcs:disable WordPress.Security.NonceVerification.Missing
[677] Fix | Delete
$start = ! empty( $_POST['start_timestamp'] ) ? absint( $_POST['start_timestamp'] ) : 0;
[678] Fix | Delete
$end = ! empty( $_POST['end_timestamp'] ) ? absint( $_POST['end_timestamp'] ) : 0;
[679] Fix | Delete
//phpcs:enable WordPress.Security.NonceVerification.Missing
[680] Fix | Delete
[681] Fix | Delete
// Filter out empty fields.
[682] Fix | Delete
$fields = array_filter(
[683] Fix | Delete
$this->fields,
[684] Fix | Delete
function( $field ) {
[685] Fix | Delete
return ! empty( $field['value'] );
[686] Fix | Delete
}
[687] Fix | Delete
);
[688] Fix | Delete
[689] Fix | Delete
// Skip time limit check if the form was submitted with prefilled values.
[690] Fix | Delete
if ( $start === 0 && ! empty( $fields ) ) {
[691] Fix | Delete
return;
[692] Fix | Delete
}
[693] Fix | Delete
[694] Fix | Delete
// If the form was submitted too quickly, add an error.
[695] Fix | Delete
if ( ( $end - $start ) < $duration || $start === 0 ) {
[696] Fix | Delete
$this->errors[ $this->form_data['id'] ]['header'] = esc_html__( 'Please wait a little longer before submitting. We’re running a quick security check.', 'wpforms-lite' );
[697] Fix | Delete
}
[698] Fix | Delete
}
[699] Fix | Delete
[700] Fix | Delete
/**
[701] Fix | Delete
* Process complete.
[702] Fix | Delete
*
[703] Fix | Delete
* @since 1.8.3
[704] Fix | Delete
*
[705] Fix | Delete
* @param int $form_id Form ID.
[706] Fix | Delete
* @param array $form_data Form data and settings.
[707] Fix | Delete
* @param array $fields Fields data.
[708] Fix | Delete
* @param array $entry Form submission raw data ($_POST).
[709] Fix | Delete
* @param int $entry_id Entry ID.
[710] Fix | Delete
*/
[711] Fix | Delete
public function process_complete( $form_id, $form_data, $fields, $entry, $entry_id ) {
[712] Fix | Delete
/**
[713] Fix | Delete
* Runs right after the form has been successfully submitted.
[714] Fix | Delete
*
[715] Fix | Delete
* @since 1.0.0
[716] Fix | Delete
* @since 1.8.3 Added $entry parameter.
[717] Fix | Delete
*
[718] Fix | Delete
* @param array $fields Fields data.
[719] Fix | Delete
* @param array $entry Form submission raw data ($_POST).
[720] Fix | Delete
* @param array $form_data Form data.
[721] Fix | Delete
* @param int $entry_id Entry ID.
[722] Fix | Delete
*/
[723] Fix | Delete
do_action( 'wpforms_process_complete', $fields, $entry, $form_data, $entry_id );
[724] Fix | Delete
[725] Fix | Delete
/**
[726] Fix | Delete
* Runs right after the form has been successfully submitted by form ID.
[727] Fix | Delete
*
[728] Fix | Delete
* @since 1.0.0
[729] Fix | Delete
* @since 1.8.3 Added $entry parameter.
[730] Fix | Delete
*
[731] Fix | Delete
* @param array $fields Fields data.
[732] Fix | Delete
* @param array $entry Form submission raw data ($_POST).
[733] Fix | Delete
* @param array $form_data Form data.
[734] Fix | Delete
* @param int $entry_id Entry ID.
[735] Fix | Delete
*/
[736] Fix | Delete
do_action( "wpforms_process_complete_{$form_id}", $fields, $entry, $form_data, $entry_id );
[737] Fix | Delete
}
[738] Fix | Delete
[739] Fix | Delete
/**
[740] Fix | Delete
* Check for spam.
[741] Fix | Delete
*
[742] Fix | Delete
* @since 1.8.3
[743] Fix | Delete
*
[744] Fix | Delete
* @param array $entry Form submission raw data ($_POST).
[745] Fix | Delete
*/
[746] Fix | Delete
public function process_spam_check( $entry ) {
[747] Fix | Delete
[748] Fix | Delete
// CAPTCHA check.
[749] Fix | Delete
$this->process_captcha( $entry );
[750] Fix | Delete
[751] Fix | Delete
if ( $this->spam_reason ) {
[752] Fix | Delete
return;
[753] Fix | Delete
}
[754] Fix | Delete
[755] Fix | Delete
$akismet = wpforms()->get( 'akismet' )->validate( $this->form_data, $entry );
[756] Fix | Delete
[757] Fix | Delete
// If Akismet marks the entry as spam, we want to log the entry and fail silently.
[758] Fix | Delete
if ( $akismet ) {
[759] Fix | Delete
[760] Fix | Delete
$this->spam_errors[ $this->form_data['id'] ]['header'] = $akismet;
[761] Fix | Delete
[762] Fix | Delete
// Log the spam entry depending on log levels set.
[763] Fix | Delete
$this->log_spam_entry( $entry, $akismet );
[764] Fix | Delete
[765] Fix | Delete
$this->spam_reason = esc_html__( 'Akismet', 'wpforms-lite' );
[766] Fix | Delete
}
[767] Fix | Delete
}
[768] Fix | Delete
[769] Fix | Delete
/**
[770] Fix | Delete
* Is bypass spam check.
[771] Fix | Delete
*
[772] Fix | Delete
* @since 1.8.3
[773] Fix | Delete
*
[774] Fix | Delete
* @param array $entry Form submission raw data ($_POST).
[775] Fix | Delete
*
[776] Fix | Delete
* @return bool
[777] Fix | Delete
*/
[778] Fix | Delete
protected function is_bypass_spam_check( $entry ) {
[779] Fix | Delete
[780] Fix | Delete
/**
[781] Fix | Delete
* Filter to bypass CAPTCHA check.
[782] Fix | Delete
*
[783] Fix | Delete
* @since 1.6.6
[784] Fix | Delete
*
[785] Fix | Delete
* @param bool $bypass_captcha Whether to bypass CAPTCHA check.
[786] Fix | Delete
* @param array $entry Form submission raw data ($_POST).
[787] Fix | Delete
* @param array $form_data Form data.
[788] Fix | Delete
*/
[789] Fix | Delete
return apply_filters( 'wpforms_process_bypass_captcha', false, $entry, $this->form_data );
[790] Fix | Delete
}
[791] Fix | Delete
[792] Fix | Delete
/**
[793] Fix | Delete
* Process captcha.
[794] Fix | Delete
*
[795] Fix | Delete
* @since 1.8.0
[796] Fix | Delete
* @since 1.8.3 Removed $captcha_settings parameter.
[797] Fix | Delete
*
[798] Fix | Delete
* @param array $entry Form submission raw data ($_POST).
[799] Fix | Delete
*
[800] Fix | Delete
* @return void
[801] Fix | Delete
*/
[802] Fix | Delete
private function process_captcha( $entry ) { // phpcs:ignore Generic.Metrics.CyclomaticComplexity.TooHigh,Generic.Metrics.CyclomaticComplexity.MaxExceeded
[803] Fix | Delete
[804] Fix | Delete
$captcha_settings = wpforms_get_captcha_settings();
[805] Fix | Delete
[806] Fix | Delete
if ( ! $this->allow_process_captcha( $entry, $captcha_settings ) ) {
[807] Fix | Delete
return;
[808] Fix | Delete
}
[809] Fix | Delete
[810] Fix | Delete
$provider = $captcha_settings['provider'];
[811] Fix | Delete
[812] Fix | Delete
$current_captcha = $this->get_captcha( $provider );
[813] Fix | Delete
[814] Fix | Delete
if ( empty( $current_captcha ) ) {
[815] Fix | Delete
return;
[816] Fix | Delete
}
[817] Fix | Delete
[818] Fix | Delete
$verify_url_raw = $current_captcha['verify_url_raw'];
[819] Fix | Delete
$captcha_provider = $current_captcha['provider'];
[820] Fix | Delete
$post_key = $current_captcha['post_key'];
[821] Fix | Delete
[822] Fix | Delete
/* translators: %s - The CAPTCHA provider name. */
[823] Fix | Delete
$error = wpforms_setting( "{$provider}-fail-msg", sprintf( esc_html__( '%s verification failed, please try again later.', 'wpforms-lite' ), $captcha_provider ) );
[824] Fix | Delete
[825] Fix | Delete
// phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized, WordPress.Security.ValidatedSanitizedInput.MissingUnslash, WordPress.Security.NonceVerification.Missing
[826] Fix | Delete
$token = ! empty( $_POST[ $post_key ] ) ? $_POST[ $post_key ] : false;
[827] Fix | Delete
[828] Fix | Delete
$is_recaptcha_v3 = $provider === 'recaptcha' && $captcha_settings['recaptcha_type'] === 'v3';
[829] Fix | Delete
[830] Fix | Delete
if ( $is_recaptcha_v3 ) {
[831] Fix | Delete
// phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized, WordPress.Security.ValidatedSanitizedInput.MissingUnslash, WordPress.Security.NonceVerification.Missing
[832] Fix | Delete
$token = ! empty( $_POST['wpforms']['recaptcha'] ) ? $_POST['wpforms']['recaptcha'] : false;
[833] Fix | Delete
}
[834] Fix | Delete
[835] Fix | Delete
$verify_query_arg = [
[836] Fix | Delete
'secret' => $captcha_settings['secret_key'],
[837] Fix | Delete
'response' => $token,
[838] Fix | Delete
'remoteip' => wpforms_get_ip(),
[839] Fix | Delete
];
[840] Fix | Delete
[841] Fix | Delete
if ( ! $token ) {
[842] Fix | Delete
$this->errors[ $this->form_data['id'] ]['recaptcha'] = $error;
[843] Fix | Delete
[844] Fix | Delete
return;
[845] Fix | Delete
}
[846] Fix | Delete
[847] Fix | Delete
/*
[848] Fix | Delete
* hCaptcha uses user IP to better detect bots and their attacks on a form.
[849] Fix | Delete
* Majority of our users have GDPR disabled.
[850] Fix | Delete
* So we remove this data from the request only when it's not needed, depending on wpforms_is_collecting_ip_allowed($this->form_data) check.
[851] Fix | Delete
*/
[852] Fix | Delete
if ( ! wpforms_is_collecting_ip_allowed( $this->form_data ) ) {
[853] Fix | Delete
unset( $verify_query_arg['remoteip'] );
[854] Fix | Delete
}
[855] Fix | Delete
[856] Fix | Delete
/**
[857] Fix | Delete
* Change query arguments for remote call to the captcha API.
[858] Fix | Delete
*
[859] Fix | Delete
* @since 1.8.0
[860] Fix | Delete
*
[861] Fix | Delete
* @param array $verify_query_arg The query arguments for verify URL.
[862] Fix | Delete
* @param array $form_data Form data and settings.
[863] Fix | Delete
*/
[864] Fix | Delete
$verify_query_arg = apply_filters( 'wpforms_process_captcha_verify_query_arg', $verify_query_arg, $this->form_data );
[865] Fix | Delete
[866] Fix | Delete
/**
[867] Fix | Delete
* Filter the CAPTCHA verify URL.
[868] Fix | Delete
*
[869] Fix | Delete
* @since 1.6.4
[870] Fix | Delete
* @since 1.8.0 Added $form_data argument.
[871] Fix | Delete
*
[872] Fix | Delete
* @param string $verify_url The full CAPTCHA verify URL.
[873] Fix | Delete
* @param string $verify_url_raw The CAPTCHA verify URL without query.
[874] Fix | Delete
* @param array $verify_query_arg The query arguments for verify URL.
[875] Fix | Delete
* @param array $form_data Form data and settings.
[876] Fix | Delete
*/
[877] Fix | Delete
$verify_url = apply_filters( 'wpforms_process_captcha_verify_url', $verify_url_raw, $verify_url_raw, $verify_query_arg, $this->form_data );
[878] Fix | Delete
[879] Fix | Delete
$response = wp_remote_post( $verify_url, [ 'body' => $verify_query_arg ] );
[880] Fix | Delete
[881] Fix | Delete
$response_body = json_decode( wp_remote_retrieve_body( $response ), false );
[882] Fix | Delete
[883] Fix | Delete
if (
[884] Fix | Delete
empty( $response_body->success ) ||
[885] Fix | Delete
( $is_recaptcha_v3 && $response_body->score <= wpforms_setting( 'recaptcha-v3-threshold', '0.4' ) )
[886] Fix | Delete
) {
[887] Fix | Delete
if ( $is_recaptcha_v3 && isset( $response_body->score ) ) {
[888] Fix | Delete
$error .= ' (' . esc_html( $response_body->score ) . ')';
[889] Fix | Delete
}
[890] Fix | Delete
[891] Fix | Delete
$this->spam_errors[ $this->form_data['id'] ]['recaptcha'] = $error;
[892] Fix | Delete
[893] Fix | Delete
$this->log_spam_entry( $entry, $error );
[894] Fix | Delete
[895] Fix | Delete
$this->spam_reason = $captcha_provider;
[896] Fix | Delete
}
[897] Fix | Delete
}
[898] Fix | Delete
[899] Fix | Delete
/**
[900] Fix | Delete
* Check if CAPTCHA processing is allowed.
[901] Fix | Delete
*
[902] Fix | Delete
* @since 1.8.3
[903] Fix | Delete
*
[904] Fix | Delete
* @param array $entry Form entry data.
[905] Fix | Delete
* @param array $captcha_settings CAPTCHA settings.
[906] Fix | Delete
*
[907] Fix | Delete
* @return bool
[908] Fix | Delete
*/
[909] Fix | Delete
private function allow_process_captcha( $entry, $captcha_settings ) { // phpcs:ignore Generic.Metrics.CyclomaticComplexity.TooHigh
[910] Fix | Delete
[911] Fix | Delete
// Skip captcha processing if AMP form.
[912] Fix | Delete
if ( isset( $_POST['__amp_form_verify'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Missing
[913] Fix | Delete
return false;
[914] Fix | Delete
}
[915] Fix | Delete
[916] Fix | Delete
// Skip captcha processing if provider is not set.
[917] Fix | Delete
if ( empty( $captcha_settings['provider'] ) ) {
[918] Fix | Delete
return false;
[919] Fix | Delete
}
[920] Fix | Delete
[921] Fix | Delete
$provider = $captcha_settings['provider'];
[922] Fix | Delete
[923] Fix | Delete
// Skip captcha processing if provider is set to none.
[924] Fix | Delete
if ( $provider === 'none' ) {
[925] Fix | Delete
return false;
[926] Fix | Delete
}
[927] Fix | Delete
[928] Fix | Delete
// Skip captcha processing if site key or secret key is empty.
[929] Fix | Delete
if ( empty( $captcha_settings['site_key'] ) || empty( $captcha_settings['secret_key'] ) ) {
[930] Fix | Delete
return false;
[931] Fix | Delete
}
[932] Fix | Delete
[933] Fix | Delete
$form_data_settings = isset( $this->form_data['settings'] ) ? $this->form_data['settings'] : [];
[934] Fix | Delete
$is_recaptcha = isset( $form_data_settings['recaptcha'] ) && (int) $form_data_settings['recaptcha'] === 1;
[935] Fix | Delete
[936] Fix | Delete
// Skip captcha processing if reCAPTCHA is disabled for this form.
[937] Fix | Delete
if ( ! $is_recaptcha ) {
[938] Fix | Delete
return false;
[939] Fix | Delete
}
[940] Fix | Delete
[941] Fix | Delete
$recaptcha_type = $captcha_settings['recaptcha_type'];
[942] Fix | Delete
$is_recaptcha_v3 = $provider === 'recaptcha' && $recaptcha_type === 'v3';
[943] Fix | Delete
[944] Fix | Delete
// Skip captcha processing on AMP if not using reCAPTCHA v3. AMP requires Google reCAPTCHA v3.
[945] Fix | Delete
if ( ! $is_recaptcha_v3 && wpforms_is_amp() ) {
[946] Fix | Delete
return false;
[947] Fix | Delete
}
[948] Fix | Delete
[949] Fix | Delete
return true;
[950] Fix | Delete
}
[951] Fix | Delete
[952] Fix | Delete
/**
[953] Fix | Delete
* Get all available CAPTCHA providers.
[954] Fix | Delete
*
[955] Fix | Delete
* @since 1.8.3
[956] Fix | Delete
*
[957] Fix | Delete
* @return array
[958] Fix | Delete
*/
[959] Fix | Delete
private function get_captcha_providers() {
[960] Fix | Delete
[961] Fix | Delete
/**
[962] Fix | Delete
* Filter the CAPTCHA providers.
[963] Fix | Delete
*
[964] Fix | Delete
* @since 1.8.3
[965] Fix | Delete
*
[966] Fix | Delete
* @param array $providers The CAPTCHA providers.
[967] Fix | Delete
*/
[968] Fix | Delete
return apply_filters(
[969] Fix | Delete
'wpforms_process_captcha_providers',
[970] Fix | Delete
[
[971] Fix | Delete
'hcaptcha' => [
[972] Fix | Delete
'verify_url_raw' => 'https://hcaptcha.com/siteverify',
[973] Fix | Delete
'provider' => 'hCaptcha',
[974] Fix | Delete
'post_key' => 'h-captcha-response',
[975] Fix | Delete
],
[976] Fix | Delete
'recaptcha' => [
[977] Fix | Delete
'verify_url_raw' => 'https://www.google.com/recaptcha/api/siteverify',
[978] Fix | Delete
'provider' => 'Google reCAPTCHA',
[979] Fix | Delete
'post_key' => 'g-recaptcha-response',
[980] Fix | Delete
],
[981] Fix | Delete
'turnstile' => [
[982] Fix | Delete
'verify_url_raw' => 'https://challenges.cloudflare.com/turnstile/v0/siteverify',
[983] Fix | Delete
'provider' => 'Cloudflare Turnstile',
[984] Fix | Delete
'post_key' => 'cf-turnstile-response', // The key is specified by the API.
[985] Fix | Delete
],
[986] Fix | Delete
]
[987] Fix | Delete
);
[988] Fix | Delete
}
[989] Fix | Delete
[990] Fix | Delete
/**
[991] Fix | Delete
* Get CAPTCHA provider data.
[992] Fix | Delete
*
[993] Fix | Delete
* @since 1.8.3
[994] Fix | Delete
*
[995] Fix | Delete
* @param string $provider CAPTCHA provider.
[996] Fix | Delete
*
[997] Fix | Delete
* @return array
[998] Fix | Delete
*/
[999] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function