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