registerHooks(); ( new Adapters\HorizontalTableAdapter() )->registerHooks(); ( new Adapters\BlocksAdapter() )->registerHooks(); ( new Adapters\OptionsAdapter() )->registerHooks(); ( new Adapters\DropdownAdapter() )->registerHooks(); ( new Adapters\PlainTextAdapter() )->registerHooks(); ( new Adapters\AddToCartAdapter() )->registerHooks(); add_action( 'wp_footer', array( $this, 'renderFormModal' ) ); add_action( 'wp_enqueue_scripts', array( $this, 'enqueueAssets' ) ); add_action( 'template_redirect', array( $this, 'handleSuccessNotice' ) ); } public function handleSuccessNotice() { if ( isset( $_GET['tier_pricing_table_quote_success'] ) && ! empty( $_GET['form_id'] ) ) { $formId = sanitize_text_field( $_GET['form_id'] ); $form = RequestQuoteForm::get( $formId ); $message = __( 'Your quote request has been submitted successfully!', 'tier-pricing-table' ); if ( $form ) { $message = $form->getSuccessMessage(); } if ( function_exists( 'wc_add_notice' ) ) { if ( function_exists( 'WC' ) && isset( WC()->session ) && ! WC()->session->has_session() ) { WC()->session->set_customer_session_cookie( true ); } wc_add_notice( $message, 'success' ); wp_safe_redirect( remove_query_arg( array( 'tier_pricing_table_quote_success', 'form_id' ) ) ); exit; } } } public function renderFormModal() { if ( empty( self::$renderedModals ) ) { return; } foreach ( self::$renderedModals as $productId => $form ) : $product = wc_get_product( $productId ); if ( ! $product ) { continue; } ServiceContainer::getInstance()->getFileManager()->includeTemplate( 'frontend/quote-modal.php', array( 'form' => $form, 'productId' => $productId, 'product' => $product, 'formDisplay' => $this, ), plugin_dir_path( dirname( __FILE__ ) ) . 'views/' ); endforeach; } /** * Render the form fields natively in PHP. * * @param RequestQuoteForm $form * @param int $productId */ public function renderFormFields( $form, $productId = 0 ) { $fields = $form->getFields(); if ( empty( $fields ) ) { return; } $currentUser = wp_get_current_user(); $defaultName = $currentUser->exists() ? $currentUser->display_name : ''; $defaultEmail = $currentUser->exists() ? $currentUser->user_email : ''; foreach ( $fields as $field ) { $type = $field['type'] ?? 'text'; $name = $field['name'] ?? ''; $label = $field['label'] ?? ''; $placeholder = $field['placeholder'] ?? ''; $description = $field['description'] ?? ''; $required = ! empty( $field['required'] ) ? 'required' : ''; $optionsText = $field['options'] ?? ''; $options = array(); if ( $optionsText ) { $options = array_filter( array_map( 'trim', explode( "\n", $optionsText ) ) ); } $value = ''; if ( $name === 'name' ) { $value = $defaultName; } elseif ( $name === 'email' ) { $value = $defaultEmail; } ?>