HEX
Server: LiteSpeed
System: Linux server315.web-hosting.com 4.18.0-553.54.1.lve.el8.x86_64 #1 SMP Wed Jun 4 13:01:13 UTC 2025 x86_64
User: globfdxw (6114)
PHP: 8.1.34
Disabled: NONE
Upload Files
File: /home/globfdxw/public_html/wp-content/plugins/wpforms-pdf/src/Builder/Ajax/TemplateFields.php
<?php

namespace WPFormsPDF\Builder\Ajax;

use WPFormsPDF\Builder\Settings\Templates;

/**
 * TemplateFields AJAX class.
 *
 * @since 1.0.0
 */
class TemplateFields extends Base {

	/**
	 * Register hooks.
	 *
	 * @since 1.0.0
	 */
	protected function hooks(): void {

		add_action( 'wp_ajax_wpforms_pdf_refresh_template_fields', [ $this, 'ajax_refresh_template_fields' ] );
	}

	/**
	 * AJAX handler for refreshing template settings fields.
	 *
	 * @since 1.0.0
	 */
	public function ajax_refresh_template_fields(): void {

		// Verify request security and permissions.
		$this->verify_ajax_request();

		// Get and validate required parameters.
		$data = $this->get_template_refresh_data();

		// Prepare a settings object.
		$settings = $this->prepare_settings_object( $data );

		// Generate template fields HTML.
		$fields_html = $this->generate_template_fields_html( $data['pdf_id'], $settings, $data['template_style'], $data['theme'] );

		// Send successful response.
		wp_send_json_success(
			[
				'html' => $fields_html,
			]
		);
	}

	/**
	 * Get and validate template refresh data from the request.
	 *
	 * @since 1.0.0
	 *
	 * @return array Validated template refresh data.
	 */
	private function get_template_refresh_data(): array {

		$template_style = $this->get_post_data( 'template_style', 'string' );
		$theme          = $this->get_post_data( 'theme', 'string' );
		$pdf_id         = $this->get_post_data( 'pdf_id', 'int' );
		$form_id        = $this->get_post_data( 'form_id', 'int' );
		$form_data      = $this->get_post_data( 'form_data', 'form_data' );

		if ( empty( $template_style ) || empty( $pdf_id ) || empty( $form_id ) || empty( $form_data ) ) {
			wp_send_json_error( esc_html__( 'Required parameters are missing.', 'wpforms-pdf' ) );
		}

		return [
			'template_style' => $template_style,
			'theme'          => $theme,
			'pdf_id'         => $pdf_id,
			'form_id'        => $form_id,
			'form_data'      => $form_data,
		];
	}

	/**
	 * Prepare a settings object for template fields generation.
	 *
	 * @since 1.0.0
	 *
	 * @param array $data Template refresh data.
	 *
	 * @return object Settings object.
	 */
	private function prepare_settings_object( array $data ): object {

		$settings            = (object) [];
		$settings->form_data = $data['form_data'];

		return $settings;
	}

	/**
	 * Generate template fields HTML.
	 *
	 * @since 1.0.0
	 *
	 * @param string $pdf_id         PDF ID.
	 * @param object $settings       Settings object.
	 * @param string $template_style Template style.
	 * @param string $theme          Theme.
	 *
	 * @return string Generated HTML.
	 */
	private function generate_template_fields_html( string $pdf_id, object $settings, string $template_style, string $theme ): string {

		return ( new Templates( $pdf_id, $settings ) )->get_template_settings_fields( $template_style, $theme );
	}
}