Sindbad~EG File Manager
<?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() {
if ( ! $this->is_print_page() ) {
return;
}
if ( ! $this->is_valid_request() ) {
wp_safe_redirect( admin_url( 'admin.php?page=wpforms-entries' ) );
exit;
}
$this->hooks();
}
/**
* Hooks.
*
* @since 1.5.1
*/
public function hooks() {
add_action( 'admin_init', [ $this, 'print_html' ], 1 );
add_filter( 'wpforms_entry_single_data', [ $this, 'add_hidden_data' ], 10, 2 );
}
/**
* 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.
return wpforms_is_admin_page( 'entries', 'print' );
}
/**
* Is the request valid?
*
* @since 1.7.1
*
* @return bool
*/
private function is_valid_request() {
// phpcs:disable WordPress.Security.NonceVerification.Recommended
// Check that entry ID was passed.
if ( empty( $_GET['entry_id'] ) ) {
return false;
}
$entry_id = absint( $_GET['entry_id'] );
if ( empty( $entry_id ) || (string) $entry_id !== $_GET['entry_id'] ) {
return false;
}
// phpcs:enable 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()->get( 'entry' )->get( $entry_id );
// Check if valid entry was found.
if ( empty( $this->entry ) ) {
return false;
}
// Fetch form details for the entry.
$this->form_data = wpforms()->get( 'form' )->get(
$this->entry->form_id,
[
'content_only' => true,
]
);
// Check if valid form was found.
if ( empty( $this->form_data ) ) {
return false;
}
// Everything passed, fetch entry notes.
$this->entry->entry_notes = wpforms()->get( 'entry_meta' )->get_meta(
[
'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() {
$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 esc_html( ucfirst( 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">
<?php // phpcs:disable WordPress.WP.EnqueuedResources.NonEnqueuedStylesheet, WordPress.WP.EnqueuedResources.NonEnqueuedScript ?>
<link rel="stylesheet" href="<?php echo esc_url( WPFORMS_PLUGIN_URL ); ?>assets/lib/font-awesome/font-awesome.min.css" type="text/css">
<link rel="stylesheet" href="<?php echo esc_url( WPFORMS_PLUGIN_URL ); ?>assets/pro/css/entry-print<?php echo esc_attr( $min ); ?>.css" type="text/css">
<script type="text/javascript" src="<?php echo esc_url( includes_url( 'js/utils.js' ) ); ?>"></script>
<script type="text/javascript" src="<?php echo esc_url( includes_url( 'js/jquery/jquery.js' ) ); ?>"></script>
<?php // phpcs:enable WordPress.WP.EnqueuedResources.NonEnqueuedStylesheet, WordPress.WP.EnqueuedResources.NonEnqueuedScript ?>
<script type="text/javascript">
jQuery( function( $ ) {
var showEmpty = wpCookies.get( 'wpforms_entry_hide_empty' ) !== 'true';
function toggle( $this, $elem = '', $additional = '' ) {
$this.find( '.switch' ).toggleClass( 'active' );
$( $elem ).toggleClass( $additional );
}
// 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();
} );
// Settings button toggle.
$( document ).on( 'click', '.button-settings', function( event ) {
event.preventDefault();
$( this ).find( 'i' ).toggleClass( 'active' );
$( '.actions' ).toggleClass( 'active' );
} );
// Init empty fields.
if ( showEmpty ) {
$( '.field.empty' ).show();
$( '.toggle-empty' ).find( '.switch' ).addClass( 'active' );
} else {
$( '.field.empty' ).hide();
$( '.toggle-empty' ).find( '.switch' ).removeClass( 'active' );
}
// Toggle empty fields.
$( document ).on( 'click', '.toggle-empty', function( event ) {
event.preventDefault();
if ( ! showEmpty ) {
wpCookies.set( 'wpforms_entry_hide_empty', 'true', 2592000 );
$( this ).find( '.switch' ).addClass( 'active' );
} else {
wpCookies.remove( 'wpforms_entry_hide_empty' );
$( this ).find( '.switch' ).removeClass( 'active' );
}
$( '.field.empty' ).toggle();
showEmpty = !showEmpty;
} );
// Toggle HTML fields.
$( document ).on( 'click', '.toggle-html', function( event ) {
event.preventDefault();
toggle( $( this ), '.wpforms-field-html, .wpforms-field-content', 'wpforms-hidden' );
} );
// Toggle section dividers.
$( document ).on( 'click', '.toggle-dividers', function( event ) {
event.preventDefault();
toggle( $( this ), '.wpforms-field-divider, .wpforms-field-pagebreak', 'wpforms-hidden' )
} );
// Toggle notes.
$( document ).on( 'click', '.toggle-notes', function( event ) {
event.preventDefault();
$( this ).find( '.switch' ).toggleClass( 'active' );
$( '.notes, .notes-head' ).toggle();
} );
// Toggle compact view.
$( document ).on( 'click', '.toggle-view', function( event ) {
event.preventDefault();
toggle( $( this ), '#print', 'compact' )
} );
/**
* Rich Text field iframe onload handler.
*
* @since 1.7.0
*
* @param {object} obj Iframe element.
*/
var loadRichTextField = function( obj ) {
if ( ! obj || ! obj.contentWindow ) {
return;
}
// Resize iframe to fit the height of the content.
var doc = obj.contentWindow.document.documentElement || false;
if ( ! doc ) {
return;
}
var height = doc.scrollHeight;
height += doc.scrollWidth > doc.clientWidth ? 20 : 0;
obj.style.height = height + 'px';
// Add `target` and `rel` attributes to all links inside iframe.
$( obj ).contents().find( 'a' ).attr( {
'target': '_blank',
'rel': 'noopener',
} );
};
// Load all Rich Text fields.
$( '.wpforms-entry-field-value-richtext' ).each( function() {
var iframe = this,
$iframe = $( this );
$iframe.on( 'load', function() {
loadRichTextField( iframe );
} );
$iframe.attr( 'src', $iframe.data( 'src' ) );
} );
} );
</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 ); ?>
<div class="page-title">
<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>
</h1>
<div class="buttons">
<a href="#" class="button button-settings" title="<?php esc_attr_e( 'Cog', 'wpforms' ); ?>"><i class="fa fa-cog" aria-hidden="true"></i></a>
<a href="#" class="button button-close close-window" title="<?php esc_attr_e( 'Close', 'wpforms' ); ?>"><?php esc_html_e( 'Close', 'wpforms' ); ?></a>
<a href="#" class="button button-print print" title="<?php esc_attr_e( 'Print', 'wpforms' ); ?>"><?php esc_html_e( 'Print', 'wpforms' ); ?></a>
</div>
</div>
<div class="actions no-print">
<div class="switch-container toggle-empty">
<a href="#" title="<?php esc_attr_e( 'Empty fields', 'wpforms' ); ?>"><i class="switch" aria-hidden="true"></i><span><?php esc_html_e( 'Empty fields', 'wpforms' ); ?></span></a>
</div>
<div class="switch-container toggle-html">
<a href="#" title="<?php esc_attr_e( 'HTML/Content fields', 'wpforms' ); ?>"><i class="switch" aria-hidden="true"></i><span><?php echo esc_html__( 'HTML/Content fields', 'wpforms' ); ?></span></a>
</div>
<div class="switch-container toggle-dividers">
<a href="#" title="<?php esc_attr_e( 'Section Dividers', 'wpforms' ); ?>"><i class="switch" aria-hidden="true"></i><span><?php echo esc_html__( 'Section Dividers', 'wpforms' ); ?></span></a>
</div>
<?php if ( ! empty( $this->entry->entry_notes ) ) : ?>
<div class="switch-container toggle-notes">
<a href="#" title="<?php esc_attr_e( 'Notes', 'wpforms' ); ?>"><i class="switch" aria-hidden="true"></i><span><?php echo esc_html__( 'Notes', 'wpforms' ); ?></span></a>
</div>
<?php endif; ?>
<div class="switch-container toggle-view">
<a href="#"><i class="switch" title="<?php esc_attr_e( 'Compact view', 'wpforms' ); ?>" aria-hidden="true"></i><span><?php esc_html_e( 'Compact view', 'wpforms' ); ?></span></a>
</div>
</div>
<?php
do_action_deprecated(
'wpforms_pro_admin_entries_printpreview_print_hrml_header_after',
[ $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 $field ) {
if ( ! isset( $field['id'] ) ) {
continue;
}
$field_value = isset( $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 .= wpforms_is_empty_string( $field_value ) ? ' empty' : '';
$field_label = isset( $field['name'] ) ? $field['name'] : '';
if ( $field['type'] === 'divider' ) {
$field_label = isset( $field['label'] ) && ! empty( $field['label'] ) ? $field['label'] : esc_html__( 'Section Divider', 'wpforms' );
$field_class = sanitize_html_class( 'wpforms-field-' . $field['type'] ) . ' wpforms-hidden';
}
if ( $field['type'] === 'html' ) {
$field_value = isset( $field['code'] ) ? $field['code'] : '';
$field_class = sanitize_html_class( 'wpforms-field-' . $field['type'] ) . ' wpforms-hidden';
}
if ( $field['type'] === 'content' ) {
$field_value = isset( $field['content'] ) ? $field['content'] : '';
$field_class = sanitize_html_class( 'wpforms-field-' . $field['type'] ) . ' wpforms-hidden';
$field_label = esc_html__( 'Content Field', 'wpforms' );
}
/**
* Filter print preview value.
*
* @since 1.7.9
*
* @param string $field_value Field value.
* @param array $field Field data.
*/
$field_value = make_clickable( apply_filters( 'wpforms_pro_admin_entries_print_preview_field_value', $field_value, $field ) );
/**
* Decide if field value should use nl2br.
*
* @since 1.7.9
*
* @param bool $use Boolean value flagging if field should use nl2br function.
* @param array $field Field data.
*/
$field_value = apply_filters( 'wpforms_pro_admin_entries_print_preview_field_value_use_nl2br', true, $field ) ? nl2br( $field_value ) : $field_value;
?>
<?php if ( $field['type'] === 'divider' ) : ?>
<div class="field <?php echo esc_attr( $field_class ); ?>">
<div class="wpforms-pagebreak-divider">
<p class="pagebreak-label"><?php echo esc_html( wp_strip_all_tags( $field_label ) ); ?></p>
<span class="line"></span>
</div>
</div>
<?php else : ?>
<div class="field <?php echo esc_attr( $field_class ); ?>">
<p class="field-name">
<?php
/* translators: %d - field ID. */
echo ! empty( $field_label ) ? esc_html( wp_strip_all_tags( $field_label ) ) : sprintf( esc_html__( 'Field ID #%d', 'wpforms' ), absint( $field['id'] ) );
?>
</p>
<div class="field-value">
<?php echo ! wpforms_is_empty_string( $field_value ) ? $field_value : esc_html__( 'Empty', 'wpforms' ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
</div>
</div>
<?php endif; ?>
<?php
}
echo '</div>';
}
do_action_deprecated(
'wpforms_pro_admin_entries_printpreview_print_hrml_fields_after',
[ $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 = wpforms_datetime_format( $note->date, '', true );
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',
[ $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();
}
/**
* Add HTML entries, dividers to entry.
*
* @since 1.6.7
*
* @param array $fields Form fields.
* @param object $entry Entry fields.
*
* @return array
*/
public function add_hidden_data( $fields, $entry ) {
$form_data = wpforms()->get( 'form' )->get( $entry->form_id, [ 'content_only' => true ] );
$settings = ! empty( $form_data['fields'] ) ? $form_data['fields'] : [];
// Order entry fields by the form fields.
foreach ( $settings as $key => $setting ) {
if ( empty( $setting['type'] ) ) {
unset( $settings[ $key ] );
continue;
}
$field_type = $setting['type'];
// Divider, HTML and content fields must always be included because it's allowed to show and hide these fields.
if ( in_array( $field_type, [ 'divider', 'html', 'content' ], true ) ) {
continue;
}
/** This filter is documented in /src/Pro/Admin/Entries/Edit.php */
if ( ! (bool) apply_filters( "wpforms_pro_admin_entries_edit_is_field_displayable_{$field_type}", true, $setting, $form_data ) ) {
unset( $settings[ $key ] );
continue;
}
if ( ! isset( $fields[ $key ] ) ) {
unset( $settings[ $key ] );
continue;
}
$settings[ $key ] = $fields[ $key ];
}
return $settings;
}
}
Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists