FileMaster
Search
Toggle Dark Mode
Home
/
.
/
wp-content
/
plugins
/
ultimate-faqs
/
includes
Edit File: WPForms.class.php
<?php if ( !defined( 'ABSPATH' ) ) exit; if ( !class_exists( 'ewdufaqWPForms' ) ) { /** * Class to handle WP Forms integration for Ultimate FAQs * * @since 2.0.0 */ class ewdufaqWPForms { public function __construct() { add_filter( 'wpforms_builder_settings_sections', array( $this, 'add_settings_panel' ) ); add_action( 'wpforms_form_settings_panel_content', array( $this, 'add_settings' ) ); add_action( 'wpforms_frontend_output_before', array( $this, 'js_localization' ), 10, 2 ); add_action( 'wpforms_display_field_before', array( $this, 'display_faqs' ), 10, 2 ); add_action( 'wpforms_display_field_after', array( $this, 'display_faqs' ), 10, 2 ); add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_scripts' ) ); } /** * Adds an FAQs settings panel to the WP Forms admin screen * @since 2.0.0 */ public function add_settings_panel( $panels ) { $panels['ufaq'] = esc_html__( 'FAQs', 'ultimate-faqs' ); return $panels; } /** * Adds an the settings to enable WP Forms integration * @since 2.0.0 */ public function add_settings( $instance ) { ?> <div class="wpforms-panel-content-section wpforms-panel-content-section-ufaq"> <div class="wpforms-panel-content-section-title"> <?php esc_html_e( 'Ultimate FAQs', 'ultimate-faqs' ); ?> </div> <?php wpforms_panel_field( 'radio', 'settings', 'ufaq_enabled', $instance->form_data, esc_html__( 'Disable FAQ display for this form, or enable it only on specific fields.', 'wpforms-lite' ), array( 'options' => array( 'enabled' => array( 'label' => 'Enable' ), 'disabled' => array( 'label' => 'Disable' ), 'specific' => array( 'label' => 'Specific Field' ) ) ) ); wpforms_panel_field( 'select', 'settings', 'ufaq_selected_field', $instance->form_data, esc_html__( 'If FAQs are set to a specific field, which field should FAQs be displayed for?', 'wpforms-lite' ), array( 'field_map' => array( 'text', 'textarea' ), 'placeholder' => __( '-- Select Field --', 'ultimate-faqs' ), ) ); ?> </div> <?php } /** * Pass the target field and other form data to the front-end * @since 2.0.0 */ public function js_localization( $form_data, $form ) { global $ewd_ufaq_controller; $target_field = $this->get_target_field( $form_data ); $args = array( 'ufaq_enabled' => isset ( $form_data['settings']['ufaq_enabled'] ) ? $form_data['settings']['ufaq_enabled'] : 'enabled', 'ufaq_selected_field' => $target_field, 'ufaq_minimum_characters' => $ewd_ufaq_controller->settings->get_setting( 'wpforms-minimum-characters' ), 'form_id' => $form_data['id'] ); $ewd_ufaq_controller->add_front_end_php_data( 'ewd-ufaq-js', 'wpforms_integration', $args ); } public function enqueue_scripts() { wp_enqueue_style( 'ewd-ufaq-wpforms-css', EWD_UFAQ_PLUGIN_URL . '/assets/css/ewd-ufaq-wpforms.css', array(), EWD_UFAQ_VERSION ); } public function display_faqs( $field, $form_data ) { global $ewd_ufaq_controller; $target_field = $this->get_target_field( $form_data ); if ( isset( $form_data['settings']['ufaq_enabled'] ) and $form_data['settings']['ufaq_enabled'] == 'disabled' ) { return; } if ( $field['id'] != $target_field ) { return; } if ( current_action() == 'wpforms_display_field_after' and $ewd_ufaq_controller->settings->get_setting( 'wpforms-faq-location' ) == 'above' ) { return; } if ( current_action() == 'wpforms_display_field_before' and $ewd_ufaq_controller->settings->get_setting( 'wpforms-faq-location' ) == 'below' ) { return; } $post_count = $ewd_ufaq_controller->settings->get_setting( 'wpforms-post-count' ); ?> <div class="ewd-ufaq-wpforms-label ewd-ufaq-hidden"><?php esc_html_e( 'Possible FAQs related to your message:', 'ultimate-faqs' ); ?></div> <div class="ewd-ufaq-wpforms-faq-results ewd-ufaq-hidden"><?php echo do_shortcode( '[ultimate-faqs post__in_string="-1" post_count="' . absint( $post_count ) . '"]' ); ?></div> <?php } /** * Determine which field FAQs should be displayed for * @since 2.0.0 */ public function get_target_field( $form_data ) { if ( isset ( $form_data['settings']['ufaq_enabled'] ) and $form_data['settings']['ufaq_enabled'] == 'specific' ) { return isset( $form_data['settings']['ufaq_selected_field'] ) ? $form_data['settings']['ufaq_selected_field'] : 0; } if ( ! isset( $form_data['settings']['ufaq_enabled'] ) or ( isset ( $form_data['settings']['ufaq_enabled'] ) and $form_data['settings']['ufaq_enabled'] != 'disabled' ) ) { foreach ( $form_data['fields'] as $field_id => $field ){ if ( $field['type'] == 'textarea' ) { return $field['id']; } } } return false; } } }
Save
Back