website/wp-content/plugins/gravityforms/print-entry.php

290 lines
9.1 KiB
PHP

<?php
/**
* For backwards compatibility, load WordPress if it hasn't been loaded yet.
* Will be used if this file is being called directly.
*/
if ( ! class_exists( 'GFForms' ) ) {
for ( $i = 0; $i < $depth = 10; $i ++ ) {
$wp_root_path = str_repeat( '../', $i );
if ( file_exists( "{$wp_root_path}wp-load.php" ) ) {
require_once( "{$wp_root_path}wp-load.php" );
require_once( "{$wp_root_path}wp-admin/includes/admin.php" );
break;
}
}
// Redirect to the login page if user is not authenticated.
auth_redirect();
}
if ( ! GFCommon::current_user_can_any( 'gravityforms_view_entries' ) ) {
die( __( "You don't have adequate permission to view entries.", 'gravityforms' ) );
}
add_action( 'gform_print_entry_content', 'gform_default_entry_content', 10, 3 );
function gform_default_entry_content( $form, $entry, $entry_ids ) {
$page_break = rgget( 'page_break' ) ? 'print-page-break' : false;
/**
* @todo Review use of the form tag. The entry detail markup does not use inputs so they may no longer be needed.
*
* Previous comment: Separate each entry inside a form element so radio buttons don't get treated as a single group across multiple entries.
*/
echo '<form>';
GFEntryDetail::lead_detail_grid( $form, $entry );
echo '</form>';
$print_entry_notes = rgget( 'notes' ) === '1';
/**
* Allows printing of entry notes to be overridden.
*
* @since 2.4.17
*
* @param bool $print_entry_notes Indicates if printing of notes was enabled via the entry list or detail pages.
* @param array $entry The entry currently being printed.
* @param array $form The form which created the current entry.
*/
$print_entry_notes = apply_filters( 'gform_print_entry_notes', $print_entry_notes, $entry, $form );
if ( $print_entry_notes ) {
$notes = GFFormsModel::get_lead_notes( $entry['id'] );
if ( ! empty( $notes ) ) {
GFEntryDetail::notes_grid( $notes, false );
}
}
// Output entry divider/page break.
if ( array_search( $entry['id'], $entry_ids ) < count( $entry_ids ) - 1 ) {
echo '<div class="print-hr ' . $page_break . '"></div>';
}
}
// Get form ID.
$form_id = absint( rgget( 'fid' ) );
// Get submitted entry IDs.
$entry_ids = rgget( 'lid' );
// If no entry IDs were defined, get all entry IDs.
if ( 0 == $entry_ids ) {
$filter = rgget( 'filter' );
$search = rgget( 'search' );
$star = $filter == 'star' ? 1 : null;
$read = $filter == 'unread' ? 0 : null;
$status = in_array( $filter, array( 'trash', 'spam' ) ) ? $filter : 'active';
$search_criteria['status'] = $status;
if ( $star ) {
$search_criteria['field_filters'][] = array( 'key' => 'is_starred', 'value' => (bool) $star );
}
if ( ! is_null( $read ) ) {
$search_criteria['field_filters'][] = array( 'key' => 'is_read', 'value' => (bool) $read );
}
$search_field_id = rgget( 'field_id' );
$search_operator = rgget( 'operator' );
if ( isset( $_GET['field_id'] ) && $_GET['field_id'] !== '' ) {
$key = $search_field_id;
$val = rgget( 's' );
$strpos_row_key = strpos( $search_field_id, '|' );
if ( $strpos_row_key !== false ) { //multi-row
$key_array = explode( '|', $search_field_id );
$key = $key_array[0];
$val = $key_array[1] . ':' . $val;
}
$search_criteria['field_filters'][] = array(
'key' => $key,
'operator' => rgempty( 'operator', $_GET ) ? 'is' : rgget( 'operator' ),
'value' => $val,
);
}
// Prepare sorting.
$sorting = array();
if ( rgget( 'orderby' ) ) {
// Add column to order by.
$sorting['key'] = sanitize_text_field( rgget( 'orderby' ) );
// Get sorting direction.
$direction = rgget( 'order' );
$direction = strtoupper( $direction );
$direction = in_array( $direction, array( 'ASC', 'DESC' ) ) ? $direction : 'ASC';
// Add sorting direction to array.
$sorting['direction'] = $direction;
}
// Initialize paging array.
$paging = array();
/**
* Allow the entry list search criteria to be overridden.
*
* @deprecated 2.3 Use "gform_search_criteria_entry_list" instead.
*
* @since 1.9.14.30
*
* @param array $search_criteria An array containing the search criteria.
* @param int $form_id The ID of the current form.
*/
$search_criteria = gf_apply_filters( array( 'gform_search_criteria_entry_list', $form_id ), $search_criteria, $form_id );
/**
* Filter the arguments that will be used to fetch entries for display on the Entry List view.
*
* @since 2.2.3.4
*
* @param array $args {
*
* Array of arguments that will be passed to GFAPI::get_entries() to fetch the entries to be displayed.
*
* @var int $form_id The form ID for which entries will be loaded.
* @var array $search_criteria An array of search critiera that will be used to filter entries.
* @var array $sorting An array containing properties that specify how the entries will be sorted.
* @var array $paging An array containing properties that specify how the entries will be paginated.
* }
*/
$args = gf_apply_filters( array( 'gform_get_entries_args_entry_list', $form_id ), compact( 'form_id', 'search_criteria', 'sorting', 'paging' ) );
$entry_ids = GFAPI::get_entry_ids( $args['form_id'], $args['search_criteria'], $args['sorting'], $args['paging'] );
} else {
// Convert entry IDs to array.
$entry_ids = explode( ',', $entry_ids );
}
// If no form ID or entry IDs are set, exit.
if ( empty( $form_id ) || empty( $entry_ids ) ) {
die( esc_html__( 'Form Id and Entry Id are required parameters.', 'gravityforms' ) );
}
// Get form.
$form = GFAPI::get_form( $form_id );
// Get script/styling extension.
$min = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG || isset( $_GET['gform_debug'] ) ? '' : '.min';
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<meta name="keywords" content="" />
<meta name="description" content="" />
<meta name="MSSmartTagsPreventParsing" content="true" />
<meta name="Robots" content="noindex, nofollow" />
<meta http-equiv="Imagetoolbar" content="No" />
<title>
Print Preview :
<?php echo esc_html( $form['title'] ) ?> :
<?php echo count( $entry_ids ) > 1 ? esc_html__( 'Bulk Print', 'gravityforms' ) : esc_html__( 'Entry # ', 'gravityforms' ) . absint( $entry_ids[0] ); ?>
</title>
<link rel='stylesheet' href='<?php echo GFCommon::get_base_url() ?>/css/print<?php echo $min; ?>.css' type='text/css' />
<?php
/**
* Determines if the Gravity Forms styles should be printed
*
* @since 1.7
*
* @param bool false Set to true if style should be printed.
* @param array $form The Form object
*/
$styles = apply_filters( 'gform_print_styles', false, $form );
// If styles were found, display them.
if ( ! empty( $styles ) ) {
wp_print_styles( $styles );
}
/**
* Disable auto-print when the Print Entry view has fully loaded.
*
* @since 1.9.14.16
*
* @param bool false Auto print is enabled by default. Set to true to disable.
* @param array $form Current Form object.
*
* @see https://gist.github.com/spivurno/e7d1e4563986b3bc5ac4
*/
$auto_print = gf_apply_filters( array( 'gform_print_entry_disable_auto_print', $form['id'] ), false, $form ) ? '' : 'onload="window.print();"';
?>
</head>
<body <?php echo $auto_print; ?>>
<div id="print_preview_hdr" style="display:none">
<div>
<span class="actionlinks"><a href="#" onclick="window.print();" onkeypress="window.print();" class="header-print-link">print this page</a> | <a href="javascript:window.close()" class="close_window"><?php esc_html_e( 'close window', 'gravityforms' ) ?></a></span><?php esc_html_e( 'Print Preview', 'gravityforms' ) ?>
</div>
</div>
<div id="view-container">
<?php
require_once( GFCommon::get_base_path() . '/entry_detail.php' );
// Loop through entry IDs.
foreach ( $entry_ids as $entry_id ) {
// Get entry.
$entry = GFAPI::get_entry( $entry_id );
/**
* Adds actions to the entry printing view's header
*
* @since 1.5.2.8
*
* @param array $form The Form object
* @param array $entry The Entry object
*/
do_action( 'gform_print_entry_header', $form, $entry );
/**
* Output content for the current entry when looping through entries on the Print Entry view.
*
* @since 1.9.14.16
*
* @param array $form Current Form object.
* @param array $entry Current Entry object.
* @param array $entry_ids Array of entry IDs to be printed.
*
* @see https://gist.github.com/spivurno/d617ce30b47d8a8bc8a8
*/
do_action( 'gform_print_entry_content', $form, $entry, $entry_ids );
/**
* Adds actions to the Print Entry page footer
*
* @since 1.5.2.8
*
* @param array $form The Form object
* @param array $entry The Entry object
*/
do_action( 'gform_print_entry_footer', $form, $entry );
}
?>
</div>
</body>
</html>