From 8f51d4ca1c6e0962d969cb48b4d710f18c7f1239 Mon Sep 17 00:00:00 2001 From: Adam Cassis Date: Tue, 27 Feb 2024 09:54:20 +0100 Subject: [PATCH] fix(backfill): disregard user metadata for reader_registration events --- .../cli/backfillers/class-reader-registered.php | 16 ++++++++++++++++ includes/hub/stores/class-event-log.php | 1 + 2 files changed, 17 insertions(+) diff --git a/includes/cli/backfillers/class-reader-registered.php b/includes/cli/backfillers/class-reader-registered.php index cbd5928b..a5821fb4 100644 --- a/includes/cli/backfillers/class-reader-registered.php +++ b/includes/cli/backfillers/class-reader-registered.php @@ -53,6 +53,22 @@ public function get_events() { $events = []; + // Disregard metadata when checking for duplicates of reader registrations. All that counts here + // is the user email and registration date. The metadata is not relevant for this event. + add_filter( + 'newspack_network_event_log_get_args', + function( $args ) { + if ( $args['action_name'] === 'reader_registered' && isset( $args['data'] ) ) { + $data = json_decode( $args['data'], true ); + if ( isset( $data['metadata'] ) ) { + unset( $data['metadata'] ); + } + $args['data'] = wp_json_encode( $data ); + } + return $args; + } + ); + foreach ( $users as $user ) { $registration_method = get_user_meta( $user->ID, \Newspack\Reader_Activation::REGISTRATION_METHOD, true ); $user_data = [ diff --git a/includes/hub/stores/class-event-log.php b/includes/hub/stores/class-event-log.php index 08d4ae0b..f669d0d7 100644 --- a/includes/hub/stores/class-event-log.php +++ b/includes/hub/stores/class-event-log.php @@ -39,6 +39,7 @@ public static function get( $args, $per_page = 10, $page = 1, $order = 'DESC' ) $query = $wpdb->prepare( "SELECT * FROM $table_name WHERE 1=1 [args] $order_string LIMIT %d OFFSET %d", $per_page, $offset ); //phpcs:ignore + $args = apply_filters( 'newspack_network_event_log_get_args', $args ); $query = str_replace( '[args]', self::build_where_clause( $args ), $query ); $db = $wpdb->get_results( $query ); //phpcs:ignore