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-.../src/Admin
File: Challenge.php
return true;
[500] Fix | Delete
}
[501] Fix | Delete
[502] Fix | Delete
if ( $this->challenge_finished() ) {
[503] Fix | Delete
$can_start = false;
[504] Fix | Delete
}
[505] Fix | Delete
[506] Fix | Delete
if ( $this->website_has_forms() ) {
[507] Fix | Delete
$can_start = false;
[508] Fix | Delete
}
[509] Fix | Delete
[510] Fix | Delete
if ( $can_start === null ) {
[511] Fix | Delete
$can_start = true;
[512] Fix | Delete
}
[513] Fix | Delete
[514] Fix | Delete
return $can_start;
[515] Fix | Delete
}
[516] Fix | Delete
[517] Fix | Delete
/**
[518] Fix | Delete
* Start the Challenge in Form Builder.
[519] Fix | Delete
*
[520] Fix | Delete
* @since 1.5.0
[521] Fix | Delete
*/
[522] Fix | Delete
public function init_challenge() {
[523] Fix | Delete
[524] Fix | Delete
if ( ! $this->challenge_can_start() ) {
[525] Fix | Delete
return;
[526] Fix | Delete
}
[527] Fix | Delete
[528] Fix | Delete
$this->set_challenge_option(
[529] Fix | Delete
wp_parse_args(
[530] Fix | Delete
[ 'status' => 'inited' ],
[531] Fix | Delete
$this->get_challenge_option_schema()
[532] Fix | Delete
)
[533] Fix | Delete
);
[534] Fix | Delete
}
[535] Fix | Delete
[536] Fix | Delete
/**
[537] Fix | Delete
* Include Challenge HTML.
[538] Fix | Delete
*
[539] Fix | Delete
* @since 1.5.0
[540] Fix | Delete
*/
[541] Fix | Delete
public function challenge_html() {
[542] Fix | Delete
[543] Fix | Delete
if ( $this->challenge_force_skip() || ( $this->challenge_finished() && ! $this->challenge_force_start() ) ) {
[544] Fix | Delete
return;
[545] Fix | Delete
}
[546] Fix | Delete
[547] Fix | Delete
if ( wpforms_is_admin_page() && ! wpforms_is_admin_page( 'getting-started' ) && $this->challenge_can_start() ) {
[548] Fix | Delete
[549] Fix | Delete
// Before showing the Challenge in the `start` state we should reset the option.
[550] Fix | Delete
// In this way we ensure the Challenge will not appear somewhere in the builder where it is not should be.
[551] Fix | Delete
$this->set_challenge_option( [ 'status' => '' ] );
[552] Fix | Delete
$this->challenge_modal_html( 'start' );
[553] Fix | Delete
}
[554] Fix | Delete
[555] Fix | Delete
if ( $this->is_builder_page() ) {
[556] Fix | Delete
$this->challenge_modal_html( 'progress' );
[557] Fix | Delete
$this->challenge_builder_templates_html();
[558] Fix | Delete
}
[559] Fix | Delete
[560] Fix | Delete
if ( $this->is_form_embed_page() ) {
[561] Fix | Delete
$this->challenge_modal_html( 'progress' );
[562] Fix | Delete
$this->challenge_embed_templates_html();
[563] Fix | Delete
}
[564] Fix | Delete
}
[565] Fix | Delete
[566] Fix | Delete
/**
[567] Fix | Delete
* Include Challenge main modal window HTML.
[568] Fix | Delete
*
[569] Fix | Delete
* @since 1.5.0
[570] Fix | Delete
*
[571] Fix | Delete
* @param string $state State of Challenge ('start' or 'progress').
[572] Fix | Delete
*/
[573] Fix | Delete
public function challenge_modal_html( $state ) {
[574] Fix | Delete
[575] Fix | Delete
echo wpforms_render( // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
[576] Fix | Delete
'admin/challenge/modal',
[577] Fix | Delete
[
[578] Fix | Delete
'state' => $state,
[579] Fix | Delete
'step' => $this->get_challenge_option( 'step' ),
[580] Fix | Delete
'minutes' => $this->minutes,
[581] Fix | Delete
],
[582] Fix | Delete
true
[583] Fix | Delete
);
[584] Fix | Delete
}
[585] Fix | Delete
[586] Fix | Delete
/**
[587] Fix | Delete
* Include Challenge HTML templates specific to Form Builder.
[588] Fix | Delete
*
[589] Fix | Delete
* @since 1.5.0
[590] Fix | Delete
*/
[591] Fix | Delete
public function challenge_builder_templates_html() {
[592] Fix | Delete
[593] Fix | Delete
echo wpforms_render( 'admin/challenge/builder' ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
[594] Fix | Delete
}
[595] Fix | Delete
[596] Fix | Delete
/**
[597] Fix | Delete
* Include Challenge HTML templates specific to form embed page.
[598] Fix | Delete
*
[599] Fix | Delete
* @since 1.5.0
[600] Fix | Delete
*/
[601] Fix | Delete
public function challenge_embed_templates_html() {
[602] Fix | Delete
[603] Fix | Delete
/**
[604] Fix | Delete
* Filter the content of the Challenge Congrats popup footer.
[605] Fix | Delete
*
[606] Fix | Delete
* @since 1.7.4
[607] Fix | Delete
*
[608] Fix | Delete
* @param string $footer Footer markup.
[609] Fix | Delete
*/
[610] Fix | Delete
$congrats_popup_footer = apply_filters( 'wpforms_admin_challenge_embed_template_congrats_popup_footer', '' );
[611] Fix | Delete
[612] Fix | Delete
// phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
[613] Fix | Delete
echo wpforms_render(
[614] Fix | Delete
'admin/challenge/embed',
[615] Fix | Delete
[
[616] Fix | Delete
'minutes' => $this->minutes,
[617] Fix | Delete
'congrats_popup_footer' => $congrats_popup_footer,
[618] Fix | Delete
],
[619] Fix | Delete
true
[620] Fix | Delete
);
[621] Fix | Delete
}
[622] Fix | Delete
[623] Fix | Delete
/**
[624] Fix | Delete
* Include Challenge CTA on WPForms welcome activation screen.
[625] Fix | Delete
*
[626] Fix | Delete
* @since 1.5.0
[627] Fix | Delete
*/
[628] Fix | Delete
public function welcome_html() {
[629] Fix | Delete
[630] Fix | Delete
if ( $this->challenge_can_start() ) {
[631] Fix | Delete
echo wpforms_render( 'admin/challenge/welcome' ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
[632] Fix | Delete
}
[633] Fix | Delete
}
[634] Fix | Delete
[635] Fix | Delete
/**
[636] Fix | Delete
* Save Challenge data via AJAX.
[637] Fix | Delete
*
[638] Fix | Delete
* @since 1.5.0
[639] Fix | Delete
*/
[640] Fix | Delete
public function save_challenge_option_ajax() { // phpcs:ignore Generic.Metrics.CyclomaticComplexity.TooHigh
[641] Fix | Delete
[642] Fix | Delete
check_admin_referer( 'wpforms_challenge_ajax_nonce' );
[643] Fix | Delete
[644] Fix | Delete
if ( empty( $_POST['option_data'] ) ) {
[645] Fix | Delete
wp_send_json_error();
[646] Fix | Delete
}
[647] Fix | Delete
[648] Fix | Delete
$schema = $this->get_challenge_option_schema();
[649] Fix | Delete
$query = [];
[650] Fix | Delete
[651] Fix | Delete
foreach ( $schema as $key => $value ) {
[652] Fix | Delete
if ( isset( $_POST['option_data'][ $key ] ) ) {
[653] Fix | Delete
$query[ $key ] = sanitize_text_field( wp_unslash( $_POST['option_data'][ $key ] ) );
[654] Fix | Delete
}
[655] Fix | Delete
}
[656] Fix | Delete
[657] Fix | Delete
if ( empty( $query ) ) {
[658] Fix | Delete
wp_send_json_error();
[659] Fix | Delete
}
[660] Fix | Delete
[661] Fix | Delete
if ( ! empty( $query['status'] ) && $query['status'] === 'started' ) {
[662] Fix | Delete
$query['started_date_gmt'] = current_time( 'mysql', true );
[663] Fix | Delete
}
[664] Fix | Delete
[665] Fix | Delete
if ( ! empty( $query['status'] ) && in_array( $query['status'], [ 'completed', 'canceled', 'skipped' ], true ) ) {
[666] Fix | Delete
$query['finished_date_gmt'] = current_time( 'mysql', true );
[667] Fix | Delete
}
[668] Fix | Delete
[669] Fix | Delete
if ( ! empty( $query['status'] ) && $query['status'] === 'skipped' ) {
[670] Fix | Delete
$query['started_date_gmt'] = current_time( 'mysql', true );
[671] Fix | Delete
$query['finished_date_gmt'] = $query['started_date_gmt'];
[672] Fix | Delete
}
[673] Fix | Delete
[674] Fix | Delete
$this->set_challenge_option( $query );
[675] Fix | Delete
[676] Fix | Delete
wp_send_json_success();
[677] Fix | Delete
}
[678] Fix | Delete
[679] Fix | Delete
/**
[680] Fix | Delete
* Send contact form to wpforms.com via AJAX.
[681] Fix | Delete
*
[682] Fix | Delete
* @since 1.5.0
[683] Fix | Delete
*/
[684] Fix | Delete
public function send_contact_form_ajax() {
[685] Fix | Delete
[686] Fix | Delete
check_admin_referer( 'wpforms_challenge_ajax_nonce' );
[687] Fix | Delete
[688] Fix | Delete
$url = 'https://wpforms.com/wpforms-challenge-feedback/';
[689] Fix | Delete
$message = ! empty( $_POST['contact_data']['message'] ) ? sanitize_textarea_field( wp_unslash( $_POST['contact_data']['message'] ) ) : '';
[690] Fix | Delete
$email = '';
[691] Fix | Delete
[692] Fix | Delete
if (
[693] Fix | Delete
( ! empty( $_POST['contact_data']['contact_me'] ) && $_POST['contact_data']['contact_me'] === 'true' )
[694] Fix | Delete
|| wpforms()->is_pro()
[695] Fix | Delete
) {
[696] Fix | Delete
$current_user = wp_get_current_user();
[697] Fix | Delete
$email = $current_user->user_email;
[698] Fix | Delete
$this->set_challenge_option( [ 'feedback_contact_me' => true ] );
[699] Fix | Delete
}
[700] Fix | Delete
[701] Fix | Delete
if ( empty( $message ) && empty( $email ) ) {
[702] Fix | Delete
wp_send_json_error();
[703] Fix | Delete
}
[704] Fix | Delete
[705] Fix | Delete
$data = [
[706] Fix | Delete
'body' => [
[707] Fix | Delete
'wpforms' => [
[708] Fix | Delete
'id' => 296355,
[709] Fix | Delete
'submit' => 'wpforms-submit',
[710] Fix | Delete
'fields' => [
[711] Fix | Delete
2 => $message,
[712] Fix | Delete
3 => $email,
[713] Fix | Delete
4 => $this->get_challenge_license_type(),
[714] Fix | Delete
5 => wpforms()->version,
[715] Fix | Delete
6 => wpforms_get_license_key(),
[716] Fix | Delete
],
[717] Fix | Delete
],
[718] Fix | Delete
],
[719] Fix | Delete
];
[720] Fix | Delete
[721] Fix | Delete
$response = wp_remote_post( $url, $data );
[722] Fix | Delete
[723] Fix | Delete
if ( is_wp_error( $response ) ) {
[724] Fix | Delete
wp_send_json_error();
[725] Fix | Delete
}
[726] Fix | Delete
[727] Fix | Delete
$this->set_challenge_option( [ 'feedback_sent' => true ] );
[728] Fix | Delete
wp_send_json_success();
[729] Fix | Delete
}
[730] Fix | Delete
[731] Fix | Delete
/**
[732] Fix | Delete
* Get the current WPForms license type as it pertains to the challenge feedback form.
[733] Fix | Delete
*
[734] Fix | Delete
* @since 1.8.1
[735] Fix | Delete
*
[736] Fix | Delete
* @return string The currently active license type.
[737] Fix | Delete
*/
[738] Fix | Delete
private function get_challenge_license_type() {
[739] Fix | Delete
[740] Fix | Delete
$license_type = wpforms_get_license_type();
[741] Fix | Delete
[742] Fix | Delete
if ( $license_type === false ) {
[743] Fix | Delete
$license_type = wpforms()->is_pro() ? 'Unknown' : 'Lite';
[744] Fix | Delete
}
[745] Fix | Delete
[746] Fix | Delete
return ucfirst( $license_type );
[747] Fix | Delete
}
[748] Fix | Delete
[749] Fix | Delete
/**
[750] Fix | Delete
* Force WPForms Challenge to skip.
[751] Fix | Delete
*
[752] Fix | Delete
* @since 1.7.6
[753] Fix | Delete
*
[754] Fix | Delete
* @return bool
[755] Fix | Delete
*/
[756] Fix | Delete
private function challenge_force_skip() {
[757] Fix | Delete
[758] Fix | Delete
return defined( 'WPFORMS_SKIP_CHALLENGE' ) && WPFORMS_SKIP_CHALLENGE;
[759] Fix | Delete
}
[760] Fix | Delete
}
[761] Fix | Delete
[762] Fix | Delete
12
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function