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/www/wp-content/plugins/wpforms-pdf/src/Builder/Settings/Templates.php
<?php

namespace WPFormsPDF\Builder\Settings;

use WPFormsPDF\Builder\FormBuilder;
use WPFormsPDF\Templates\Templates as TemplatesData;

/**
 * Class Template handles template settings for PDF form builder.
 *
 * @since 1.0.0
 */
class Templates {
	/**
	 * Templates data.
	 *
	 * @since 1.0.0
	 *
	 * @var TemplatesData
	 */
	private $templates_data;

	/**
	 * PDF ID.
	 *
	 * @since 1.0.0
	 *
	 * @var int|string
	 */
	private $pdf_id;

	/**
	 * Settings.
	 *
	 * @since 1.0.0
	 *
	 * @var object
	 */
	private $settings;

	/**
	 * Builder.
	 *
	 * @since 1.0.0
	 *
	 * @var FormBuilder
	 */
	private $builder;

	/**
	 * Constructor.
	 *
	 * @since 1.0.0
	 *
	 * @param int|string $pdf_id   PDF ID.
	 * @param object     $settings Settings object.
	 */
	public function __construct( $pdf_id, object $settings ) {

		$this->builder        = wpforms_pdf()->form_builder;
		$this->templates_data = wpforms_pdf()->templates;
		$this->pdf_id         = $pdf_id;
		$this->settings       = $settings;

		$this->hooks();
	}

	/**
	 * Hooks.
	 *
	 * @since 1.0.0
	 */
	private function hooks(): void {

		add_action( 'wpforms_builder_print_footer_scripts', [ $this, 'builder_footer_scripts' ] );
	}

	/**
	 * Output Email Template modal.
	 *
	 * @since 1.0.0
	 */
	public function builder_footer_scripts(): void {

		static $rendered = false;

		if ( $rendered ) {
			return;
		}

		$rendered = true;

		// phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
		echo wpforms_render(
			WPFORMS_PDF_PATH . 'templates/view-all-templates-modal',
			[],
			true
		);
	}

	/**
	 * Get a template settings group.
	 *
	 * @since 1.0.0
	 *
	 * @return string
	 */
	public function get_settings_group(): string {

		$template = wpforms_panel_field(
			'select',
			'pdfs',
			'template_category',
			$this->settings->form_data,
			esc_html__( 'Category', 'wpforms-pdf' ),
			[
				'options'    => $this->get_categories_options(),
				'default'    => 'notification',
				'subsection' => $this->pdf_id,
				'parent'     => 'settings',
				'class'      => 'col-half wpforms-pdf-template-category',
			],
			false
		);

		$template .= wpforms_panel_field(
			'select',
			'pdfs',
			'template_style',
			$this->settings->form_data,
			esc_html__( 'Style', 'wpforms-pdf' ),
			[
				'options'    => $this->get_templates_options(),
				'default'    => 'notification-modern',
				'subsection' => $this->pdf_id,
				'parent'     => 'settings',
				'class'      => 'col-half wpforms-pdf-template-style',
			],
			false
		);

		$template .= $this->builder->get_custom_entity_settings( $this->pdf_id, 'template', $this->settings->form_data );

		$template .= '<div class="wpforms-pdf-text-settings">';

		$template_style = $this->get_current_option_value( 'template_style', 'notification' );
		$theme          = $this->get_current_option_value( 'theme', 'creamsicle' );

		$template .= $this->get_template_settings_fields( $template_style, $theme );

		$template .= '</div>';

		return wpforms_panel_fields_group(
			$template,
			[
				'title'       => esc_html__( 'Template', 'wpforms-pdf' ),
				'description' => sprintf(
					'%s <a class="wpforms-pdf-all-templates-modal" href="#">%s</a>',
					esc_html__( 'Choose a premade template or create your own by customizing the appearance.', 'wpforms-pdf' ),
					esc_html__( 'View All Templates', 'wpforms-pdf' )
				),
				'group'       => 'settings_pdf_template',
				'class'       => 'wpforms-pdf-template-group',
				'default'     => 'opened',
				'borders'     => [ 'top' ],
				'unfoldable'  => true,
			],
			false
		);
	}

	/**
	 * Get current option value.
	 *
	 * @since 1.0.0
	 *
	 * @param string $option_slug   Option slug.
	 * @param mixed  $default_value Default value.
	 *
	 * @return string
	 */
	private function get_current_option_value( string $option_slug, $default_value = '' ): string {

		$options = $this->settings->form_data['settings']['pdfs'][ $this->pdf_id ] ?? [];

		return $options[ $option_slug ] ?? $default_value;
	}

	/**
	 * Get template settings fields.
	 *
	 * @since 1.0.0
	 *
	 * @param string $template_slug Template slug.
	 * @param string $theme_slug    Theme slug.
	 *
	 * @return string
	 */
	public function get_template_settings_fields( string $template_slug, string $theme_slug ): string {

		$fields = '';

		$template_settings = wpforms_pdf()->templates->get_template( $template_slug, $theme_slug );
		$template_texts    = $template_settings['text'] ?? [];

		foreach ( array_keys( $template_texts ) as $field_slug ) {
			$fields .= $this->get_panel_field( $field_slug, $template_texts );
		}

		return $fields;
	}

	/**
	 * Get panel field function arguments for text fields.
	 *
	 * @since 1.0.0
	 *
	 * @param string $field_slug     Field slug.
	 * @param array  $template_texts Template texts.
	 *
	 * @return array|null
	 */
	private function get_panel_field_text_args( string $field_slug, array $template_texts ): ?array {

		$default_value = wp_unslash( $template_texts[ $field_slug ] ?? '' );

		// The existing value should remain the same. The actual value is stored in the template data.
		$existing_value = $default_value;

		$fields = [
			'content'                => [
				'textarea',
				'pdfs',
				'content',
				'{form_data}',
				esc_html__( 'Content', 'wpforms-pdf' ),
				[
					'parent'      => 'settings',
					'subsection'  => $this->pdf_id,
					'default'     => $default_value,
					'value'       => $existing_value,
					'class'       => 'col-two-thirds',
					'input_class' => 'wpforms-smart-tags-enabled',
					'smarttags'   => [ 'type' => 'all' ],
				],
			],
			'paragraph_1'            => [
				'textarea',
				'pdfs',
				'paragraph_1',
				'{form_data}',
				esc_html__( 'Paragraph', 'wpforms-pdf' ),
				[
					'parent'      => 'settings',
					'subsection'  => $this->pdf_id,
					'default'     => $default_value,
					'value'       => $existing_value,
					'class'       => 'col-two-thirds',
					'input_class' => 'wpforms-smart-tags-enabled',
					'smarttags'   => [ 'type' => 'all' ],
				],
			],
			'business_address'       => [
				'text',
				'pdfs',
				'business_address',
				'{form_data}',
				esc_html__( 'Business Address', 'wpforms-pdf' ),
				[
					'parent'      => 'settings',
					'subsection'  => $this->pdf_id,
					'default'     => $default_value,
					'value'       => $existing_value,
					'class'       => 'col-two-thirds',
					'input_class' => 'wpforms-smart-tags-enabled',
					'smarttags'   => [ 'type' => 'all' ],
				],
			],
			'business_email'         => [
				'text',
				'pdfs',
				'business_email',
				'{form_data}',
				esc_html__( 'Business Email', 'wpforms-pdf' ),
				[
					'parent'      => 'settings',
					'subsection'  => $this->pdf_id,
					'default'     => $default_value,
					'value'       => $existing_value,
					'class'       => 'col-two-thirds',
					'input_class' => 'wpforms-smart-tags-enabled',
					'smarttags'   => [ 'type' => 'all' ],
				],
			],
			'business_phone'         => [
				'text',
				'pdfs',
				'business_phone',
				'{form_data}',
				esc_html__( 'Business Phone', 'wpforms-pdf' ),
				[
					'parent'      => 'settings',
					'subsection'  => $this->pdf_id,
					'default'     => $default_value,
					'value'       => $existing_value,
					'class'       => 'col-two-thirds',
					'input_class' => 'wpforms-smart-tags-enabled',
					'smarttags'   => [ 'type' => 'all' ],
				],
			],
			'signature_type'         => [
				'select',
				'pdfs',
				'signature_type',
				'{form_data}',
				esc_html__( 'Signature Type', 'wpforms-pdf' ),
				[
					'parent'     => 'settings',
					'subsection' => $this->pdf_id,
					'default'    => $default_value,
					'value'      => $existing_value,
					'options'    => [
						'text'  => esc_html__( 'Text', 'wpforms-pdf' ),
						'image' => esc_html__( 'Image', 'wpforms-pdf' ),
					],
				],
			],
			'signature_text'         => [
				'text',
				'pdfs',
				'signature_text',
				'{form_data}',
				esc_html__( 'Signature Text', 'wpforms-pdf' ),
				[
					'parent'      => 'settings',
					'subsection'  => $this->pdf_id,
					'default'     => $default_value,
					'value'       => $existing_value,
					'class'       => 'col-two-thirds',
					'input_class' => 'wpforms-smart-tags-enabled',
					'smarttags'   => [ 'type' => 'all' ],
				],
			],
			'signature_url'          => [
				'image_upload',
				'pdfs',
				'signature',
				'{form_data}',
				esc_html__( 'Signature Image', 'wpforms-pdf' ),
				[
					'parent'        => 'settings',
					'subsection'    => $this->pdf_id,
					'default'       => $default_value,
					'value'         => $existing_value,
					'hidden_fields' => [ 'position' ],
				],
			],
			'signature_subheading'   => [
				'text',
				'pdfs',
				'signature_subheading',
				'{form_data}',
				esc_html__( 'Signature Subheading', 'wpforms-pdf' ),
				[
					'parent'      => 'settings',
					'subsection'  => $this->pdf_id,
					'default'     => $default_value,
					'value'       => $existing_value,
					'class'       => 'col-two-thirds',
					'input_class' => 'wpforms-smart-tags-enabled',
					'smarttags'   => [ 'type' => 'all' ],
				],
			],
			'date'                   => [
				'text',
				'pdfs',
				'date',
				'{form_data}',
				esc_html__( 'Date', 'wpforms-pdf' ),
				[
					'parent'      => 'settings',
					'subsection'  => $this->pdf_id,
					'default'     => $default_value,
					'value'       => $existing_value,
					'class'       => 'col-two-thirds',
					'input_class' => 'wpforms-smart-tags-enabled',
					'smarttags'   => [ 'type' => 'all' ],
				],
			],
			'date_subheading'        => [
				'text',
				'pdfs',
				'date_subheading',
				'{form_data}',
				esc_html__( 'Date Subheading', 'wpforms-pdf' ),
				[
					'parent'      => 'settings',
					'subsection'  => $this->pdf_id,
					'default'     => $default_value,
					'value'       => $existing_value,
					'class'       => 'col-two-thirds',
					'input_class' => 'wpforms-smart-tags-enabled',
					'smarttags'   => [ 'type' => 'all' ],
				],
			],
			'heading_1'              => [
				'text',
				'pdfs',
				'heading_1',
				'{form_data}',
				esc_html__( 'Heading 1', 'wpforms-pdf' ),
				[
					'parent'      => 'settings',
					'subsection'  => $this->pdf_id,
					'default'     => $default_value,
					'value'       => $existing_value,
					'class'       => 'col-two-thirds',
					'input_class' => 'wpforms-smart-tags-enabled',
					'smarttags'   => [ 'type' => 'all' ],
				],
			],
			'heading_2'              => [
				'text',
				'pdfs',
				'heading_2',
				'{form_data}',
				esc_html__( 'Heading 2', 'wpforms-pdf' ),
				[
					'parent'      => 'settings',
					'subsection'  => $this->pdf_id,
					'default'     => $default_value,
					'value'       => $existing_value,
					'class'       => 'col-two-thirds',
					'input_class' => 'wpforms-smart-tags-enabled',
					'smarttags'   => [ 'type' => 'all' ],
				],
			],
			'heading_3'              => [
				'text',
				'pdfs',
				'heading_3',
				'{form_data}',
				esc_html__( 'Heading 3', 'wpforms-pdf' ),
				[
					'parent'      => 'settings',
					'subsection'  => $this->pdf_id,
					'default'     => $default_value,
					'value'       => $existing_value,
					'class'       => 'col-two-thirds',
					'input_class' => 'wpforms-smart-tags-enabled',
					'smarttags'   => [ 'type' => 'all' ],
				],
			],
			'header_address'         => [
				'text',
				'pdfs',
				'header_address',
				'{form_data}',
				esc_html__( 'Header Address', 'wpforms-pdf' ),
				[
					'parent'      => 'settings',
					'subsection'  => $this->pdf_id,
					'default'     => $default_value,
					'value'       => $existing_value,
					'class'       => 'col-two-thirds',
					'input_class' => 'wpforms-smart-tags-enabled',
					'smarttags'   => [ 'type' => 'all' ],
				],
			],
			'header_address_2'       => [
				'text',
				'pdfs',
				'header_address_2',
				'{form_data}',
				esc_html__( 'Header Address 2', 'wpforms-pdf' ),
				[
					'parent'      => 'settings',
					'subsection'  => $this->pdf_id,
					'default'     => $default_value,
					'value'       => $existing_value,
					'class'       => 'col-two-thirds',
					'input_class' => 'wpforms-smart-tags-enabled',
					'smarttags'   => [ 'type' => 'all' ],
				],
			],
			'header_email'           => [
				'text',
				'pdfs',
				'header_email',
				'{form_data}',
				esc_html__( 'Header Email', 'wpforms-pdf' ),
				[
					'parent'      => 'settings',
					'subsection'  => $this->pdf_id,
					'default'     => $default_value,
					'value'       => $existing_value,
					'class'       => 'col-two-thirds',
					'input_class' => 'wpforms-smart-tags-enabled',
					'smarttags'   => [ 'type' => 'all' ],
				],
			],
			'header_phone'           => [
				'text',
				'pdfs',
				'header_phone',
				'{form_data}',
				esc_html__( 'Header Phone', 'wpforms-pdf' ),
				[
					'parent'      => 'settings',
					'subsection'  => $this->pdf_id,
					'default'     => $default_value,
					'value'       => $existing_value,
					'class'       => 'col-two-thirds',
					'input_class' => 'wpforms-smart-tags-enabled',
					'smarttags'   => [ 'type' => 'all' ],
				],
			],
			'billing_heading'        => [
				'text',
				'pdfs',
				'billing_heading',
				'{form_data}',
				esc_html__( 'Billing Heading', 'wpforms-pdf' ),
				[
					'parent'      => 'settings',
					'subsection'  => $this->pdf_id,
					'default'     => $default_value,
					'value'       => $existing_value,
					'class'       => 'col-two-thirds',
					'input_class' => 'wpforms-smart-tags-enabled',
					'smarttags'   => [ 'type' => 'all' ],
				],
			],
			'billing_content'        => [
				'textarea',
				'pdfs',
				'billing_content',
				'{form_data}',
				esc_html__( 'Billing Content', 'wpforms-pdf' ),
				[
					'parent'      => 'settings',
					'subsection'  => $this->pdf_id,
					'default'     => $default_value,
					'value'       => $existing_value,
					'class'       => 'col-two-thirds',
					'input_class' => 'wpforms-smart-tags-enabled',
					'smarttags'   => [ 'type' => 'all' ],
				],
			],
			'details_heading'        => [
				'text',
				'pdfs',
				'details_heading',
				'{form_data}',
				esc_html__( 'Details Heading', 'wpforms-pdf' ),
				[
					'parent'      => 'settings',
					'subsection'  => $this->pdf_id,
					'default'     => $default_value,
					'value'       => $existing_value,
					'class'       => 'col-two-thirds',
					'input_class' => 'wpforms-smart-tags-enabled',
					'smarttags'   => [ 'type' => 'all' ],
				],
			],
			'details_content'        => [
				'textarea',
				'pdfs',
				'details_content',
				'{form_data}',
				esc_html__( 'Details Content', 'wpforms-pdf' ),
				[
					'parent'      => 'settings',
					'subsection'  => $this->pdf_id,
					'default'     => $default_value,
					'value'       => $existing_value,
					'class'       => 'col-two-thirds',
					'input_class' => 'wpforms-smart-tags-enabled',
					'smarttags'   => [ 'type' => 'all' ],
				],
			],
			'terms_heading'          => [
				'text',
				'pdfs',
				'terms_heading',
				'{form_data}',
				esc_html__( 'Terms Heading', 'wpforms-pdf' ),
				[
					'parent'      => 'settings',
					'subsection'  => $this->pdf_id,
					'default'     => $default_value,
					'value'       => $existing_value,
					'class'       => 'col-two-thirds',
					'input_class' => 'wpforms-smart-tags-enabled',
					'smarttags'   => [ 'type' => 'all' ],
				],
			],
			'terms_content'          => [
				'textarea',
				'pdfs',
				'terms_content',
				'{form_data}',
				esc_html__( 'Terms Content', 'wpforms-pdf' ),
				[
					'parent'      => 'settings',
					'subsection'  => $this->pdf_id,
					'default'     => $default_value,
					'value'       => $existing_value,
					'class'       => 'col-two-thirds',
					'input_class' => 'wpforms-smart-tags-enabled',
					'smarttags'   => [ 'type' => 'all' ],
				],
			],
			'payment_heading'        => [
				'text',
				'pdfs',
				'payment_heading',
				'{form_data}',
				esc_html__( 'Payment Heading', 'wpforms-pdf' ),
				[
					'parent'      => 'settings',
					'subsection'  => $this->pdf_id,
					'default'     => $default_value,
					'value'       => $existing_value,
					'class'       => 'col-two-thirds',
					'input_class' => 'wpforms-smart-tags-enabled',
					'smarttags'   => [ 'type' => 'all' ],
				],
			],
			'payment_content'        => [
				'textarea',
				'pdfs',
				'payment_content',
				'{form_data}',
				esc_html__( 'Payment Content', 'wpforms-pdf' ),
				[
					'parent'      => 'settings',
					'subsection'  => $this->pdf_id,
					'default'     => $default_value,
					'value'       => $existing_value,
					'class'       => 'col-two-thirds',
					'input_class' => 'wpforms-smart-tags-enabled',
					'smarttags'   => [ 'type' => 'all' ],
				],
			],
			'invoice_number_heading' => [
				'text',
				'pdfs',
				'invoice_number_heading',
				'{form_data}',
				esc_html__( 'Invoice Number Heading', 'wpforms-pdf' ),
				[
					'parent'      => 'settings',
					'subsection'  => $this->pdf_id,
					'default'     => $default_value,
					'value'       => $existing_value,
					'class'       => 'col-two-thirds',
					'input_class' => 'wpforms-smart-tags-enabled',
					'smarttags'   => [ 'type' => 'all' ],
				],
			],
			'invoice_number'         => [
				'text',
				'pdfs',
				'invoice_number',
				'{form_data}',
				esc_html__( 'Invoice Number', 'wpforms-pdf' ),
				[
					'parent'      => 'settings',
					'subsection'  => $this->pdf_id,
					'default'     => $default_value,
					'value'       => $existing_value,
					'class'       => 'col-two-thirds',
					'input_class' => 'wpforms-smart-tags-enabled',
					'smarttags'   => [ 'type' => 'all' ],
				],
			],
			'business_name'          => [
				'text',
				'pdfs',
				'business_name',
				'{form_data}',
				esc_html__( 'Business Name', 'wpforms-pdf' ),
				[
					'parent'      => 'settings',
					'subsection'  => $this->pdf_id,
					'default'     => $default_value,
					'value'       => $existing_value,
					'class'       => 'col-two-thirds',
					'input_class' => 'wpforms-smart-tags-enabled',
					'smarttags'   => [ 'type' => 'all' ],
				],
			],
			'tax_heading'            => [
				'text',
				'pdfs',
				'tax_heading',
				'{form_data}',
				esc_html__( 'Tax Number Heading', 'wpforms-pdf' ),
				[
					'parent'      => 'settings',
					'subsection'  => $this->pdf_id,
					'default'     => $default_value,
					'value'       => $existing_value,
					'class'       => 'col-two-thirds',
					'input_class' => 'wpforms-smart-tags-enabled',
					'smarttags'   => [ 'type' => 'all' ],
				],
			],
			'tax_id'                 => [
				'text',
				'pdfs',
				'tax_id',
				'{form_data}',
				esc_html__( 'Tax Number', 'wpforms-pdf' ),
				[
					'parent'      => 'settings',
					'subsection'  => $this->pdf_id,
					'default'     => $default_value,
					'value'       => $existing_value,
					'class'       => 'col-two-thirds',
					'input_class' => 'wpforms-smart-tags-enabled',
					'smarttags'   => [ 'type' => 'all' ],
				],
			],
			'date_heading'           => [
				'text',
				'pdfs',
				'date_heading',
				'{form_data}',
				esc_html__( 'Date Heading', 'wpforms-pdf' ),
				[
					'parent'      => 'settings',
					'subsection'  => $this->pdf_id,
					'default'     => $default_value,
					'value'       => $existing_value,
					'class'       => 'col-two-thirds',
					'input_class' => 'wpforms-smart-tags-enabled',
					'smarttags'   => [ 'type' => 'all' ],
				],
			],
			'due_date_heading'       => [
				'text',
				'pdfs',
				'due_date_heading',
				'{form_data}',
				esc_html__( 'Due Date Heading', 'wpforms-pdf' ),
				[
					'parent'      => 'settings',
					'subsection'  => $this->pdf_id,
					'default'     => $default_value,
					'value'       => $existing_value,
					'class'       => 'col-two-thirds',
					'input_class' => 'wpforms-smart-tags-enabled',
					'smarttags'   => [ 'type' => 'all' ],
				],
			],
			'due_date'               => [
				'text',
				'pdfs',
				'due_date',
				'{form_data}',
				esc_html__( 'Due Date', 'wpforms-pdf' ),
				[
					'parent'      => 'settings',
					'subsection'  => $this->pdf_id,
					'default'     => $default_value,
					'value'       => $existing_value,
					'class'       => 'col-two-thirds',
					'input_class' => 'wpforms-smart-tags-enabled',
					'smarttags'   => [ 'type' => 'all' ],
				],
			],
			'posted_date_heading'    => [
				'text',
				'pdfs',
				'posted_date_heading',
				'{form_data}',
				esc_html__( 'Date Posted Heading', 'wpforms-pdf' ),
				[
					'parent'      => 'settings',
					'subsection'  => $this->pdf_id,
					'default'     => $default_value,
					'value'       => $existing_value,
					'class'       => 'col-two-thirds',
					'input_class' => 'wpforms-smart-tags-enabled',
					'smarttags'   => [ 'type' => 'all' ],
				],
			],
			'posted_date'            => [
				'text',
				'pdfs',
				'posted_date',
				'{form_data}',
				esc_html__( 'Date Posted', 'wpforms-pdf' ),
				[
					'parent'      => 'settings',
					'subsection'  => $this->pdf_id,
					'default'     => $default_value,
					'value'       => $existing_value,
					'class'       => 'col-two-thirds',
					'input_class' => 'wpforms-smart-tags-enabled',
					'smarttags'   => [ 'type' => 'all' ],
				],
			],
			'signature_show'         => [
				'toggle',
				'pdfs',
				'signature_show',
				'{form_data}',
				esc_html__( 'Show Signature', 'wpforms-pdf' ),
				[
					'parent'     => 'settings',
					'subsection' => $this->pdf_id,
					'default'    => $default_value,
					'value'      => $existing_value,
				],
			],
			'badge_show'             => [
				'toggle',
				'pdfs',
				'badge_show',
				'{form_data}',
				esc_html__( 'Show Badge', 'wpforms-pdf' ),
				[
					'parent'     => 'settings',
					'subsection' => $this->pdf_id,
					'default'    => $default_value,
					'value'      => $existing_value,
				],
			],
			'badge_year'             => [
				'text',
				'pdfs',
				'badge_year',
				'{form_data}',
				esc_html__( 'Badge Year', 'wpforms-pdf' ),
				[
					'parent'      => 'settings',
					'subsection'  => $this->pdf_id,
					'default'     => $default_value,
					'value'       => $existing_value,
					'class'       => 'col-two-thirds',
					'input_class' => 'wpforms-smart-tags-enabled',
					'smarttags'   => [ 'type' => 'all' ],
				],
			],
			'badge_subheading'       => [
				'text',
				'pdfs',
				'badge_subheading',
				'{form_data}',
				esc_html__( 'Badge Subheading', 'wpforms-pdf' ),
				[
					'parent'      => 'settings',
					'subsection'  => $this->pdf_id,
					'default'     => $default_value,
					'value'       => $existing_value,
					'class'       => 'col-two-thirds',
					'input_class' => 'wpforms-smart-tags-enabled',
					'smarttags'   => [ 'type' => 'all' ],
				],
			],
			'cname'                  => [
				'text',
				'pdfs',
				'cname',
				'{form_data}',
				esc_html__( 'Name', 'wpforms-pdf' ),
				[
					'parent'      => 'settings',
					'subsection'  => $this->pdf_id,
					'default'     => $default_value,
					'value'       => $existing_value,
					'class'       => 'col-two-thirds',
					'input_class' => 'wpforms-smart-tags-enabled',
					'smarttags'   => [ 'type' => 'all' ],
				],
			],
		];

		return $fields[ $field_slug ] ?? null;
	}

	/**
	 * Get panel field function arguments for color fields.
	 *
	 * @since 1.0.0
	 *
	 * @param string $field_slug     Field slug.
	 * @param array  $template_texts Template texts.
	 *
	 * @return array|null
	 */
	private function get_panel_field_color_args( string $field_slug, array $template_texts ): ?array {

		if ( strpos( $field_slug, '_color' ) === false ) {
			return null;
		}

		$text_field_slug = str_replace( '_color', '', $field_slug );
		$text_field_args = $this->get_panel_field_text_args( $text_field_slug, $template_texts );

		if ( ! $text_field_args || $text_field_args[0] === 'textarea' ) {
			return null;
		}

		$default_value = wp_unslash( $template_texts[ $field_slug ] ?? '' );

		return [
			'color',
			'pdfs',
			$field_slug,
			'{form_data}',
			'',
			[
				'parent'     => 'settings',
				'subsection' => $this->pdf_id,
				'default'    => $default_value,
				'value'      => $default_value,
				'class'      => 'col-third',
			],
		];
	}

	/**
	 * Get the panel field.
	 *
	 * @since 1.0.0
	 *
	 * @param string $field_slug     Field slug.
	 * @param array  $template_texts Template texts.
	 *
	 * @return string
	 */
	private function get_panel_field( string $field_slug, array $template_texts ): string {

		$field_color_args = $this->get_panel_field_color_args( $field_slug, $template_texts );
		$field_text_args  = $this->get_panel_field_text_args( $field_slug, $template_texts );

		// Return an empty string if the field does not exist.
		if ( empty( $field_color_args ) && empty( $field_text_args ) ) {
			return '';
		}

		$field_args = $field_color_args ?? $field_text_args;

		// Add the form data to the field arguments array.
		$field_args[3] = $this->settings->form_data;

		// Add `false` as the last argument to the field arguments array.
		$field_args[] = false;

		// Textarea field is generated differently.
		if ( $field_args[0] === 'textarea' ) {
			return $this->get_richtext_field( $field_slug, $field_args, $template_texts );
		}

		return wpforms_panel_field( ...$field_args );
	}

	/**
	 * Get richtext field (textarea).
	 *
	 * @since 1.0.0
	 *
	 * @param string $field_slug     Field slug.
	 * @param array  $field_args     Panel field args.
	 * @param array  $template_texts Template texts.
	 *
	 * @return string
	 */
	private function get_richtext_field( string $field_slug, array $field_args, array $template_texts ): string {

		$default_value  = $template_texts[ $field_slug ] ?? '';
		$existing_value = $default_value;

		$default_color_value  = $template_texts[ $field_slug . '_color' ] ?? '';
		$existing_color_value = $default_color_value;

		$richtext_args = [
			'default'     => $default_value,
			'value'       => $existing_value,
			'location'    => 'pdfs',
			'class'       => 'wpforms-panel-field-tinymce',
			'input_class' => 'wpforms-pdf-tinymce-smarttags',
			'smarttags'   => [ 'type' => 'all' ],
			'tinymce'     => [
				'editor_height' => '200',
			],
		];

		$field_args[5] = array_merge( $field_args[5], $richtext_args );

		// Generate the richtext field.
		$field = wpforms_panel_field( ...$field_args );

		// Generate the color field.
		$field_color = wpforms_panel_field(
			'color',
			'pdfs',
			$field_slug . '_color',
			$this->settings->form_data,
			'',
			[
				'parent'     => 'settings',
				'subsection' => $this->pdf_id,
				'default'    => $default_color_value,
				'value'      => $existing_color_value,
				'class'      => '',
			],
			false
		);

		return sprintf(
			'
				<div class="wpforms-pdf-richtext-and-color wpforms-pdf-%1$s-and-color">
					%2$s
					%3$s
				</div>
			',
			esc_attr( $field_slug ),
			$field,
			$field_color
		);
	}

	/**
	 * Get templates options.
	 *
	 * @since 1.0.0
	 *
	 * @return array
	 */
	private function get_templates_options(): array {

		$options           = [];
		$template_category = $this->get_current_option_value( 'template_category', 'notification' );

		foreach ( $this->get_templates() as $template_id => $template ) {
			if ( $template['category'] !== $template_category ) {
				continue;
			}

			$options[ $template_id ] = $template['title'];
		}

		return $options;
	}

	/**
	 * Get categories options.
	 *
	 * @since 1.0.0
	 *
	 * @return array
	 */
	private function get_categories_options(): array {

		return array_map(
			static function ( $category ) {

				return $category['title'];
			},
			$this->get_categories()
		);
	}

	/**
	 * Get templates data.
	 *
	 * @since 1.0.0
	 *
	 * @return array Templates data.
	 */
	private function get_templates(): array {

		return $this->templates_data->get_all_templates();
	}

	/**
	 * Get categories data.
	 *
	 * @since 1.0.0
	 *
	 * @return array Categories data.
	 */
	private function get_categories(): array {

		return $this->templates_data->get_categories();
	}
}