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