From 7485a1d2330659fbf1c0d5ed52d8b028b74c74ec Mon Sep 17 00:00:00 2001 From: George Burduli Date: Fri, 7 Jun 2024 11:32:18 +0400 Subject: [PATCH 1/2] Only prevent multiple subscription products in cart if PayPal Subscriptions API is active --- .../src/PayPalSubscriptionsModule.php | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/modules/ppcp-paypal-subscriptions/src/PayPalSubscriptionsModule.php b/modules/ppcp-paypal-subscriptions/src/PayPalSubscriptionsModule.php index bd4531174..ac9d73044 100644 --- a/modules/ppcp-paypal-subscriptions/src/PayPalSubscriptionsModule.php +++ b/modules/ppcp-paypal-subscriptions/src/PayPalSubscriptionsModule.php @@ -94,13 +94,25 @@ class PayPalSubscriptionsModule implements ModuleInterface { * * @psalm-suppress MissingClosureParamType */ - static function ( $passed_validation, $product_id ) { + static function ( $passed_validation, $product_id ) use ( $c ) { if ( WC()->cart->is_empty() ) { return $passed_validation; } $product = wc_get_product( $product_id ); + $settings = $c->get( 'wcgateway.settings' ); + $subscriptions_mode = $settings->get( 'subscriptions_mode' ); + + if ( 'subscriptions_api' !== $subscriptions_mode ) { + if ( $product->get_sold_individually() ) { + $product->set_sold_individually( false ); + $product->save(); + } + + return $passed_validation; + } + if ( $product && $product->get_meta( '_ppcp_enable_subscription_product', true ) === 'yes' ) { if ( ! $product->get_sold_individually() ) { $product->set_sold_individually( true ); From 924aa18ddcba2a8c405cc44114e94c55f7891e7d Mon Sep 17 00:00:00 2001 From: George Burduli Date: Fri, 7 Jun 2024 11:35:48 +0400 Subject: [PATCH 2/2] Fix psalm errors --- .../ppcp-paypal-subscriptions/src/PayPalSubscriptionsModule.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/ppcp-paypal-subscriptions/src/PayPalSubscriptionsModule.php b/modules/ppcp-paypal-subscriptions/src/PayPalSubscriptionsModule.php index ac9d73044..094a922b9 100644 --- a/modules/ppcp-paypal-subscriptions/src/PayPalSubscriptionsModule.php +++ b/modules/ppcp-paypal-subscriptions/src/PayPalSubscriptionsModule.php @@ -105,7 +105,7 @@ class PayPalSubscriptionsModule implements ModuleInterface { $subscriptions_mode = $settings->get( 'subscriptions_mode' ); if ( 'subscriptions_api' !== $subscriptions_mode ) { - if ( $product->get_sold_individually() ) { + if ( $product && $product->get_sold_individually() ) { $product->set_sold_individually( false ); $product->save(); }