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/Admin/Entry.php
<?php

namespace WPFormsPDF\Admin;

use WPFormsPDF\Helpers;
use WPFormsPDF\Notifications\Process;
use WPFormsPDF\Storage;

/**
 * PDF on the single entry page.
 *
 * @since 1.0.0
 */
class Entry {

	/**
	 * Constructor.
	 *
	 * @since 1.0.0
	 */
	public function __construct() {

		if ( ! wpforms_is_admin_page( 'entries', 'details' ) ) {
			return;
		}

		$this->hooks();
	}

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

		add_filter( 'wpforms_entry_single_data', [ $this, 'entry_single_data' ], PHP_INT_MAX, 3 );
	}

	/**
	 * Filter entry single data.
	 *
	 * @since 1.0.0
	 *
	 * @param array|mixed $fields    Entry fields.
	 * @param object      $entry     Entry.
	 * @param array       $form_data Form data.
	 *
	 * @return array
	 */
	public function entry_single_data( $fields, object $entry, array $form_data ): array {

		$fields = (array) $fields;

		if ( empty( $form_data['settings']['pdfs'] ) ) {
			return $fields;
		}

		$pdfs = $form_data['settings']['pdfs'];

		// Prepare pseudo-field data.
		$pdfs_data = [
			'id'    => $form_data['field_id'],
			'type'  => 'pdf',
			'name'  => esc_html( _n( 'PDF', 'PDFs', count( $pdfs ), 'wpforms-pdf' ) ),
			'value' => '',
		];

		$form_id  = $entry->form_id ?? 0;
		$entry_id = $entry->entry_id ?? 0;
		$dir      = Storage::get_dir( $form_id, $entry_id );

		if ( empty( $dir ) ) {
			return $fields;
		}

		$pdfs_data['value'] = $this->get_pdf_links( $form_data, $fields, $entry_id );

		$fields[] = $pdfs_data;

		return $fields;
	}

	/**
	 * Generate links to PDF files.
	 *
	 * @since 1.0.0
	 *
	 * @param array $form_data Form data.
	 * @param array $fields    Entry fields.
	 * @param int   $entry_id  Entry ID.
	 *
	 * @return string
	 */
	private function get_pdf_links( array $form_data, array $fields, int $entry_id ): string {

		$pdfs  = $form_data['settings']['pdfs'] ?? [];
		$links = [];

		foreach ( $pdfs as $pdf_id => $pdf ) {
			$links[] = $this->get_pdf_link( (int) $pdf_id, $pdf, $form_data, $fields, $entry_id );
		}

		return implode( '<br>', array_filter( $links ) );
	}

	/**
	 * Generate link to PDF file.
	 *
	 * @since 1.0.0
	 *
	 * @param int   $pdf_id    PDF ID.
	 * @param array $pdf       PDF data.
	 * @param array $form_data Form data.
	 * @param array $fields    Entry fields.
	 * @param int   $entry_id  Entry ID.
	 *
	 * @return string
	 * @noinspection HtmlUnknownTarget
	 */
	private function get_pdf_link( int $pdf_id, array $pdf, array $form_data, array $fields, int $entry_id ): string {

		$url = Helpers::get_pdf_download_url( $pdf_id, $pdf, $form_data, $fields, $entry_id );

		if ( empty( $url ) ) {
			return '';
		}

		$file_name = Process::get_pdf_file_name( $pdf, $form_data, $fields, $entry_id );

		return sprintf(
			'<span class="file-icon"><img width="16" height="16" src="%1$s" alt="" /></span><a href="%2$s" rel="noopener noreferrer" target="_blank">%3$s</a>',
			wp_mime_type_icon( wp_ext2type( 'pdf' ) ),
			esc_url( $url ),
			$file_name
		);
	}
}