186 lines
		
	
	
		
			5.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			186 lines
		
	
	
		
			5.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
/**
 | 
						|
 * Customers - Admin Functions.
 | 
						|
 *
 | 
						|
 * @package     EDD
 | 
						|
 * @subpackage  Admin/Customers
 | 
						|
 * @copyright   Copyright (c) 2018, Easy Digital Downloads, LLC
 | 
						|
 * @license     http://opensource.org/licenses/gpl-2.0.php GNU Public License
 | 
						|
 * @since       2.3
 | 
						|
 */
 | 
						|
 | 
						|
// Exit if accessed directly
 | 
						|
defined( 'ABSPATH' ) || exit;
 | 
						|
 | 
						|
/**
 | 
						|
 * Register a view for the single customer view
 | 
						|
 *
 | 
						|
 * @since  2.3
 | 
						|
 * @param  array $views An array of existing views
 | 
						|
 * @return array        The altered list of views
 | 
						|
 */
 | 
						|
function edd_register_default_customer_views( $views ) {
 | 
						|
	return array_merge( $views, array(
 | 
						|
		'overview'  => 'edd_customers_view',
 | 
						|
		'emails'    => 'edd_customers_emails_view',
 | 
						|
		'addresses' => 'edd_customers_addresses_view',
 | 
						|
		'delete'    => 'edd_customers_delete_view',
 | 
						|
		'notes'     => 'edd_customer_notes_view',
 | 
						|
		'tools'     => 'edd_customer_tools_view',
 | 
						|
	) );
 | 
						|
}
 | 
						|
add_filter( 'edd_customer_views', 'edd_register_default_customer_views', 1, 1 );
 | 
						|
 | 
						|
/**
 | 
						|
 * Register a tab for the single customer view
 | 
						|
 *
 | 
						|
 * @since  2.3
 | 
						|
 * @param  array $tabs An array of existing tabs
 | 
						|
 * @return array       The altered list of tabs
 | 
						|
 */
 | 
						|
function edd_register_default_customer_tabs( $tabs ) {
 | 
						|
	return array_merge( $tabs, array(
 | 
						|
		'overview'  => array( 'dashicon' => 'dashicons-admin-users',    'title' => _x( 'Profile', 'Customer Details tab title', 'easy-digital-downloads' ) ),
 | 
						|
		'emails'    => array( 'dashicon' => 'dashicons-email', 'title' => _x( 'Emails', 'Customer Emails tab title', 'easy-digital-downloads' ) ),
 | 
						|
		'addresses' => array( 'dashicon' => 'dashicons-admin-home', 'title' => _x( 'Addresses', 'Customer Addresses tab title', 'easy-digital-downloads' ) ),
 | 
						|
		'notes'     => array( 'dashicon' => 'dashicons-admin-comments', 'title' => _x( 'Notes',   'Customer Notes tab title',   'easy-digital-downloads' ) ),
 | 
						|
		'tools'     => array( 'dashicon' => 'dashicons-admin-tools',    'title' => _x( 'Tools',   'Customer Tools tab title',   'easy-digital-downloads' ) )
 | 
						|
	) );
 | 
						|
}
 | 
						|
add_filter( 'edd_customer_tabs', 'edd_register_default_customer_tabs', 1, 1 );
 | 
						|
 | 
						|
/**
 | 
						|
 * Register the Delete icon as late as possible so it's at the bottom
 | 
						|
 *
 | 
						|
 * @since  2.3.1
 | 
						|
 * @param  array $tabs An array of existing tabs
 | 
						|
 * @return array       The altered list of tabs, with 'delete' at the bottom
 | 
						|
 */
 | 
						|
function edd_register_delete_customer_tab( $tabs ) {
 | 
						|
 | 
						|
	$tabs['delete'] = array(
 | 
						|
		'dashicon' => 'dashicons-trash',
 | 
						|
		'title'    => _x( 'Delete', 'Delete Customer tab title', 'easy-digital-downloads' )
 | 
						|
	);
 | 
						|
 | 
						|
	return $tabs;
 | 
						|
}
 | 
						|
add_filter( 'edd_customer_tabs', 'edd_register_delete_customer_tab', PHP_INT_MAX, 1 );
 | 
						|
 | 
						|
/**
 | 
						|
 * Remove the admin bar edit profile link when the user is not verified
 | 
						|
 *
 | 
						|
 * @since  2.4.4
 | 
						|
 * @return void
 | 
						|
 */
 | 
						|
function edd_maybe_remove_adminbar_profile_link() {
 | 
						|
 | 
						|
	if ( current_user_can( 'manage_shop_settings' ) ) {
 | 
						|
		return;
 | 
						|
	}
 | 
						|
 | 
						|
	if ( edd_user_pending_verification() ) {
 | 
						|
		global $wp_admin_bar;
 | 
						|
		$wp_admin_bar->remove_menu( 'edit-profile', 'user-actions' );
 | 
						|
	}
 | 
						|
}
 | 
						|
add_action( 'wp_before_admin_bar_render', 'edd_maybe_remove_adminbar_profile_link' );
 | 
						|
 | 
						|
/**
 | 
						|
 * Remove the admin menus and disable profile access for non-verified users
 | 
						|
 *
 | 
						|
 * @since  2.4.4
 | 
						|
 * @return void
 | 
						|
 */
 | 
						|
function edd_maybe_remove_menu_profile_links() {
 | 
						|
 | 
						|
	if ( edd_doing_ajax() ) {
 | 
						|
		return;
 | 
						|
	}
 | 
						|
 | 
						|
	if ( current_user_can( 'manage_shop_settings' ) ) {
 | 
						|
		return;
 | 
						|
	}
 | 
						|
 | 
						|
	if ( edd_user_pending_verification() ) {
 | 
						|
 | 
						|
		if( defined( 'IS_PROFILE_PAGE' ) && true === IS_PROFILE_PAGE ) {
 | 
						|
			$url     = esc_url( edd_get_user_verification_request_url() );
 | 
						|
			$message = sprintf( __( 'Your account is pending verification. Please click the link in your email to activate your account. No email? <a href="%s">Click here</a> to send a new activation code.', 'easy-digital-downloads' ), esc_url( $url ) );
 | 
						|
			$title   = __( 'Account Pending Verification', 'easy-digital-downloads' );
 | 
						|
			$args    = array(
 | 
						|
				'response' => 403,
 | 
						|
			);
 | 
						|
			wp_die( $message, $title, $args );
 | 
						|
		}
 | 
						|
 | 
						|
		remove_menu_page( 'profile.php' );
 | 
						|
		remove_submenu_page( 'users.php', 'profile.php' );
 | 
						|
	}
 | 
						|
}
 | 
						|
add_action( 'admin_init', 'edd_maybe_remove_menu_profile_links' );
 | 
						|
 | 
						|
/**
 | 
						|
 * Add Customer column to Users list table.
 | 
						|
 *
 | 
						|
 * @since 3.0
 | 
						|
 *
 | 
						|
 * @param array $columns Existing columns.
 | 
						|
 *
 | 
						|
 * @return array $columns Columns with `Customer` added.
 | 
						|
 */
 | 
						|
function edd_add_customer_column_to_users_table( $columns ) {
 | 
						|
	$columns['edd_customer'] = __( 'Customer', 'easy-digital-downloads' );
 | 
						|
	return $columns;
 | 
						|
}
 | 
						|
add_filter( 'manage_users_columns', 'edd_add_customer_column_to_users_table' );
 | 
						|
 | 
						|
/**
 | 
						|
 * Display customer details on Users list table.
 | 
						|
 *
 | 
						|
 * @since 3.0
 | 
						|
 *
 | 
						|
 * @param string $value       Existing value of the custom column.
 | 
						|
 * @param string $column_name Column name.
 | 
						|
 * @param int    $user_id     User ID.
 | 
						|
 *
 | 
						|
 * @return string URL to Customer page, existing value otherwise.
 | 
						|
 */
 | 
						|
function edd_render_customer_column( $value, $column_name, $user_id ) {
 | 
						|
	if ( 'edd_customer' === $column_name ) {
 | 
						|
		$customer = new EDD_Customer( $user_id, true );
 | 
						|
 | 
						|
		if ( $customer->id > 0 ) {
 | 
						|
			$name     = '#' . $customer->id . ' ';
 | 
						|
			$name    .= ! empty( $customer->name ) ? $customer->name : '<em>' . __( 'Unnamed Customer', 'easy-digital-downloads' ) . '</em>';
 | 
						|
			$view_url = edd_get_admin_url(
 | 
						|
				array(
 | 
						|
					'page' => 'edd-customers',
 | 
						|
					'view' => 'overview',
 | 
						|
					'id'   => absint( $customer->id ),
 | 
						|
				)
 | 
						|
			);
 | 
						|
 | 
						|
			return '<a href="' . esc_url( $view_url ) . '">' . $name . '</a>';
 | 
						|
		}
 | 
						|
	}
 | 
						|
 | 
						|
	return $value;
 | 
						|
}
 | 
						|
add_action( 'manage_users_custom_column',  'edd_render_customer_column', 10, 3 );
 | 
						|
 | 
						|
/**
 | 
						|
 * Renders the customer details header (gravatar/name).
 | 
						|
 *
 | 
						|
 * @since 3.0
 | 
						|
 * @param \EDD_Customer $customer
 | 
						|
 * @return void
 | 
						|
 */
 | 
						|
function edd_render_customer_details_header( \EDD_Customer $customer ) {
 | 
						|
	?>
 | 
						|
	<div class="edd-item-header-small">
 | 
						|
		<?php echo get_avatar( $customer->email, 30 ); ?> <span><?php echo esc_html( $customer->name ); ?></span>
 | 
						|
	</div>
 | 
						|
	<?php
 | 
						|
}
 |