Automattic\WooCommerce\Internal\Admin\Orders

EditLock::get_lock()publicWC 1.0

Obtains lock information for a given order. If the lock has expired or it's assigned to an invalid user, the order is no longer considered locked.

Method of the class: EditLock{}

Hooks from the method

Return

true|false|Array.

Usage

$EditLock = new EditLock();
$EditLock->get_lock( $order );
$order(\WC_Order) (required)
Order to check.

EditLock::get_lock() code WC 9.6.0

public function get_lock( \WC_Order $order ) {
	$lock = $order->get_meta( self::META_KEY_NAME, true, 'edit' );
	if ( ! $lock ) {
		return false;
	}

	$lock = explode( ':', $lock );
	if ( 2 !== count( $lock ) ) {
		return false;
	}

	$time    = absint( $lock[0] );
	$user_id = isset( $lock[1] ) ? absint( $lock[1] ) : 0;

	if ( ! $time || ! get_user_by( 'id', $user_id ) ) {
		return false;
	}

	/** This filter is documented in WP's wp-admin/includes/ajax-actions.php */
	$time_window = apply_filters( 'wp_check_post_lock_window', 150 ); // phpcs:ignore WooCommerce.Commenting.CommentHooks.MissingSinceComment
	if ( time() >= ( $time + $time_window ) ) {
		return false;
	}

	return compact( 'time', 'user_id' );
}