LLMS_Controller_Orders::transition_status( string $new_status, string $old_status, WP_Post $post )

Trigger actions when the status of LifterLMS Orders and LifterLMS Transactions change status.


Parameters Parameters

$new_status

(string) (Required) New status.

$old_status

(string) (Required) Old status.

$post

(WP_Post) (Required) WP_Post instance of the transaction.


Top ↑

Return Return

(void)


Top ↑

Source Source

File: includes/controllers/class.llms.controller.orders.php

		if ( $order->is_legacy() ) {
			return;
		}

		// Update the status based on the order type.
		$status = $order->is_recurring() ? 'llms-active' : 'llms-completed';
		$order->set( 'status', $status );
		$order->set( 'last_retry_rule', '' ); // Retries should always start with tne first rule for new transactions.

		// Maybe schedule a payment.
		$order->maybe_schedule_payment();

	}

	/**
	 * Trigger actions when the status of LifterLMS Orders and LifterLMS Transactions change status.
	 *
	 * @since 3.0.0
	 * @since 3.19.0 Unknown.
	 *
	 * @param string  $new_status New status.
	 * @param string  $old_status Old status.
	 * @param WP_Post $post       WP_Post instance of the transaction.
	 * @return void
	 */
	public function transition_status( $new_status, $old_status, $post ) {

		// Don't do anything if the status hasn't changed.
		if ( $new_status === $old_status ) {
			return;
		}

		// We're only concerned with order post statuses here.
		if ( 'llms_order' !== $post->post_type && 'llms_transaction' !== $post->post_type ) {
			return;
		}

		$post_type = str_replace( 'llms_', '', $post->post_type );
		$obj       = 'order' === $post_type ? new LLMS_Order( $post ) : new LLMS_Transaction( $post );

		// Record order status changes as notes.
		if ( 'order' === $post_type ) {
			$obj->add_note( sprintf( __( 'Order status changed from %1$s to %2$s', 'lifterlms' ), llms_get_order_status_name( $old_status ), llms_get_order_status_name( $new_status ) ) );
		}

		// Remove prefixes from all the things.
		$new_status = str_replace( array( 'llms-', 'txn-' ), '', $new_status );
		$old_status = str_replace( array( 'llms-', 'txn-' ), '', $old_status );

		/**
		 * Fired when a LifterLMS order or transaction changes status.
		 *
		 * The first dynamic portion of this hook, `$post_type`, refers to the unprefixed object post type ('order|transaction').
		 * The second dynamic portion of this hook, `$old_status`, refers to the previous object status.


Top ↑

Changelog Changelog

Changelog
Version Description
3.19.0 Unknown.
3.0.0 Introduced.

Top ↑

User Contributed Notes User Contributed Notes

You must log in before being able to contribute a note or feedback.