LLMS_Meta_Box_Order_Details::save_remaining_payments( LLMS_Order $order )
Save remaining payment date for expiring recurring orders
Parameters Parameters
- $order
-
(LLMS_Order) (Required) Order object
Return Return
(int) Returns -1 when there's for invalid order types, 0 when there's no changes to save, and 1 when remaining payment data is updated.
Source Source
File: includes/admin/post-types/meta-boxes/class.llms.meta.box.order.details.php
protected function save_remaining_payments( $order ) {
// If it's not a payment plan or cannot modify recurring payment, don't proceed.
if ( ! $order->has_plan_expiration() || ! $order->supports_modify_recurring_payments() ) {
return -1;
}
$payments = (int) llms_filter_input( INPUT_POST, '_llms_remaining_payments', FILTER_SANITIZE_NUMBER_INT );
$remaining = $order->get_remaining_payments();
// Nothing to save.
if ( $payments < 1 || $payments === $remaining ) {
return 0;
}
// Determine how to adjust the billing length.
$adjustment = $payments - $remaining;
$original = $order->get( 'billing_length' );
$new_length = max( $order->get( 'billing_length' ) + $adjustment, 1 );
$period = $order->get( 'billing_period' );
// Update the payment plan.
$order->set( 'billing_length', $new_length );
// Record that the payment plan has been modified.
$order->add_note(
sprintf(
// Translators: %1$d is the original billing length; %2$s is the billing period (adjusted for pluralization against the original billing length); %3$d is the new billing length; %4$s is the billing period (adjusted for pluralization against the new billing length).
__( 'The billing length of the order has been modified from %1$d %2$s to %3$d %4$s.', 'lifterlms' ),
$original,
llms_get_time_period_l10n( $period, $original ),
$new_length,
llms_get_time_period_l10n( $period, $new_length )
)
);
// Store a use note if one was entered.
$note = llms_filter_input_sanitize_string( INPUT_POST, '_llms_remaining_note' );
if ( $note ) {
$order->add_note( wp_strip_all_tags( $note ), true );
}
// Restart scheduled payments.
if ( ! $order->has_scheduled_payment() ) {
$order->maybe_schedule_payment();
}
return 1;
}
Expand full source code Collapse full source code View on GitHub
Changelog Changelog
| Version | Description |
|---|---|
| 7.0.0 | Return -1 if the recurring payment cannot be modified (the gateway doesn't support this feature). |
| 5.9.0 | Stop using deprecated FILTER_SANITIZE_STRING. |
| 5.3.0 | Introduced. |