/home/arranoyd/eventrify/wp-content/plugins/wpforms/src/Pro/Admin/Entries/PrintPreview.php
<?php
namespace WPForms\Pro\Admin\Entries;
/**
* Print view for single form entries.
*
* @since 1.5.1
*/
class PrintPreview {
/**
* Entry object.
*
* @since 1.5.1
*
* @var object
*/
public $entry;
/**
* Form data.
*
* @since 1.5.1
*
* @var array
*/
public $form_data;
/**
* Constructor.
*
* @since 1.5.1
*/
public function __construct() {
$this->hooks();
}
/**
* Hooks.
*
* @since 1.5.1
*/
public function hooks() {
\add_action( 'admin_init', array( $this, 'print_html' ), 1 );
}
/**
* Check if current page request meets requirements for entry print page.
*
* @since 1.5.1
*
* @return bool
*/
public function is_print_page() {
// Only proceed for the form builder.
if ( ! \wpforms_is_admin_page( 'entries', 'print' ) ) {
return false;
}
// Check that entry ID was passed.
if ( empty( $_GET['entry_id'] ) ) { //phpcs:ignore;
return false;
}
$entry_id = \absint( $_GET['entry_id'] ); // phpcs:ignore WordPress.Security.NonceVerification.Recommended
// Check for user with correct capabilities.
if ( ! \wpforms_current_user_can( 'view_entry_single', $entry_id ) ) {
return false;
}
// Fetch the entry.
$this->entry = \wpforms()->entry->get( $entry_id );
// Check valid entry was found.
if ( empty( $this->entry ) ) {
return false;
}
// Fetch form details for the entry.
$this->form_data = \wpforms()->form->get(
$this->entry->form_id,
array(
'content_only' => true,
)
);
// Check valid form was found.
if ( empty( $this->form_data ) ) {
return false;
}
// Everything passed, fetch entry notes.
$this->entry->entry_notes = \wpforms()->entry_meta->get_meta(
array(
'entry_id' => $this->entry->entry_id,
'type' => 'note',
)
);
return true;
}
/**
* Output HTML markup for the print preview page.
*
* @since 1.5.1
*/
public function print_html() {
// Under normal circumstances this should never return false.
if ( ! $this->is_print_page() ) {
return;
}
$min = \wpforms_get_min_suffix();
?>
<!doctype html>
<html>
<head>
<meta charset="<?php bloginfo( 'charset' ); ?>">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>WPForms Print Preview - <?php echo ucfirst( \esc_html( \sanitize_text_field( $this->form_data['settings']['form_title'] ) ) ); ?> </title>
<meta name="description" content="">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="robots" content="noindex,nofollow,noarchive">
<link rel="stylesheet" href="<?php echo \esc_url( \includes_url( 'css/buttons.min.css' ) ); ?>" type="text/css">
<link rel="stylesheet" href="<?php echo \WPFORMS_PLUGIN_URL; ?>assets/css/entry-print<?php echo $min; ?>.css" type="text/css">
<script type="text/javascript" src="<?php echo \esc_url( \includes_url( 'js/jquery/jquery.js' ) ); ?>"></script>
<script type="text/javascript">
jQuery( function( $ ){
var showEmpty = false,
showNotes = false,
showCompact = false;
// Print page.
$( document ).on( 'click', '.print', function( event ) {
event.preventDefault();
window.print();
} );
// Close page.
$( document ).on( 'click', '.close-window', function( event ) {
event.preventDefault();
window.close();
} );
// Toggle empty fields.
$( document ).on( 'click', '.toggle-empty', function( event ) {
event.preventDefault();
if ( ! showEmpty ) {
$( this ).text( '<?php \esc_html_e( 'Hide empty fields', 'wpforms' ); ?>' );
} else {
$( this ).text( '<?php \esc_html_e( 'Show empty fields', 'wpforms' ); ?>' );
}
$( '.field.empty' ).toggle();
showEmpty = !showEmpty;
} );
// Toggle notes.
$( document ).on( 'click', '.toggle-notes', function( event ) {
event.preventDefault();
if ( ! showNotes ) {
$( this ).text( '<?php \esc_html_e( 'Hide notes', 'wpforms' ); ?>' );
} else {
$( this ).text( '<?php \esc_html_e( 'Show notes', 'wpforms' ); ?>' );
}
$( '.notes, .notes-head' ).toggle();
showNotes = !showNotes;
});
// Toggle compact view.
$( document ).on( 'click', '.toggle-view', function( event ) {
event.preventDefault();
if ( ! showCompact ) {
$( this ).text( '<?php \esc_html_e( 'Normal view', 'wpforms' ); ?>' );
} else {
$( this ).text( '<?php \esc_html_e( 'Compact view', 'wpforms' ); ?>' );
}
$( '#print' ).toggleClass( 'compact' );
showCompact = !showCompact;
} );
} );
</script>
<?php \do_action( 'wpforms_pro_admin_entries_printpreview_print_html_head', $this->entry, $this->form_data ); ?>
</head>
<body class="wp-core-ui">
<div class="wpforms-preview" id="print">
<?php \do_action( 'wpforms_pro_admin_entries_printpreview_print_html_header_before', $this->entry, $this->form_data ); ?>
<h1>
<?php /* translators: %d - entry ID. */ ?>
<?php echo \esc_html( \sanitize_text_field( $this->form_data['settings']['form_title'] ) ); ?> <span> - <?php printf( \esc_html__( 'Entry #%d', 'wpforms' ), \absint( $this->entry->entry_id ) ); ?></span>
<div class="buttons">
<a href="" class="button button-secondary close-window"><?php \esc_html_e( 'Close', 'wpforms' ); ?></a>
<a href="" class="button button-primary print"><?php \esc_html_e( 'Print', 'wpforms' ); ?></a>
</div>
</h1>
<div class="actions">
<a href="#" class="toggle-empty"><?php \esc_html_e( 'Show empty fields', 'wpforms' ); ?></a> •
<?php echo ! empty( $this->entry->entry_notes ) ? '<a href="#" class="toggle-notes">' . \esc_html__( 'Show notes', 'wpforms' ) . '</a> •' : ''; ?>
<a href="#" class="toggle-view"><?php \esc_html_e( 'Compact view', 'wpforms' ); ?></a>
</div>
<?php
\do_action_deprecated(
'wpforms_pro_admin_entries_printpreview_print_hrml_header_after',
array( $this->entry, $this->form_data ),
'1.5.5 of the WPForms plugin',
'wpforms_pro_admin_entries_printpreview_print_html_header_after'
);
\do_action( 'wpforms_pro_admin_entries_printpreview_print_html_header_after', $this->entry, $this->form_data );
$fields = \apply_filters( 'wpforms_entry_single_data', \wpforms_decode( $this->entry->fields ), $this->entry, $this->form_data );
if ( empty( $fields ) ) {
// Whoops, no fields! This shouldn't happen under normal use cases.
echo '<p class="no-fields">' . \esc_html__( 'This entry does not have any fields', 'wpforms' ) . '</p>';
} else {
echo '<div class="fields">';
// Display the fields and their values.
foreach ( $fields as $key => $field ) {
$field_value = \apply_filters( 'wpforms_html_field_value', \wp_strip_all_tags( $field['value'] ), $field, $this->form_data, 'entry-single' );
$field_class = \sanitize_html_class( 'wpforms-field-' . $field['type'] );
$field_class .= empty( $field_value ) ? ' empty' : '';
echo '<div class="field ' . \esc_attr( $field_class ) . '">';
echo '<p class="field-name">';
/* translators: %d - field ID. */
echo ! empty( $field['name'] ) ? \esc_html( \wp_strip_all_tags( $field['name'] ) ) : sprintf( \esc_html__( 'Field ID #%d', 'wpforms' ), \absint( $field['id'] ) );
echo '</p>';
echo '<p class="field-value">';
echo ! empty( $field_value ) ? nl2br( \make_clickable( $field_value ) ) : \esc_html__( 'Empty', 'wpforms' ); //phpcs:ignore
echo '</p>';
echo '</div>';
}
echo '</div>';
}
\do_action_deprecated(
'wpforms_pro_admin_entries_printpreview_print_hrml_fields_after',
array( $this->entry, $this->form_data ),
'1.5.5 of the WPForms plugin',
'wpforms_pro_admin_entries_printpreview_print_html_fields_after'
);
\do_action( 'wpforms_pro_admin_entries_printpreview_print_html_fields_after', $this->entry, $this->form_data );
if ( ! empty( $this->entry->entry_notes ) ) {
echo '<h2 class="notes-head">' . \esc_html__( 'Notes', 'wpforms' ) . '</h2>';
echo '<div class="notes">';
foreach ( $this->entry->entry_notes as $note ) {
$user = \get_userdata( $note->user_id );
$user_name = ! empty( $user->display_name ) ? $user->display_name : $user->user_login;
$date_format = sprintf( '%s %s', \get_option( 'date_format' ), \get_option( 'time_format' ) );
$date = \date_i18n( $date_format, strtotime( $note->date ) + ( \get_option( 'gmt_offset' ) * 3600 ) );
echo '<div class="note">';
echo '<div class="note-byline">';
printf( /* translators: %1$s - user name; %2$s - date. */
\esc_html__( 'Added by %1$s on %2$s', 'wpforms' ),
\esc_html( $user_name ),
\esc_html( $date )
);
echo '</div>';
echo '<div class="note-text">' . \wp_kses_post( $note->data ) . '</div>';
echo '</div>';
}
echo '</div>';
}
\do_action_deprecated(
'wpforms_pro_admin_entries_printpreview_print_hrml_notes_after',
array( $this->entry, $this->form_data ),
'1.5.5 of the WPForms plugin',
'wpforms_pro_admin_entries_printpreview_print_html_notes_after'
);
\do_action( 'wpforms_pro_admin_entries_printpreview_print_html_notes_after', $this->entry, $this->form_data );
?>
</div>
<p class="site"><a href="<?php echo \esc_url( \home_url() ); ?>"><?php echo \esc_html( \get_bloginfo( 'name' ) ); ?></a></p>
</body>
<?php
exit();
}
}