175 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			175 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| /**
 | |
|  * Order Status Functions.
 | |
|  *
 | |
|  * @package     EDD
 | |
|  * @subpackage  Orders
 | |
|  * @copyright   Copyright (c) 2022, Easy Digital Downloads
 | |
|  * @license     https://opensource.org/licenses/gpl-2.0.php GNU Public License
 | |
|  * @since       3.0
 | |
|  */
 | |
| 
 | |
| /**
 | |
|  * Get the order status array keys that can be used to run reporting related to gross reporting.
 | |
|  *
 | |
|  * @since 3.0
 | |
|  *
 | |
|  * @return array An array of order status array keys that can be related to gross reporting.
 | |
|  */
 | |
| function edd_get_gross_order_statuses() {
 | |
| 	$statuses = array(
 | |
| 		'complete',
 | |
| 		'refunded',
 | |
| 		'partially_refunded',
 | |
| 		'revoked',
 | |
| 	);
 | |
| 
 | |
| 	/**
 | |
| 	 * Statuses that affect gross order statistics.
 | |
| 	 *
 | |
| 	 * This filter allows extensions and developers to alter the statuses that can affect the reporting of gross
 | |
| 	 * sales statistics.
 | |
| 	 *
 | |
| 	 * @since 3.0
 | |
| 	 *
 | |
| 	 * @param array $statuses {
 | |
| 	 *     An array of order status array keys.
 | |
| 	 *
 | |
| 	 */
 | |
| 	return apply_filters( 'edd_gross_order_statuses', $statuses );
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * Get the order status array keys that can be used to run reporting related to net reporting.
 | |
|  *
 | |
|  * @since 3.0
 | |
|  *
 | |
|  * @return array An array of order status array keys that can be related to net reporting.
 | |
|  */
 | |
| function edd_get_net_order_statuses() {
 | |
| 	$statuses = array(
 | |
| 		'complete',
 | |
| 		'partially_refunded',
 | |
| 		'revoked',
 | |
| 	);
 | |
| 
 | |
| 	/**
 | |
| 	 * Statuses that affect net order statistics.
 | |
| 	 *
 | |
| 	 * This filter allows extensions and developers to alter the statuses that can affect the reporting of net
 | |
| 	 * sales statistics.
 | |
| 	 *
 | |
| 	 * @since 3.0
 | |
| 	 *
 | |
| 	 * @param array $statuses {
 | |
| 	 *     An array of order status array keys.
 | |
| 	 *
 | |
| 	 */
 | |
| 	return apply_filters( 'edd_net_order_statuses', $statuses );
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * Get the order status array keys which are considered recoverable.
 | |
|  *
 | |
|  * @since 3.0
 | |
|  * @param bool $include_labels Whether to return a multidimensional array including status labels.
 | |
|  * @return array An array of order status keys which are considered recoverable.
 | |
|  */
 | |
| function edd_recoverable_order_statuses( $include_labels = false ) {
 | |
| 	$statuses = array( 'pending', 'abandoned', 'failed' );
 | |
| 
 | |
| 	/**
 | |
| 	 * Order statuses which are considered recoverable.
 | |
| 	 *
 | |
| 	 * @param $statuses {
 | |
| 	 *        An array of order status array keys.
 | |
| 	 * }
 | |
| 	 */
 | |
| 	$statuses = apply_filters( 'edd_recoverable_payment_statuses', $statuses );
 | |
| 
 | |
| 	return $include_labels ? array_intersect_key( edd_get_payment_statuses(), array_flip( $statuses ) ) : $statuses;
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * Get the order status keys which are considered complete.
 | |
|  *
 | |
|  * @since 3.0
 | |
|  * @param bool $include_labels Whether to return a multidimensional array including status labels.
 | |
|  * @return array An array of order status keys which are considered completed.
 | |
|  */
 | |
| function edd_get_complete_order_statuses( $include_labels = false ) {
 | |
| 	$statuses = array( 'publish', 'complete', 'completed', 'partially_refunded', 'revoked', 'refunded' );
 | |
| 
 | |
| 	/**
 | |
| 	 * Order statuses which are considered completed or at their final state.
 | |
| 	 *
 | |
| 	 * @param $statuses {
 | |
| 	 *        An array of order status array keys.
 | |
| 	 * }
 | |
| 	 */
 | |
| 	$statuses = apply_filters( 'edd_complete_order_statuses', $statuses );
 | |
| 
 | |
| 	return $include_labels ? array_intersect_key( edd_get_payment_statuses(), array_flip( $statuses ) ) : $statuses;
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * Get the order status array keys which are considered incomplete.
 | |
|  *
 | |
|  * @since 3.0
 | |
|  * @param bool $include_labels Whether to return a multidimensional array including status labels.
 | |
|  * @return array An array of order status keys which are considered incomplete.
 | |
|  */
 | |
| function edd_get_incomplete_order_statuses( $include_labels = false ) {
 | |
| 	$statuses = array( 'pending', 'abandoned', 'processing', 'failed', 'cancelled' );
 | |
| 
 | |
| 	/**
 | |
| 	 * Filters the payment key
 | |
| 	 * Order statuses which are considered incomplete.
 | |
| 	 *
 | |
| 	 * @param $statuses {
 | |
| 	 *        An array of order status array keys.
 | |
| 	 * }
 | |
| 	 */
 | |
| 	$statuses = apply_filters( 'edd_incomplete_order_statuses', $statuses );
 | |
| 
 | |
| 	return $include_labels ? array_intersect_key( edd_get_payment_statuses(), array_flip( $statuses ) ) : $statuses;
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * Returns an array of order statuses that support refunds.
 | |
|  *
 | |
|  * @since 3.0
 | |
|  * @return array
 | |
|  */
 | |
| function edd_get_refundable_order_statuses() {
 | |
| 	$refundable_order_statuses = array( 'complete', 'publish', 'partially_refunded' );
 | |
| 
 | |
| 	/**
 | |
| 	 * Filters the order statuses that are allowed to be refunded.
 | |
| 	 *
 | |
| 	 * @param array $refundable_order_statuses
 | |
| 	 *
 | |
| 	 * @since 3.0
 | |
| 	 */
 | |
| 	return (array) apply_filters( 'edd_refundable_order_statuses', $refundable_order_statuses );
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * Returns an array of order item statuses that allow assets to be delivvered.
 | |
|  *
 | |
|  * @since 3.0
 | |
|  * @return array
 | |
|  */
 | |
| function edd_get_deliverable_order_item_statuses() {
 | |
| 	$deliverable_order_item_statuses = array( 'complete', 'partially_refunded' );
 | |
| 
 | |
| 	/**
 | |
| 	 * Filters the order item statuses that aallow assets to be delivered.
 | |
| 	 *
 | |
| 	 * @param array $refundable_order_statuses
 | |
| 	 *
 | |
| 	 * @since 3.0
 | |
| 	 */
 | |
| 	return (array) apply_filters( 'edd_deliverable_order_item_statuses', $deliverable_order_item_statuses );
 | |
| }
 |