main_gateway = $main_gateway; $this->all_registered_gateways = $all_registered_gateways; $this->payment_method_id = $payment_method_id; $this->migration_version = $migration_version; } /** * Checks whether we should trigger the event. */ public function maybe_migrate() { $previous_version = get_option( 'woocommerce_woocommerce_payments_version' ); if ( version_compare( $this->migration_version, $previous_version, '>' ) ) { $this->migrate(); } } /** * Syncs gateway setting objects. */ private function migrate() { $enabled_payment_methods = $this->main_gateway->get_option( 'upe_enabled_payment_method_ids', [] ); $filtered_payment_methods = array_filter( $enabled_payment_methods, function ( $method ) { return $this->payment_method_id !== $method; } ); foreach ( $this->all_registered_gateways as $gateway ) { if ( $this->payment_method_id === $gateway->get_stripe_id() ) { if ( in_array( $gateway->get_stripe_id(), $enabled_payment_methods, true ) ) { $gateway->disable(); $gateway->update_option( 'upe_enabled_payment_method_ids', $filtered_payment_methods ); } else { $gateway->update_option( 'upe_enabled_payment_method_ids', $filtered_payment_methods ); } } else { $gateway->update_option( 'upe_enabled_payment_method_ids', $filtered_payment_methods ); } } } }