/
home
/
infinitibizsol
/
www
/
wp-content
/
plugins
/
wpforms
/
pro
/
includes
/
fields
/
File Upload :
llllll
Current File: /home/infinitibizsol/www/wp-content/plugins/wpforms/pro/includes/fields/class-entry-preview.php
<?php /** * Entry preview field. * * @since 1.6.9 */ class WPForms_Entry_Preview extends WPForms_Field { /** * Init. * * @since 1.6.9 */ public function init() { // Define field type information. $this->name = esc_html__( 'Entry Preview', 'wpforms' ); $this->type = 'entry-preview'; $this->icon = 'fa-file-text-o'; $this->order = 190; $this->group = 'fancy'; $this->hooks(); } /** * Hooks. * * @since 1.6.9 */ private function hooks() { add_filter( 'wpforms_builder_strings', [ $this, 'add_builder_strings' ], 10, 2 ); add_action( 'wpforms_frontend_css', [ $this, 'enqueue_styles' ] ); add_action( 'wpforms_frontend_js', [ $this, 'enqueue_scripts' ] ); add_action( 'wpforms_frontend_confirmation', [ $this, 'enqueue_styles' ] ); add_action( 'wpforms_frontend_confirmation', [ $this, 'enqueue_scripts' ] ); add_action( 'wp_ajax_wpforms_get_entry_preview', [ $this, 'ajax_get_entry_preview' ] ); add_action( 'wp_ajax_nopriv_wpforms_get_entry_preview', [ $this, 'ajax_get_entry_preview' ] ); add_action( 'wpforms_form_settings_confirmations_single_after', [ $this, 'add_confirmation_fields' ], 10, 2 ); add_action( 'wpforms_frontend_confirmation_message_after', [ $this, 'entry_preview_confirmation' ], 10, 4 ); add_filter( 'wpforms_frontend_form_data', [ $this, 'ignore_fields' ] ); add_filter( "wpforms_pro_admin_entries_edit_is_field_displayable_{$this->type}", '__return_false' ); } /** * Enqueue styles. * * @since 1.6.9 * * @param array $forms Forms on the page. */ public function enqueue_styles( $forms ) { if ( (int) wpforms_setting( 'disable-css', '1' ) === 3 ) { return; } $forms = ! empty( $forms ) && is_array( $forms ) ? $forms : []; if ( ! $this->is_page_has_entry_preview( $forms ) ) { return; } $min = wpforms_get_min_suffix(); wp_enqueue_style( 'wpforms-entry-preview', WPFORMS_PLUGIN_URL . "assets/pro/css/fields/entry-preview{$min}.css", [], WPFORMS_VERSION ); } /** * Enqueue scripts. * * @since 1.7.0 * * @param array $forms Forms on the page. */ public function enqueue_scripts( $forms ) { $forms = ! empty( $forms ) && is_array( $forms ) ? $forms : []; if ( ! $this->is_page_has_entry_preview( $forms ) ) { return; } $min = wpforms_get_min_suffix(); wp_enqueue_script( 'wpforms-entry-preview', WPFORMS_PLUGIN_URL . "assets/pro/js/fields/entry-preview{$min}.js", [ 'jquery' ], WPFORMS_VERSION, true ); } /** * The current page has entry preview confirmation or field. * * @since 1.6.9 * * @param array $forms Forms on the page. * * @return bool */ private function is_page_has_entry_preview( $forms ) { if ( ! empty( wpforms()->get( 'process' )->form_data ) && $this->is_form_has_entry_preview_confirmation( wpforms()->get( 'process' )->form_data ) ) { return true; } foreach ( $forms as $form_data ) { if ( $this->is_form_has_entry_preview_confirmation( $form_data ) || $this->is_form_has_entry_preview_field( $form_data ) ) { return true; } } return false; } /** * The form has an entry preview confirmation. * * @since 1.6.9 * * @param array $form_data Form data and settings. * * @return bool */ private function is_form_has_entry_preview_confirmation( $form_data ) { if ( empty( $form_data['settings']['confirmations'] ) ) { return false; } foreach ( $form_data['settings']['confirmations'] as $confirmation ) { if ( ! empty( $confirmation['message_entry_preview'] ) ) { return true; } } return false; } /** * The form has an entry preview field. * * @since 1.6.9 * * @param array $form_data Form data and settings. * * @return bool */ private function is_form_has_entry_preview_field( $form_data ) { if ( empty( $form_data['fields'] ) ) { return false; } foreach ( $form_data['fields'] as $field ) { if ( ! empty( $field['type'] ) && $field['type'] === $this->type ) { return true; } } return false; } /** * Ajax callback for getting entry preview. * * @since 1.6.9 */ public function ajax_get_entry_preview() { $form_id = isset( $_POST['wpforms']['id'] ) ? absint( $_POST['wpforms']['id'] ) : 0; // phpcs:ignore WordPress.Security.NonceVerification.Missing if ( empty( $form_id ) ) { wp_send_json_error(); } if ( ! wpforms()->get( 'form' ) ) { wp_send_json_error(); } $form_data = wpforms()->get( 'form' )->get( $form_id, [ 'content_only' => true ] ); if ( ! $form_data ) { wp_send_json_error(); } $submitted_fields = stripslashes_deep( $_POST['wpforms'] ); // phpcs:ignore WordPress.Security.NonceVerification.Missing, WordPress.Security.ValidatedSanitizedInput.InputNotSanitized $form_data['created'] = ! empty( $form_data['created'] ) ? $form_data['created'] : time(); $current_entry_preview_id = ! empty( $_POST['current_entry_preview_id'] ) ? absint( $_POST['current_entry_preview_id'] ) : 0; // phpcs:ignore WordPress.Security.NonceVerification.Missing $fields = $this->get_entry_preview_fields( $form_data, $submitted_fields, $current_entry_preview_id ); if ( empty( $fields ) ) { wp_send_json_success(); } $type = ! empty( $form_data['fields'][ $current_entry_preview_id ]['style'] ) ? $form_data['fields'][ $current_entry_preview_id ]['style'] : 'basic'; ob_start(); $this->print_entry_preview( $type, $fields, $form_data ); wp_send_json_success( ob_get_clean() ); } /** * Get ID of the start position for search. * * @since 1.6.9 * * @param array $form_data Form data and settings. * @param int $end_with_page_break_id Last page break field ID. * * @return int */ private function get_start_page_break_id( $form_data, $end_with_page_break_id ) { $is_current_range = false; $is_next_page_break = false; foreach ( array_reverse( (array) $form_data['fields'] ) as $field_properties ) { $field_id = absint( $field_properties['id'] ); $field_type = $field_properties['type']; if ( $end_with_page_break_id === $field_id ) { $is_current_range = true; continue; } if ( $is_current_range && $field_type === $this->type ) { $is_next_page_break = true; continue; } if ( $is_current_range && $is_next_page_break && $field_type === 'pagebreak' ) { return $field_id; } } $field = reset( $form_data['fields'] ); return absint( $field['id'] ); } /** * Get ID of the end position for search. * * @since 1.6.9 * * @param array $form_data Form data and settings. * @param int $current_entry_preview_id Current entry preview ID. * * @return int */ private function get_end_page_break_id( $form_data, $current_entry_preview_id ) { $is_current_page = false; foreach ( array_reverse( (array) $form_data['fields'] ) as $field_properties ) { $field_id = absint( $field_properties['id'] ); if ( $current_entry_preview_id === $field_id ) { $is_current_page = true; continue; } if ( $is_current_page && $field_properties['type'] === 'pagebreak' ) { return $field_id; } } return 0; } /** * Get fields that related to the current entry preview. * * @since 1.6.9 * * @param array $form_data Form data and settings. * @param array $submitted_fields Submitted fields. * @param int $current_entry_preview_id Current entry preview ID. * * @return array */ private function get_entry_preview_fields( $form_data, $submitted_fields, $current_entry_preview_id ) { $end_with_page_break_id = $this->get_end_page_break_id( $form_data, $current_entry_preview_id ); $start_with_page_break_id = $this->get_start_page_break_id( $form_data, $end_with_page_break_id ); $is_current_range = false; $entry_preview_fields = []; wpforms()->get( 'process' )->fields = []; foreach ( (array) $form_data['fields'] as $field_properties ) { $field_id = absint( $field_properties['id'] ); $field_type = $field_properties['type']; $field_value = isset( $submitted_fields['fields'][ $field_id ] ) ? $submitted_fields['fields'][ $field_id ] : ''; // We should process all submitted fields for correct Conditional Logic work. $this->process_field( $field_value, $field_properties, $form_data ); if ( $field_id === $end_with_page_break_id ) { $is_current_range = false; } if ( $is_current_range && ! empty( wpforms()->get( 'process' )->fields[ $field_id ] ) ) { $entry_preview_fields[ $field_id ] = wpforms()->get( 'process' )->fields[ $field_id ]; } if ( $field_type === 'pagebreak' && $field_id === $start_with_page_break_id ) { $is_current_range = true; } } return $entry_preview_fields; } /** * Process field for entry preview. * * @since 1.6.9 * * @param string $field_value Submitted field value. * @param array $field_properties Field properties. * @param array $form_data Form data and settings. */ private function process_field( $field_value, $field_properties, $form_data ) { $field_id = absint( $field_properties['id'] ); $field_type = $field_properties['type']; if ( $this->is_field_support_preview( $field_value, $field_properties, $form_data ) ) { /** * Apply things for format and sanitize, see WPForms_Field::format(). * * @param int $field Field ID. * @param string $field_value Submitted field value. * @param array $form_data Form data and settings. */ do_action( "wpforms_process_format_{$field_type}", $field_id, $field_value, $form_data ); return; } wpforms()->get( 'process' )->fields[ $field_id ] = [ 'name' => ! empty( $form_data['fields'][ $field_id ]['label'] ) ? sanitize_text_field( $form_data['fields'][ $field_id ]['label'] ) : '', 'value' => '', 'id' => $field_id, 'type' => $field_type, ]; } /** * Remove invisible fields from the Entry Preview. * * @since 1.6.9 * * @param array $entry_preview_fields List of entry preview fields. * @param array $form_data Form data and settings. * * @return array */ private function filter_conditional_logic( $entry_preview_fields, $form_data ) { foreach ( $entry_preview_fields as $field_id => $field ) { if ( ! empty( $form_data['fields'][ $field_id ]['conditionals'] ) && ! wpforms_conditional_logic_fields()->field_is_visible( $form_data, $field_id ) ) { unset( $entry_preview_fields[ $field_id ] ); } } return $entry_preview_fields; } /** * Show entry preview on the confirmation. * * @since 1.6.9 * * @param array $confirmation Current confirmation data. * @param array $form_data Form data and settings. * @param array $fields Sanitized field data. * @param int $entry_id Entry id. */ public function entry_preview_confirmation( $confirmation, $form_data, $fields, $entry_id ) { if ( empty( $confirmation['message_entry_preview'] ) ) { return; } $type = ! empty( $confirmation['message_entry_preview_style'] ) ? $confirmation['message_entry_preview_style'] : 'basic'; $this->print_entry_preview( $type, $fields, $form_data ); } /** * Print entry preview. * * @since 1.6.9 * * @param string $type Entry preview type. * @param array $fields Entry preview fields. * @param array $form_data Form data and settings. */ private function print_entry_preview( $type, $fields, $form_data ) { $fields = $this->filter_conditional_logic( $fields, $form_data ); $ignored_fields = self::get_ignored_fields(); $fields_html = ''; foreach ( $fields as $field ) { if ( in_array( $field['type'], $ignored_fields, true ) ) { continue; } $value = $this->get_field_value( $field, $form_data ); if ( wpforms_is_empty_string( $value ) ) { continue; } /** * Hide the field. * * @since 1.7.0 * * @param bool $hide Hide the field. * @param array $field Field data. * @param array $form_data Form data. * * @return bool */ if ( (bool) apply_filters( 'wpforms_pro_fields_entry_preview_print_entry_preview_exclude_field', false, $field, $form_data ) ) { continue; } $fields_html .= sprintf( '<div class="wpforms-entry-preview-label">%s</div> <div class="wpforms-entry-preview-value">%s</div>', esc_html( $this->get_field_label( $field, $form_data ) ), wp_kses_post( $value ) ); } if ( empty( $fields_html ) ) { return; } printf( '<div class="wpforms-entry-preview wpforms-entry-preview-%s">%s</div>', esc_attr( $type ), wp_kses_post( $fields_html ) ); } /** * Get list of ignored fields for the entry preview field. * * @since 1.6.9 * * @return array */ private static function get_ignored_fields() { // TODO: 'captcha' should be dropped from the list when the WPForms Captcha 1.3.2/1.4 is released. $ignored_fields = [ 'hidden', 'captcha' ]; /** * List of ignored fields for the entry preview field. * * @since 1.6.9 * * @param array $fields List of ignored fields. * * @return array */ return (array) apply_filters( 'wpforms_pro_fields_entry_preview_get_ignored_fields', $ignored_fields ); } /** * Get field label. * * @since 1.6.9 * * @param array $field Field data. * @param array $form_data Form data and settings. * * @return string */ private function get_field_label( $field, $form_data ) { $label = ! empty( $field['name'] ) ? wp_strip_all_tags( $field['name'] ) : sprintf( /* translators: %d - field ID. */ esc_html__( 'Field ID #%d', 'wpforms' ), absint( $field['id'] ) ); /** * Modify the field label inside the entry preview field. * * @since 1.6.9 * * @param string $label Label. * @param array $field Field data. * @param array $form_data Form data. * * @return string */ return (string) apply_filters( 'wpforms_pro_fields_entry_preview_get_field_label', $label, $field, $form_data ); } /** * Get field value. * * @since 1.6.9 * * @param array $field Field data. * @param array $form_data Form data and settings. * * @return string */ private function get_field_value( $field, $form_data ) { $value = isset( $field['value'] ) ? $field['value'] : ''; $type = $field['type']; /** This filter is documented in src/SmartTags/SmartTag/FieldHtmlId.php. */ $value = (string) apply_filters( 'wpforms_html_field_value', wp_strip_all_tags( $value ), $field, $form_data, 'entry-preview' ); /** * The field value inside for exact field type the entry preview field. * * @since 1.6.9 * * @param string $value Value. * @param array $field Field data. * @param array $form_data Form data. * * @return string */ $value = (string) apply_filters( "wpforms_pro_fields_entry_preview_get_field_value_{$type}_field", $value, $field, $form_data ); /** * The field value inside the entry preview field. * * @since 1.6.9 * * @param string $value Value. * @param array $field Field data. * @param array $form_data Form data. * * @return string */ $value = (string) apply_filters( 'wpforms_pro_fields_entry_preview_get_field_value', $value, $field, $form_data ); if ( ! $this->is_field_support_preview( $value, $field, $form_data ) ) { /** * Show fields that do not have available preview. * * @since 1.7.0 * * @param bool $show Show the field. * @param array $field Field data. * @param array $form_data Form data. * * @return bool */ $show = (bool) apply_filters( 'wpforms_pro_fields_entry_preview_get_field_value_show_preview_not_available', true, $field, $form_data ); return $show ? sprintf( '<em>%s</em>', esc_html__( 'Preview not available', 'wpforms' ) ) : ''; } if ( wpforms_is_empty_string( $value ) ) { /** * Show fields with the empty value. * * @since 1.7.0 * * @param bool $show Show the field. * @param array $field Field data. * @param array $form_data Form data. * * @return bool */ $show = (bool) apply_filters( 'wpforms_pro_fields_entry_preview_get_field_value_show_empty', true, $field, $form_data ); return $show ? sprintf( '<em>%s</em>', esc_html__( 'Empty', 'wpforms' ) ) : ''; } /** * The field value inside the entry preview for exact field type after all checks. * * @since 1.7.0 * * @param string $value Value. * @param array $field Field data. * @param array $form_data Form data. * * @return string */ return (string) apply_filters( "wpforms_pro_fields_entry_preview_get_field_value_{$type}_field_after", $value, $field, $form_data ); } /** * Determine whether the field is available to show inside the entry preview field. * * @since 1.6.9 * * @param string $value Value. * @param array $field Processed field data. * @param array $form_data Form data. * * @return bool */ private function is_field_support_preview( $value, $field, $form_data ) { $field_type = $field['type']; $is_supported = true; // Compatibility with Authorize.Net and Stripe addons. if ( wpforms_is_empty_string( $value ) && in_array( $field_type, [ 'stripe-credit-card', 'authorize_net' ], true ) ) { return false; } /** * The field availability inside the entry preview field. * * @since 1.6.9 * * @param bool $is_supported The field availability. * @param string $value Value. * @param array $field Field data. * @param array $form_data Form data. * * @return bool */ $is_supported = (bool) apply_filters( "wpforms_pro_fields_entry_preview_is_field_support_preview_{$field_type}_field", $is_supported, $value, $field, $form_data ); /** * Fields availability inside the entry preview field. * Actually, it can control availabilities for all field types. * * @since 1.6.9 * * @param bool $is_supported Fields availability. * @param string $value Value. * @param array $field Field data. * @param array $form_data Form data. * * @return bool */ return (bool) apply_filters( 'wpforms_pro_fields_entry_preview_is_field_support_preview', $is_supported, $value, $field, $form_data ); } /** * Field options panel inside the builder. * * @since 1.6.9 * * @param array $field Field data. */ public function field_options( $field ) { $this->field_option( 'basic-options', $field, [ 'markup' => 'open' ] ); $this->field_element( 'row', $field, [ 'slug' => 'description', 'content' => sprintf( '<p class="note">%s</p>', esc_html__( 'Entry Preview must be displayed on its own page, without other fields. HTML fields are allowed.', 'wpforms' ) ), ] ); $this->field_element( 'row', $field, [ 'slug' => 'preview-notice-enable', 'content' => $this->field_element( 'toggle', $field, [ 'slug' => 'preview-notice-enable', // When we add the field to a form it enabled by default. 'value' => ! empty( $field['preview-notice-enable'] ) || wp_doing_ajax(), 'desc' => esc_html__( 'Display Preview Notice', 'wpforms' ), 'tooltip' => esc_html__( 'Check this option to show a message above the entry preview.', 'wpforms' ), ], false ), ] ); $this->field_element( 'row', $field, [ 'slug' => 'preview-notice', 'content' => $this->field_element( 'label', $field, [ 'slug' => 'preview-notice', 'value' => esc_html__( 'Preview Notice', 'wpforms' ), 'tooltip' => esc_html__( 'Fill in the message to show above the entry preview.', 'wpforms' ), ], false ) . $this->field_element( 'textarea', $field, [ 'slug' => 'preview-notice', 'value' => isset( $field['preview-notice'] ) ? $field['preview-notice'] : self::get_default_notice(), ], false ), ] ); $this->field_option( 'basic-options', $field, [ 'markup' => 'close' ] ); $this->field_option( 'advanced-options', $field, [ 'markup' => 'open' ] ); $this->field_element( 'row', $field, [ 'slug' => 'style', 'content' => $this->field_element( 'label', $field, [ 'slug' => 'style', 'value' => esc_html__( 'Style', 'wpforms' ), 'tooltip' => esc_html__( 'Choose the entry preview display style.', 'wpforms' ), ], false ) . $this->field_element( 'select', $field, [ 'slug' => 'style', 'value' => ! empty( $field['style'] ) ? $field['style'] : 'basic', 'options' => self::get_styles(), ], false ), ] ); $this->field_option( 'css', $field ); $this->field_option( 'advanced-options', $field, [ 'markup' => 'close' ] ); } /** * Get default notice. * * @since 1.6.9 * * @return string */ private static function get_default_notice() { return sprintf( "<strong>%s</strong>\n%s", esc_html__( 'This is a preview of your submission. It has not been submitted yet!', 'wpforms' ), esc_html__( 'Please take a moment to verify your information. You can also go back to make changes.', 'wpforms' ) ); } /** * Get list of available styles. * * @since 1.6.9 * * @return array */ private static function get_styles() { return [ 'basic' => esc_html__( 'Basic', 'wpforms' ), 'compact' => esc_html__( 'Compact', 'wpforms' ), 'table' => esc_html__( 'Table', 'wpforms' ), 'table_compact' => esc_html__( 'Table, Compact', 'wpforms' ), ]; } /** * Whether the current field can be populated dynamically. * * @since 1.6.9 * * @param array $properties Field properties. * @param array $field Current field specific data. * * @return bool */ public function is_dynamic_population_allowed( $properties, $field ) { return false; } /** * Whether the current field can be populated using a fallback. * * @since 1.6.9 * * @param array $properties Field properties. * @param array $field Current field specific data. * * @return bool */ public function is_fallback_population_allowed( $properties, $field ) { return false; } /** * Format field. * * @since 1.6.9 * * @param int $field_id Field ID. * @param string $field_submit Submitted field value. * @param array $form_data Form data and settings. */ public function format( $field_id, $field_submit, $form_data ) { } /** * Create the field preview. * * @since 1.6.9 * * @param array $field Field data and settings. */ public function field_preview( $field ) { printf( '<label class="label-title"> <span class="text">%s</span></label>', esc_html__( 'Entry Preview', 'wpforms' ) ); $is_new_field = wp_doing_ajax(); $notice = ! empty( $field['preview-notice-enable'] ) && isset( $field['preview-notice'] ) && ! wpforms_is_empty_string( $field['preview-notice'] ) ? force_balance_tags( $field['preview-notice'] ) : ''; $notice = $is_new_field || wpforms_is_empty_string( $notice ) ? self::get_default_notice() : $notice; $is_disabled = $is_new_field || ! empty( $field['preview-notice-enable'] ); printf( '<div class="wpforms-entry-preview-notice nl2br"%2$s>%1$s</div>', wp_kses_post( nl2br( $notice ) ), ! $is_disabled ? ' style="display: none"' : '' ); printf( '<div class="wpforms-alert wpforms-alert-info"%2$s> <p>%1$s</p> </div>', esc_html__( 'Entry preview will be displayed here and will contain all fields found on the previous page.', 'wpforms' ), $is_disabled ? ' style="display: none"' : '' ); } /** * Display the field input elements on the frontend. * * @since 1.6.9 * * @param array $field Field data and settings. * @param array $field_atts Field attributes. * @param array $form_data Form data and settings. */ public function field_display( $field, $field_atts, $form_data ) { echo '<div class="wpforms-entry-preview-updating-message">' . esc_html__( 'Updating preview…', 'wpforms' ) . '</div>'; if ( ! empty( $field['preview-notice-enable'] ) ) { $notice = ! empty( $field['preview-notice'] ) ? $field['preview-notice'] : self::get_default_notice(); printf( '<div class="wpforms-entry-preview-notice" style="display: none;">%1$s</div>', wp_kses_post( nl2br( $notice ) ) ); } echo '<div class="wpforms-entry-preview-wrapper" style="display: none;"></div>'; } /** * Add a custom JS i18n strings for the builder. * * @since 1.6.9 * * @param array $strings List of strings. * @param array $form Current form. * * @return array */ public function add_builder_strings( $strings, $form ) { $strings['entry_preview_require_page_break'] = esc_html__( 'Page breaks are required for entry previews to work. If you\'d like to remove page breaks, you\'ll have to first remove the entry preview field.', 'wpforms' ); $strings['entry_preview_default_notice'] = self::get_default_notice(); $strings['entry_preview_require_previous_button'] = esc_html__( 'You can\'t hide the previous button because it is required for the entry preview field on this page.', 'wpforms' ); return $strings; } /** * Add fields to the confirmation settings. * * @since 1.6.9 * * @param WPForms_Builder_Panel_Settings $settings Settings. * @param int $field_id Field ID. */ public function add_confirmation_fields( $settings, $field_id ) { wpforms_panel_field( 'toggle', 'confirmations', 'message_entry_preview', $settings->form_data, esc_html__( 'Show entry preview after confirmation message', 'wpforms' ), [ 'input_id' => 'wpforms-panel-field-confirmations-message_entry_preview-' . $field_id, 'input_class' => 'wpforms-panel-field-confirmations-message_entry_preview', 'parent' => 'settings', 'subsection' => $field_id, ] ); wpforms_panel_field( 'select', 'confirmations', 'message_entry_preview_style', $settings->form_data, esc_html__( 'Preview Style', 'wpforms' ), [ 'input_id' => 'wpforms-panel-field-confirmations-message_entry_preview_style-' . $field_id, 'input_class' => 'wpforms-panel-field-confirmations-message_entry_preview_style', 'parent' => 'settings', 'subsection' => $field_id, 'default' => 'basic', 'options' => self::get_styles(), ] ); } /** * Ignore entry preview fields for some forms. * * @since 1.6.9 * * @param array $form_data Form data and settings. * * @return array */ public function ignore_fields( $form_data ) { if ( ! $this->is_fields_ignored( $form_data ) ) { return $form_data; } if ( empty( $form_data['fields'] ) ) { return $form_data; } foreach ( $form_data['fields'] as $key => $field ) { if ( $field['type'] === $this->type ) { unset( $form_data['fields'][ $key ] ); } } return $form_data; } /** * Allow ignoring entry preview fields for some forms. * * @since 1.6.9 * * @param array $form_data Form data and settings. * * @return bool */ private function is_fields_ignored( $form_data ) { $is_ignore = false; /** * Allow ignoring entry preview fields for some forms. * * @since 1.6.9 * * @param bool $is_ignore Ignore the entry preview fields. * @param array $form_data Form data and settings. * * @return bool */ return (bool) apply_filters( 'wpforms_pro_fields_entry_preview_is_fields_ignored', $is_ignore, $form_data ); } } new WPForms_Entry_Preview();
Copyright ©2k19 -
Hexid
|
Tex7ure