LLMS_Order::maybe_schedule_retry()
Handles scheduling recurring payment retries when the gateway supports them
Return Return
(null|boolean) Returns null
if the order cannot be retried, false
when all retry rules have been tried (or none exist), and true
when a retry is scheduled.
Source Source
File: includes/models/model.llms.order.php
* @return void */ public function maybe_schedule_payment( $recalc = true ) { if ( ! $this->is_recurring() ) { return; } if ( $recalc ) { $this->set( 'date_next_payment', $this->calculate_next_payment_date() ); } $date = $this->get_next_payment_due_date(); // Unschedule and reschedule. if ( $date && ! is_wp_error( $date ) ) { $this->schedule_recurring_payment( $date ); } elseif ( is_wp_error( $date ) ) { if ( 'plan-ended' === $date->get_error_code() ) { // Unschedule the next action (does nothing if no action scheduled). $this->unschedule_recurring_payment(); // Add a note that the plan has completed. $this->add_note( __( 'Order payment plan completed.', 'lifterlms' ) ); $this->set( 'plan_ended', 'yes' ); } } } /** * Handles scheduling recurring payment retries when the gateway supports them * * @since 3.10.0 * @since 7.0.0 Added return value. * * @return null|boolean Returns `null` if the order cannot be retried, `false` when all retry rules have been tried (or none exist), and `true` * when a retry is scheduled. */ public function maybe_schedule_retry() { if ( ! $this->can_be_retried() ) { return null; } // Get the index of the rule to use for this retry. $current_rule_index = $this->get( 'last_retry_rule' ); if ( '' === $current_rule_index ) { $current_rule_index = 0; } else { ++$current_rule_index; } $rules = $this->get_retry_rules(); $current_rule = $rules[ $current_rule_index ] ?? false; // No rule to run. if ( ! $current_rule ) { $this->set_status( 'failed' ); $this->set( 'last_retry_rule', '' ); $this->add_note( esc_html__( 'Maximum retry attempts reached.', 'lifterlms' ) ); /** * Action triggered when there are not more recurring payment retry rules. * * @since 3.10.0 * * @param LLMS_Order $order The order object. */
Expand full source code Collapse full source code View on GitHub
Changelog Changelog
Version | Description |
---|---|
7.0.0 | Added return value. |
3.10.0 | Introduced. |