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