160 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			160 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| /**
 | |
|  * Gateways Reports Table Class
 | |
|  *
 | |
|  * @package     EDD
 | |
|  * @subpackage  Admin/Reports
 | |
|  * @copyright   Copyright (c) 2018, Easy Digital Downloads, LLC
 | |
|  * @license     http://opensource.org/licenses/gpl-2.0.php GNU Public License
 | |
|  * @since       1.5
 | |
|  */
 | |
| 
 | |
| // Exit if accessed directly
 | |
| defined( 'ABSPATH' ) || exit;
 | |
| 
 | |
| use EDD\Admin\List_Table;
 | |
| 
 | |
| /**
 | |
|  * EDD_Gateway_Reports_Table Class
 | |
|  *
 | |
|  * Renders the Download Reports table
 | |
|  *
 | |
|  * @since 1.5
 | |
|  */
 | |
| class EDD_Gateway_Reports_Table extends List_Table {
 | |
| 
 | |
| 	/**
 | |
| 	 * Get things started
 | |
| 	 *
 | |
| 	 * @since 1.5
 | |
| 	 * @see WP_List_Table::__construct()
 | |
| 	 */
 | |
| 	public function __construct() {
 | |
| 		parent::__construct( array(
 | |
| 			'singular' => 'report-gateway',
 | |
| 			'plural'   => 'report-gateways',
 | |
| 			'ajax'     => false
 | |
| 		) );
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Gets the name of the primary column.
 | |
| 	 *
 | |
| 	 * @since 2.5
 | |
| 	 * @access protected
 | |
| 	 *
 | |
| 	 * @return string Name of the primary column.
 | |
| 	 */
 | |
| 	protected function get_primary_column_name() {
 | |
| 		return 'label';
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * This function renders most of the columns in the list table.
 | |
| 	 *
 | |
| 	 * @since 1.5
 | |
| 	 *
 | |
| 	 * @param array $item Contains all the data of the downloads
 | |
| 	 * @param string $column_name The name of the column
 | |
| 	 *
 | |
| 	 * @return string Column Name
 | |
| 	 */
 | |
| 	public function column_default( $item, $column_name ) {
 | |
| 		return $item[ $column_name ];
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Retrieve the table columns
 | |
| 	 *
 | |
| 	 * @since 1.5
 | |
| 	 * @return array $columns Array of all the list table columns
 | |
| 	 */
 | |
| 	public function get_columns() {
 | |
| 		return array(
 | |
| 			'label'          => __( 'Gateway',                'easy-digital-downloads' ),
 | |
| 			'complete_sales' => __( 'Complete Sales',         'easy-digital-downloads' ),
 | |
| 			'pending_sales'  => __( 'Pending / Failed Sales', 'easy-digital-downloads' ),
 | |
| 			'total_sales'    => __( 'Total Sales',            'easy-digital-downloads' )
 | |
| 		);
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Outputs the reporting views
 | |
| 	 *
 | |
| 	 * @since 1.5
 | |
| 	 * @return void
 | |
| 	 */
 | |
| 	public function bulk_actions( $which = '' ) {
 | |
| 		// These aren't really bulk actions but this outputs the markup in
 | |
| 		// the right place.
 | |
| 		edd_report_views();
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Builds and retrieves all of the payment gateways reports data.
 | |
| 	 *
 | |
| 	 * @since 1.5
 | |
| 	 * @deprecated 3.0 Use get_data()
 | |
| 	 *
 | |
| 	 * @return array All the data for customer reports.
 | |
| 	 */
 | |
| 	public function reports_data() {
 | |
| 		_edd_deprecated_function( __METHOD__, '3.0', 'EDD_Gateway_Reports_Table::get_data()' );
 | |
| 
 | |
| 		return $this->get_data();
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Retrieves all of the payment gateways reports data.
 | |
| 	 *
 | |
| 	 * @since 3.0
 | |
| 	 *
 | |
| 	 * @return array Payment gateways reports table data.
 | |
| 	 */
 | |
| 	public function get_data() {
 | |
| 
 | |
| 		$reports_data = array();
 | |
| 		$gateways     = edd_get_payment_gateways();
 | |
| 
 | |
| 		foreach ( $gateways as $gateway_id => $gateway ) {
 | |
| 
 | |
| 			$complete_count = edd_count_sales_by_gateway( $gateway_id, edd_get_gross_order_statuses() );
 | |
| 			$pending_count  = edd_count_sales_by_gateway( $gateway_id, edd_get_incomplete_order_statuses() );
 | |
| 
 | |
| 			$reports_data[] = array(
 | |
| 				'ID'             => $gateway_id,
 | |
| 				'label'          => $gateway['admin_label'],
 | |
| 				'complete_sales' => edd_format_amount( $complete_count, false ),
 | |
| 				'pending_sales'  => edd_format_amount( $pending_count,  false ),
 | |
| 				'total_sales'    => edd_format_amount( $complete_count + $pending_count, false ),
 | |
| 			);
 | |
| 		}
 | |
| 
 | |
| 		return $reports_data;
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Setup the final data for the table
 | |
| 	 *
 | |
| 	 * @since 1.5
 | |
| 	 * @uses EDD_Gateway_Reports_Table::get_columns()
 | |
| 	 * @uses EDD_Gateway_Reports_Table::get_sortable_columns()
 | |
| 	 * @uses EDD_Gateway_Reports_Table::reports_data()
 | |
| 	 * @return void
 | |
| 	 */
 | |
| 	public function prepare_items() {
 | |
| 		$columns               = $this->get_columns();
 | |
| 		$hidden                = array(); // No hidden columns
 | |
| 		$sortable              = $this->get_sortable_columns();
 | |
| 		$this->_column_headers = array( $columns, $hidden, $sortable );
 | |
| 		$this->items           = $this->get_data();
 | |
| 	}
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * Back-compat for typo
 | |
|  *
 | |
|  * @see https://github.com/easydigitaldownloads/easy-digital-downloads/issues/6549
 | |
|  */
 | |
| class_alias( 'EDD_Gateway_Reports_Table', 'EDD_Gateawy_Reports_Table' );
 |