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 );
}
}