273 lines
		
	
	
		
			6.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			273 lines
		
	
	
		
			6.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
/**
 | 
						|
 * Admin Actions
 | 
						|
 *
 | 
						|
 * @package     EDD
 | 
						|
 * @subpackage  Admin/Actions
 | 
						|
 * @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;
 | 
						|
 | 
						|
/**
 | 
						|
 * Processes all EDD actions sent via POST and GET by looking for the 'edd-action'
 | 
						|
 * request and running do_action() to call the function
 | 
						|
 *
 | 
						|
 * @since 1.0
 | 
						|
 * @return void
 | 
						|
 */
 | 
						|
function edd_process_actions() {
 | 
						|
	if ( isset( $_POST['edd-action'] ) ) {
 | 
						|
		do_action( 'edd_' . $_POST['edd-action'], $_POST );
 | 
						|
	}
 | 
						|
 | 
						|
	if ( isset( $_GET['edd-action'] ) ) {
 | 
						|
		do_action( 'edd_' . $_GET['edd-action'], $_GET );
 | 
						|
	}
 | 
						|
}
 | 
						|
add_action( 'admin_init', 'edd_process_actions' );
 | 
						|
 | 
						|
/**
 | 
						|
 * When the Download list table loads, call the function to view our tabs.
 | 
						|
 *
 | 
						|
 * @since 2.8.9
 | 
						|
 * @since 2.11.3 Unhooked this to revert to standard admin H1 tags.
 | 
						|
 * @since 3.0    Added back as download categories/tags have been removed from the admin menu.
 | 
						|
 * @param $views
 | 
						|
 *
 | 
						|
 * @return mixed
 | 
						|
 */
 | 
						|
function edd_products_tabs( $views ) {
 | 
						|
	edd_display_product_tabs();
 | 
						|
 | 
						|
	return $views;
 | 
						|
}
 | 
						|
add_filter( 'views_edit-download', 'edd_products_tabs', 10, 1 );
 | 
						|
 | 
						|
/**
 | 
						|
 * When the Download list table loads, call the function to view our tabs.
 | 
						|
 *
 | 
						|
 * @since 3.0
 | 
						|
 *
 | 
						|
 * @return void
 | 
						|
 */
 | 
						|
function edd_taxonomies_tabs() {
 | 
						|
 | 
						|
	// Bail if not viewing a taxonomy
 | 
						|
	if ( empty( $_GET['taxonomy'] ) ) {
 | 
						|
		return;
 | 
						|
	}
 | 
						|
 | 
						|
	// Get taxonomies
 | 
						|
	$taxonomy   = sanitize_key( $_GET['taxonomy'] );
 | 
						|
	$taxonomies = get_object_taxonomies( 'download' );
 | 
						|
 | 
						|
	// Bail if current taxonomy is not a download taxonomy
 | 
						|
	if ( ! in_array( $taxonomy, $taxonomies, true ) ) {
 | 
						|
		return;
 | 
						|
	}
 | 
						|
 | 
						|
	// Output the tabs
 | 
						|
	edd_display_product_tabs();
 | 
						|
}
 | 
						|
add_action( 'admin_notices', 'edd_taxonomies_tabs', 10, 1 );
 | 
						|
 | 
						|
/**
 | 
						|
 * Remove the top level taxonomy submenus.
 | 
						|
 *
 | 
						|
 * Since 3.0, these links were moved to horizontal tabs.
 | 
						|
 *
 | 
						|
 * @since 3.0
 | 
						|
 */
 | 
						|
function edd_admin_adjust_submenus() {
 | 
						|
 | 
						|
	// Get taxonomies
 | 
						|
	$taxonomies = get_object_taxonomies( 'download' );
 | 
						|
 | 
						|
	// Bail if no taxonomies
 | 
						|
	if ( empty( $taxonomies ) ) {
 | 
						|
		return;
 | 
						|
	}
 | 
						|
 | 
						|
	// Loop through each taxonomy and remove the menu
 | 
						|
	foreach ( $taxonomies as $taxonomy ) {
 | 
						|
		remove_submenu_page( 'edit.php?post_type=download', 'edit-tags.php?taxonomy=' . $taxonomy . '&post_type=download' );
 | 
						|
	}
 | 
						|
}
 | 
						|
add_action( 'admin_menu', 'edd_admin_adjust_submenus', 999 );
 | 
						|
 | 
						|
/**
 | 
						|
 * This tells WordPress to highlight the Downloads > Downloads submenu,
 | 
						|
 * regardless of which actual Downloads Taxonomy screen we are on.
 | 
						|
 *
 | 
						|
 * The conditional prevents the override when the user is viewing settings or
 | 
						|
 * any third-party plugins.
 | 
						|
 *
 | 
						|
 * @since 3.0.0
 | 
						|
 *
 | 
						|
 * @global string $submenu_file
 | 
						|
 */
 | 
						|
function edd_taxonomies_modify_menu_highlight() {
 | 
						|
	global $submenu_file;
 | 
						|
 | 
						|
	// Bail if not viewing a taxonomy
 | 
						|
	if ( empty( $_GET['taxonomy'] ) ) {
 | 
						|
		return;
 | 
						|
	}
 | 
						|
 | 
						|
	// Get taxonomies
 | 
						|
	$taxonomy   = sanitize_key( $_GET['taxonomy'] );
 | 
						|
	$taxonomies = get_object_taxonomies( 'download' );
 | 
						|
 | 
						|
	// Bail if current taxonomy is not a download taxonomy
 | 
						|
	if ( ! in_array( $taxonomy, $taxonomies, true ) ) {
 | 
						|
		return;
 | 
						|
	}
 | 
						|
 | 
						|
	// Force the submenu file
 | 
						|
	$submenu_file = 'edit.php?post_type=download';
 | 
						|
}
 | 
						|
add_filter( 'admin_head', 'edd_taxonomies_modify_menu_highlight', 9999 );
 | 
						|
 | 
						|
/**
 | 
						|
 * This tells WordPress to highlight the Downloads > Downloads submenu when
 | 
						|
 * adding a new product.
 | 
						|
 *
 | 
						|
 * @since 3.0.0
 | 
						|
 *
 | 
						|
 * @global string $submenu_file
 | 
						|
 */
 | 
						|
function edd_add_new_modify_menu_highlight() {
 | 
						|
	global $submenu_file, $pagenow;
 | 
						|
 | 
						|
	// Bail if not viewing the right page or post type
 | 
						|
	if ( empty( $_GET['post_type'] ) || ( 'post-new.php' !== $pagenow ) ) {
 | 
						|
		return;
 | 
						|
	}
 | 
						|
 | 
						|
	// Get post_type
 | 
						|
	$post_type = sanitize_key( $_GET['post_type'] );
 | 
						|
 | 
						|
	// Bail if current post type is not download
 | 
						|
	if ( 'download' !== $post_type ) {
 | 
						|
		return;
 | 
						|
	}
 | 
						|
 | 
						|
	// Force the submenu file
 | 
						|
	$submenu_file = 'edit.php?post_type=download';
 | 
						|
}
 | 
						|
add_filter( 'admin_head', 'edd_add_new_modify_menu_highlight', 9999 );
 | 
						|
 | 
						|
/**
 | 
						|
 * Displays the product tabs for Products, Categories, and Tags
 | 
						|
 *
 | 
						|
 * @since 2.8.9
 | 
						|
 */
 | 
						|
function edd_display_product_tabs() {
 | 
						|
 | 
						|
	// Initial tabs
 | 
						|
	$tabs = array(
 | 
						|
		'products' => array(
 | 
						|
			'name' => edd_get_label_plural(),
 | 
						|
			'url'  => edd_get_admin_url(),
 | 
						|
		),
 | 
						|
	);
 | 
						|
 | 
						|
	// Get taxonomies
 | 
						|
	$taxonomies = get_object_taxonomies( 'download', 'objects' );
 | 
						|
	foreach ( $taxonomies as $tax => $details ) {
 | 
						|
		$tabs[ $tax ] = array(
 | 
						|
			'name' => $details->labels->menu_name,
 | 
						|
			'url'  => add_query_arg( array(
 | 
						|
				'taxonomy'  => sanitize_key( $tax ),
 | 
						|
				'post_type' => 'download'
 | 
						|
			), admin_url( 'edit-tags.php' ) )
 | 
						|
		);
 | 
						|
	}
 | 
						|
 | 
						|
	// Filter the tabs
 | 
						|
	$tabs = apply_filters( 'edd_add_ons_tabs', $tabs );
 | 
						|
 | 
						|
	// Taxonomies
 | 
						|
	if ( isset( $_GET['taxonomy'] ) && in_array( $_GET['taxonomy'], array_keys( $taxonomies ), true ) ) {
 | 
						|
		$active_tab = $_GET['taxonomy'];
 | 
						|
 | 
						|
	// Default to Products
 | 
						|
	} else {
 | 
						|
		$active_tab = 'products';
 | 
						|
	}
 | 
						|
 | 
						|
	// Start a buffer
 | 
						|
	ob_start();
 | 
						|
	?>
 | 
						|
 | 
						|
	<nav class="nav-tab-wrapper wp-clearfix" aria-label="<?php esc_attr_e( 'Secondary menu', 'easy-digital-downloads' ); ?>">
 | 
						|
		<?php
 | 
						|
 | 
						|
		foreach ( $tabs as $tab_id => $tab ) {
 | 
						|
			$class = 'nav-tab';
 | 
						|
			if ( $active_tab === $tab_id ) {
 | 
						|
				$class .= ' nav-tab-active';
 | 
						|
			}
 | 
						|
			printf(
 | 
						|
				'<a href="%s" class="%s">%s</a>',
 | 
						|
				esc_url( $tab['url'] ),
 | 
						|
				esc_attr( $class ),
 | 
						|
				esc_html( $tab['name'] )
 | 
						|
			);
 | 
						|
		} ?>
 | 
						|
 | 
						|
	</nav>
 | 
						|
	<br />
 | 
						|
 | 
						|
	<?php
 | 
						|
 | 
						|
	// Output the current buffer
 | 
						|
	echo ob_get_clean();
 | 
						|
}
 | 
						|
 | 
						|
/**
 | 
						|
 * Return array of query arguments that should be removed from URLs.
 | 
						|
 *
 | 
						|
 * @since 3.0
 | 
						|
 *
 | 
						|
 * @return array
 | 
						|
 */
 | 
						|
function edd_admin_removable_query_args() {
 | 
						|
	return apply_filters( 'edd_admin_removable_query_args', array(
 | 
						|
		'edd-action',
 | 
						|
		'edd-notice',
 | 
						|
		'edd-message',
 | 
						|
		'edd-redirect'
 | 
						|
	) );
 | 
						|
}
 | 
						|
 | 
						|
/**
 | 
						|
 * Output payment icons into the admin footer.
 | 
						|
 *
 | 
						|
 * Specifically on the "General" tab of the "Payment Gateways" admin page.
 | 
						|
 *
 | 
						|
 * @since 3.0
 | 
						|
 */
 | 
						|
function edd_admin_print_payment_icons() {
 | 
						|
 | 
						|
	// Bail if not the gateways page
 | 
						|
	if ( ! edd_is_admin_page( 'settings', 'gateways' ) ) {
 | 
						|
		return;
 | 
						|
	}
 | 
						|
 | 
						|
	// Output the SVG icons
 | 
						|
	edd_print_payment_icons( array(
 | 
						|
		'mastercard',
 | 
						|
		'visa',
 | 
						|
		'americanexpress',
 | 
						|
		'discover',
 | 
						|
		'paypal',
 | 
						|
		'amazon'
 | 
						|
	) );
 | 
						|
}
 | 
						|
add_action( 'admin_footer', 'edd_admin_print_payment_icons', 9999 );
 |