Skip to content
This repository was archived by the owner on May 21, 2025. It is now read-only.

Commit c0447f4

Browse files
committed
Refactoring with Copilot
1 parent e84d69a commit c0447f4

File tree

3 files changed

+39
-25
lines changed

3 files changed

+39
-25
lines changed

includes/admin/class-wcs-admin-post-types.php

Lines changed: 21 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -688,18 +688,7 @@ public static function get_date_column_content( $subscription, $column ) {
688688
$date_type = array_key_exists( $column, $date_type_map ) ? $date_type_map[ $column ] : $column;
689689

690690
if ( 'last_payment_date' === $column ) {
691-
// Get last order date created from subscription metadata if it exists.
692-
$last_order_date_created = $subscription->get_last_order_date_created();
693-
694-
if ( ! empty( $last_order_date_created ) ) {
695-
$date_timestamp = $last_order_date_created;
696-
} else {
697-
// If not exists, get the last order date created from the orders and update the metadata.
698-
$date_timestamp = $subscription->get_time( $date_type );
699-
700-
$subscription->set_last_order_date_created( $date_timestamp );
701-
$subscription->save();
702-
}
691+
$date_timestamp = self::get_last_payment_date( $subscription );
703692
} else {
704693
$date_timestamp = $subscription->get_time( $date_type );
705694
}
@@ -1850,6 +1839,26 @@ public function orders_table_query_clauses( $pieces, $query, $args ) {
18501839
return $pieces;
18511840
}
18521841

1842+
/**
1843+
* Get the last payment date for a subscription.
1844+
*
1845+
* @param WC_Subscription $subscription The subscription object.
1846+
* @return int The last payment date timestamp.
1847+
*/
1848+
private static function get_last_payment_date( $subscription ) {
1849+
$last_order_date_created = $subscription->get_last_order_date_created();
1850+
1851+
if ( ! empty( $last_order_date_created ) ) {
1852+
return $last_order_date_created;
1853+
}
1854+
1855+
$date_timestamp = $subscription->get_time( 'last_order_date_created' );
1856+
$subscription->set_last_order_date_created( $date_timestamp );
1857+
$subscription->save();
1858+
1859+
return $date_timestamp;
1860+
}
1861+
18531862
/**
18541863
* Adds order table query clauses to sort the subscriptions list table by last payment date.
18551864
*

includes/class-wc-subscriptions-order.php

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2440,23 +2440,26 @@ public static function delete_order_update_subscription_last_order_date_created(
24402440
* @param mixed $prev_value The previous value stored in the database. Optional.
24412441
*/
24422442
public static function update_subscription_last_order_date_parent_id_changes( $type, $object_id, $key, $new_value, $previous_value ) {
2443-
if ( 'parent_id' === $key && ! empty( $previous_value ) && ! empty( $new_value ) ) {
2444-
$previous_subscription = wcs_get_subscription( $previous_value );
2445-
$new_subscription = wcs_get_subscription( $new_value );
2443+
if ( 'parent_id' !== $key || empty( $previous_value ) || empty( $new_value ) ) {
2444+
return;
2445+
}
24462446

2447-
if ( ! $previous_subscription || ! $new_subscription ) {
2448-
return;
2449-
}
2447+
$previous_subscription = wcs_get_subscription( $previous_value );
2448+
$new_subscription = wcs_get_subscription( $new_value );
24502449

2451-
$previous_last_order_date_created = $previous_subscription->get_time( 'last_order_date_created' );
2452-
$new_last_order_date_created = $new_subscription->get_time( 'last_order_date_created' );
2450+
if ( ! $previous_subscription || ! $new_subscription ) {
2451+
return;
2452+
}
24532453

2454-
$new_subscription->set_last_order_date_created( $previous_last_order_date_created );
2455-
$new_subscription->save();
2454+
// Switch last order date on both subscriptions.
2455+
$previous_last_order_date_created = $previous_subscription->get_time( 'last_order_date_created' );
2456+
$new_last_order_date_created = $new_subscription->get_time( 'last_order_date_created' );
24562457

2457-
$previous_subscription->set_last_order_date_created( $new_last_order_date_created );
2458-
$previous_subscription->save();
2459-
}
2458+
$new_subscription->set_last_order_date_created( $previous_last_order_date_created );
2459+
$new_subscription->save();
2460+
2461+
$previous_subscription->set_last_order_date_created( $new_last_order_date_created );
2462+
$previous_subscription->save();
24602463
}
24612464

24622465
/**

includes/wcs-order-functions.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -277,6 +277,8 @@ function wcs_create_order_from_subscription( $subscription, $type ) {
277277
throw new Exception( sprintf( __( 'There was an error fetching the new order (%1$s) for subscription %2$d.', 'woocommerce-subscriptions' ), $type, $subscription->get_id() ) );
278278
}
279279

280+
// Update the subscription last_order_date_created on every time
281+
// a child order is created.
280282
$subscription->set_last_order_date_created( $new_order->get_date_created()->getTimestamp() );
281283
$subscription->save();
282284

0 commit comments

Comments
 (0)