238 lines
5.5 KiB
PHP
238 lines
5.5 KiB
PHP
<?php
|
|
/**
|
|
* Functions to render Orders page.
|
|
*
|
|
* @package EDD
|
|
* @subpackage Admin/Payments
|
|
* @copyright Copyright (c) 2018, Easy Digital Downloads, LLC
|
|
* @license http://opensource.org/licenses/gpl-2.0.php GNU Public License
|
|
* @since 1.0
|
|
*/
|
|
|
|
// Exit if accessed directly
|
|
defined( 'ABSPATH' ) || exit;
|
|
|
|
/** Navigation ****************************************************************/
|
|
|
|
/**
|
|
* Output the primary orders page navigation
|
|
*
|
|
* @since 3.0
|
|
* @param string $active_tab
|
|
*/
|
|
function edd_orders_page_primary_nav( $active_tab = '' ) {
|
|
|
|
ob_start();?>
|
|
|
|
<nav class="nav-tab-wrapper edd-nav-tab-wrapper" aria-label="<?php esc_attr_e( 'Secondary menu', 'easy-digital-downloads' ); ?>">
|
|
<?php
|
|
|
|
// Get the order pages
|
|
$tabs = edd_get_order_pages();
|
|
|
|
// Loop through order pages and create tabs
|
|
foreach ( $tabs as $tab_id => $tab_name ) {
|
|
|
|
// Remove
|
|
$tab_url = add_query_arg( array(
|
|
'settings-updated' => false,
|
|
'order_type' => sanitize_key( $tab_id )
|
|
) );
|
|
|
|
// Remove the section from the tabs so we always end up at the main section
|
|
$tab_url = remove_query_arg( array( 'section', 'status' ), $tab_url );
|
|
$active = $active_tab === $tab_id
|
|
? ' nav-tab-active'
|
|
: '';
|
|
|
|
// Link
|
|
echo '<a href="' . esc_url( $tab_url ) . '" class="nav-tab' . $active . '">'; // WPCS: XSS ok.
|
|
echo esc_html( $tab_name );
|
|
echo '</a>';
|
|
}
|
|
?>
|
|
</nav>
|
|
|
|
<?php
|
|
|
|
echo ob_get_clean(); // WPCS: XSS ok.
|
|
}
|
|
|
|
/**
|
|
* Retrieve the order pages.
|
|
*
|
|
* Used only by the primary tab navigation for orders.
|
|
*
|
|
* @since 3.0
|
|
*
|
|
* @return array
|
|
*/
|
|
function edd_get_order_pages() {
|
|
|
|
// Get types and setup return value
|
|
$types = edd_get_order_types();
|
|
$retval = array();
|
|
|
|
// Loop through and get type IDs and labels
|
|
foreach ( $types as $type_id => $type ) {
|
|
|
|
// Skip if hidden
|
|
if ( empty( $type['show_ui'] ) ) {
|
|
continue;
|
|
}
|
|
|
|
// Add to return array
|
|
$retval[ $type_id ] = ! empty( $type['labels']['plural'] )
|
|
? $type['labels']['plural']
|
|
: ucwords( $type_id );
|
|
}
|
|
|
|
// Filter & return
|
|
return (array) apply_filters( 'edd_get_order_pages', $retval );
|
|
}
|
|
|
|
/**
|
|
* Get the payment view
|
|
*
|
|
* @since 3.0
|
|
*
|
|
* @return string
|
|
*/
|
|
function edd_get_payment_view() {
|
|
return ! empty( $_GET['view'] ) // WPCS: CSRF ok.
|
|
? sanitize_key( $_GET['view'] ) // WPCS: CSRF ok.
|
|
: 'list';
|
|
}
|
|
|
|
/**
|
|
* Render one of the Order pages.
|
|
*
|
|
* @since 1.0
|
|
* @since 3.0 Nomenclature updated for consistency.
|
|
* Add a link to manually add orders.
|
|
* Changed to switch statement.
|
|
*/
|
|
function edd_payment_history_page() {
|
|
|
|
// What are we viewing?
|
|
switch ( edd_get_payment_view() ) {
|
|
|
|
// View Order
|
|
case 'view-order-details' :
|
|
require_once EDD_PLUGIN_DIR . 'includes/admin/payments/view-order-details.php';
|
|
break;
|
|
|
|
// Add Order
|
|
case 'add-order' :
|
|
require_once EDD_PLUGIN_DIR . 'includes/admin/payments/add-order.php';
|
|
edd_add_order_page_content();
|
|
break;
|
|
|
|
// View Refund
|
|
case 'view-refund-details' :
|
|
require_once EDD_PLUGIN_DIR . 'includes/admin/payments/view-refund.php';
|
|
edd_view_refund_page_content();
|
|
break;
|
|
|
|
// List Table
|
|
case 'list' :
|
|
default :
|
|
edd_order_list_table_content();
|
|
break;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Output the list table used to list out all orders.
|
|
*
|
|
* @since 3.0
|
|
*/
|
|
function edd_order_list_table_content() {
|
|
require_once EDD_PLUGIN_DIR . 'includes/admin/payments/class-payments-table.php';
|
|
$orders_table = new EDD_Payment_History_Table();
|
|
$orders_table->prepare_items();
|
|
|
|
$active_tab = sanitize_key( $orders_table->get_request_var( 'order_type', 'sale' ) );
|
|
$admin_url = edd_get_admin_url( array( 'page' => 'edd-payment-history' ) ); ?>
|
|
|
|
<div class="wrap">
|
|
<h1 class="wp-heading-inline"><?php esc_html_e( 'Orders', 'easy-digital-downloads' ); ?></h1>
|
|
<?php
|
|
if ( 'sale' === $active_tab ) {
|
|
$add_new_url = add_query_arg( array( 'view' => 'add-order' ), $admin_url );
|
|
printf(
|
|
'<a href="%s" class="page-title-action">%s</a>',
|
|
esc_url( $add_new_url ),
|
|
esc_html__( 'Add New', 'easy-digital-downloads' )
|
|
);
|
|
}
|
|
?>
|
|
<hr class="wp-header-end">
|
|
|
|
<?php edd_orders_page_primary_nav( $active_tab ); ?>
|
|
|
|
<?php do_action( 'edd_payments_page_top' ); ?>
|
|
|
|
<form id="edd-payments-filter" method="get" action="<?php echo esc_url( $admin_url ); ?>">
|
|
<input type="hidden" name="post_type" value="download" />
|
|
<input type="hidden" name="page" value="edd-payment-history" />
|
|
<input type="hidden" name="order_type" value="<?php echo esc_attr( $active_tab ); ?>" />
|
|
<?php
|
|
$orders_table->views();
|
|
$orders_table->advanced_filters();
|
|
$orders_table->display();
|
|
?>
|
|
</form>
|
|
|
|
<?php do_action( 'edd_payments_page_bottom' ); ?>
|
|
</div>
|
|
|
|
<?php
|
|
}
|
|
|
|
/**
|
|
* Orders admin titles.
|
|
*
|
|
* @since 1.6
|
|
* @since 3.0 Updated to use new nomenclature.
|
|
*
|
|
* @param string $admin_title
|
|
* @param string $title
|
|
*
|
|
* @return string Updated admin title.
|
|
*/
|
|
function edd_view_order_details_title( $admin_title, $title ) {
|
|
|
|
// Bail if we aren't on the Orders page.
|
|
if ( 'download_page_edd-payment-history' !== get_current_screen()->base ) {
|
|
return $admin_title;
|
|
}
|
|
|
|
// Get the view
|
|
$view = edd_get_payment_view();
|
|
|
|
// Which view?
|
|
switch ( $view ) {
|
|
|
|
// Edit/View
|
|
case 'view-order-details':
|
|
case 'edit-payment':
|
|
$title = __( 'Edit Order', 'easy-digital-downloads' ) . ' — ' . $admin_title;
|
|
break;
|
|
|
|
// Add
|
|
case 'add-order':
|
|
$title = __( 'Add New Order', 'easy-digital-downloads' ) . ' — ' . $admin_title;
|
|
break;
|
|
|
|
// List
|
|
case 'list' :
|
|
default:
|
|
$title = $admin_title;
|
|
break;
|
|
}
|
|
|
|
return $title;
|
|
}
|
|
add_filter( 'admin_title', 'edd_view_order_details_title', 10, 2 );
|