57 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			57 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
/**
 | 
						|
 * Order Transition 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
 | 
						|
 */
 | 
						|
 | 
						|
/**
 | 
						|
 * Record order status change
 | 
						|
 *
 | 
						|
 * @since 3.0
 | 
						|
 * @param string $old_status the status of the order prior to this change.
 | 
						|
 * @param string $new_status The new order status.
 | 
						|
 * @param int    $order_id the ID number of the order.
 | 
						|
 * @return void
 | 
						|
 */
 | 
						|
function edd_record_order_status_change( $old_status, $new_status, $order_id ) {
 | 
						|
 | 
						|
	// Get the list of statuses so that status in the payment note can be translated.
 | 
						|
	$stati      = edd_get_payment_statuses();
 | 
						|
	$old_status = isset( $stati[ $old_status ] ) ? $stati[ $old_status ] : $old_status;
 | 
						|
	$new_status = isset( $stati[ $new_status ] ) ? $stati[ $new_status ] : $new_status;
 | 
						|
 | 
						|
	$status_change = sprintf(
 | 
						|
		/* translators: %1$s Old order status. %2$s New order status. */
 | 
						|
		__( 'Status changed from %1$s to %2$s', 'easy-digital-downloads' ),
 | 
						|
		$old_status,
 | 
						|
		$new_status
 | 
						|
	);
 | 
						|
 | 
						|
	edd_insert_payment_note( $order_id, $status_change );
 | 
						|
}
 | 
						|
add_action( 'edd_transition_order_status', 'edd_record_order_status_change', 100, 3 );
 | 
						|
 | 
						|
/**
 | 
						|
 * Triggers `edd_update_payment_status` hook when an order status changes
 | 
						|
 * for backwards compatibility.
 | 
						|
 *
 | 
						|
 * @since 3.0
 | 
						|
 * @param string $old_status the status of the order prior to this change.
 | 
						|
 * @param string $new_status The new order status.
 | 
						|
 * @param int    $order_id the ID number of the order.
 | 
						|
 * @return void
 | 
						|
 */
 | 
						|
add_action( 'edd_transition_order_status', function( $old_status, $new_status, $order_id ) {
 | 
						|
	// Trigger the payment status action hook for backwards compatibility.
 | 
						|
	do_action( 'edd_update_payment_status', $order_id, $new_status, $old_status );
 | 
						|
	if ( 'complete' === $old_status ) {
 | 
						|
		// Trigger the action again to account for add-ons listening for status changes from "publish".
 | 
						|
		do_action( 'edd_update_payment_status', $order_id, $new_status, 'publish' );
 | 
						|
	}
 | 
						|
}, 10, 3 );
 |