Skip to content

Commit b177538

Browse files
committed
fix(backfill): reader registered, membership updated
1 parent eeba099 commit b177538

File tree

3 files changed

+25
-7
lines changed

3 files changed

+25
-7
lines changed

includes/cli/backfillers/class-reader-registered.php

+8-4
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ public function get_events() {
3535
if ( empty( $roles_to_sync ) ) {
3636
WP_CLI::error( 'Incompatible Newspack plugin version or no roles to sync.' );
3737
}
38-
// Get all users registered between this-> and $end.
38+
// Get all users registered between specified dates.
3939
$users = get_users(
4040
[
4141
'role__in' => $roles_to_sync,
@@ -44,6 +44,7 @@ public function get_events() {
4444
'before' => $this->end,
4545
'inclusive' => true,
4646
],
47+
'orderby' => 'user_registered',
4748
'fields' => [ 'id', 'user_email', 'user_registered' ],
4849
'number' => -1,
4950
'meta_query' => [ // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_query
@@ -76,9 +77,12 @@ function( $args ) {
7677
foreach ( $users as $user ) {
7778
$registration_method = get_user_meta( $user->ID, \Newspack\Reader_Activation::REGISTRATION_METHOD, true );
7879
$user_data = [
79-
'user_id' => $user->ID,
80-
'email' => $user->user_email,
81-
'metadata' => [
80+
'user_id' => $user->ID,
81+
'email' => $user->user_email,
82+
'user_registered' => $user->user_registered,
83+
'first_name' => get_user_meta( $user->ID, 'first_name', true ),
84+
'last_name' => get_user_meta( $user->ID, 'last_name', true ),
85+
'meta_input' => [
8286
// 'current_page_url' is not saved, can't be backfilled.
8387
'registration_method' => empty( $registration_method ) ? 'backfill-script' : $registration_method,
8488
],

includes/cli/backfillers/class-woocommerce-membership-updated.php

+13-3
Original file line numberDiff line numberDiff line change
@@ -77,10 +77,20 @@ public function get_events() {
7777
'membership_id' => $membership->get_id(),
7878
'new_status' => $status,
7979
];
80-
if ( $status === 'active' ) {
80+
switch ( $status ) {
81+
case 'paused':
82+
$timestamp = strtotime( $membership->get_paused_date() );
83+
break;
84+
case 'cancelled':
85+
$timestamp = strtotime( $membership->get_cancelled_date() );
86+
break;
87+
case 'expired':
88+
$timestamp = strtotime( $membership->get_end_date() );
89+
break;
90+
}
91+
92+
if ( ! $timestamp ) {
8193
$timestamp = strtotime( $membership->get_start_date() );
82-
} else {
83-
$timestamp = strtotime( $membership->get_end_date() );
8494
}
8595

8696
$events[] = new \Newspack_Network\Incoming_Events\Woocommerce_Membership_Updated( get_bloginfo( 'url' ), $membership_data, $timestamp );

includes/utils/class-users.php

+4
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,10 @@ public static function get_or_create_user_by_email( $email, $remote_site_url, $r
5050

5151
$user_array = array_merge( $user_array, $insert_array );
5252

53+
if ( isset( $user_array['meta_input'] ) ) {
54+
$user_array['meta_input'] = (array) $user_array['meta_input'];
55+
}
56+
5357
$user_id = wp_insert_user( $user_array );
5458

5559
if ( is_wp_error( $user_id ) ) {

0 commit comments

Comments
 (0)