From ab09da925279fdd666222c3203d455a5c58cdc9f Mon Sep 17 00:00:00 2001 From: Emili Castells Guasch Date: Mon, 18 Dec 2023 17:26:13 +0100 Subject: [PATCH 1/3] Add disable button support for variable subscriptions --- .../src/Helper/SubscriptionHelper.php | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/modules/ppcp-wc-subscriptions/src/Helper/SubscriptionHelper.php b/modules/ppcp-wc-subscriptions/src/Helper/SubscriptionHelper.php index 4d4f1a956..6d381c3af 100644 --- a/modules/ppcp-wc-subscriptions/src/Helper/SubscriptionHelper.php +++ b/modules/ppcp-wc-subscriptions/src/Helper/SubscriptionHelper.php @@ -211,6 +211,16 @@ public function paypal_subscription_id(): string { if ( $product->get_type() === 'subscription' && $product->meta_exists( 'ppcp_subscription_plan' ) ) { return $product->get_meta( 'ppcp_subscription_plan' )['id']; } + + if ( $product->get_type() === 'variable-subscription' ) { + $product_variations = $product->get_available_variations(); + foreach ( $product_variations as $variation ) { + $variation_product = wc_get_product( $variation['variation_id'] ); + if ( $variation_product->meta_exists( 'ppcp_subscription_plan' ) ) { + return $variation_product->get_meta( 'ppcp_subscription_plan' )['id']; + } + } + } } return ''; From ef9ee06944239b1d4bd49307d1e63a8cda7fbf34 Mon Sep 17 00:00:00 2001 From: Emili Castells Guasch Date: Mon, 18 Dec 2023 17:31:27 +0100 Subject: [PATCH 2/3] Fix psalm --- .../src/Helper/SubscriptionHelper.php | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/modules/ppcp-wc-subscriptions/src/Helper/SubscriptionHelper.php b/modules/ppcp-wc-subscriptions/src/Helper/SubscriptionHelper.php index 6d381c3af..b55c3bc5e 100644 --- a/modules/ppcp-wc-subscriptions/src/Helper/SubscriptionHelper.php +++ b/modules/ppcp-wc-subscriptions/src/Helper/SubscriptionHelper.php @@ -213,10 +213,15 @@ public function paypal_subscription_id(): string { } if ( $product->get_type() === 'variable-subscription' ) { + /** + * The method is defined in WC_Product_Variable class. + * + * @psalm-suppress UndefinedMethod + */ $product_variations = $product->get_available_variations(); foreach ( $product_variations as $variation ) { $variation_product = wc_get_product( $variation['variation_id'] ); - if ( $variation_product->meta_exists( 'ppcp_subscription_plan' ) ) { + if ( $variation_product !== null && $variation_product !== false && $variation_product->meta_exists( 'ppcp_subscription_plan' ) ) { return $variation_product->get_meta( 'ppcp_subscription_plan' )['id']; } } From 68969e3409ecbf3146b4508ff8e17d7f2d1814d6 Mon Sep 17 00:00:00 2001 From: Emili Castells Guasch Date: Mon, 18 Dec 2023 17:36:20 +0100 Subject: [PATCH 3/3] Fix psalm --- .../ppcp-wc-subscriptions/src/Helper/SubscriptionHelper.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/ppcp-wc-subscriptions/src/Helper/SubscriptionHelper.php b/modules/ppcp-wc-subscriptions/src/Helper/SubscriptionHelper.php index b55c3bc5e..3ece94804 100644 --- a/modules/ppcp-wc-subscriptions/src/Helper/SubscriptionHelper.php +++ b/modules/ppcp-wc-subscriptions/src/Helper/SubscriptionHelper.php @@ -220,8 +220,8 @@ public function paypal_subscription_id(): string { */ $product_variations = $product->get_available_variations(); foreach ( $product_variations as $variation ) { - $variation_product = wc_get_product( $variation['variation_id'] ); - if ( $variation_product !== null && $variation_product !== false && $variation_product->meta_exists( 'ppcp_subscription_plan' ) ) { + $variation_product = wc_get_product( $variation['variation_id'] ) ?? ''; + if ( $variation_product && $variation_product->meta_exists( 'ppcp_subscription_plan' ) ) { return $variation_product->get_meta( 'ppcp_subscription_plan' )['id']; } }