Skip to content

Commit cd59552

Browse files
committed
Update wc subscriptions module to use new settings provider
1 parent d9b5f8b commit cd59552

4 files changed

Lines changed: 66 additions & 37 deletions

File tree

modules/ppcp-wc-subscriptions/services.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
$purchase_unit_factory = $container->get( 'api.factory.purchase-unit' );
3434
$payer_factory = $container->get( 'api.factory.payer' );
3535
$environment = $container->get( 'settings.environment' );
36-
$settings = $container->get( 'wcgateway.settings' );
36+
$settings_provider = $container->get( 'settings.settings-provider' );
3737
$authorized_payments_processor = $container->get( 'wcgateway.processor.authorized-payments' );
3838
$funding_source_renderer = $container->get( 'wcgateway.funding-source.renderer' );
3939
return new RenewalHandler(
@@ -44,7 +44,7 @@
4444
$container->get( 'api.factory.shipping-preference' ),
4545
$payer_factory,
4646
$environment,
47-
$settings,
47+
$settings_provider,
4848
$authorized_payments_processor,
4949
$funding_source_renderer,
5050
$container->get( 'wc-subscriptions.helpers.real-time-account-updater' ),
@@ -69,7 +69,7 @@
6969
},
7070
'wc-subscriptions.vault-v2.display-saved-payment-tokens' => static function ( ContainerInterface $container ): DisplaySavedPaymentTokens {
7171
return new DisplaySavedPaymentTokens(
72-
$container->get( 'wcgateway.settings' ),
72+
$container->get( 'settings.settings-provider' ),
7373
$container->get( 'wc-subscriptions.helper' )
7474
);
7575
},

modules/ppcp-wc-subscriptions/src/RenewalHandler.php

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737
use WooCommerce\PayPalCommerce\WcGateway\Processor\OrderMetaTrait;
3838
use WooCommerce\PayPalCommerce\WcGateway\Processor\PaymentsStatusHandlingTrait;
3939
use WooCommerce\PayPalCommerce\WcGateway\Processor\TransactionIdHandlingTrait;
40-
use WooCommerce\PayPalCommerce\WcGateway\Settings\Settings;
40+
use WooCommerce\PayPalCommerce\Settings\Data\SettingsProvider;
4141
use WooCommerce\PayPalCommerce\WcSubscriptions\Helper\RealTimeAccountUpdaterHelper;
4242
use WooCommerce\PayPalCommerce\WcSubscriptions\Helper\SubscriptionHelper;
4343

@@ -100,11 +100,11 @@ class RenewalHandler {
100100
protected $environment;
101101

102102
/**
103-
* The settings
103+
* The settings provider
104104
*
105-
* @var Settings
105+
* @var SettingsProvider
106106
*/
107-
protected $settings;
107+
protected $settings_provider;
108108

109109
/**
110110
* The processor for authorized payments.
@@ -163,7 +163,7 @@ class RenewalHandler {
163163
* @param ShippingPreferenceFactory $shipping_preference_factory The shipping_preference factory.
164164
* @param PayerFactory $payer_factory The payer factory.
165165
* @param Environment $environment The environment.
166-
* @param Settings $settings The Settings.
166+
* @param SettingsProvider $settings_provider The Settings Provider.
167167
* @param AuthorizedPaymentsProcessor $authorized_payments_processor The Authorized Payments Processor.
168168
* @param FundingSourceRenderer $funding_source_renderer The funding source renderer.
169169
* @param RealTimeAccountUpdaterHelper $real_time_account_updater_helper Real Time Account Updater helper.
@@ -180,7 +180,7 @@ public function __construct(
180180
ShippingPreferenceFactory $shipping_preference_factory,
181181
PayerFactory $payer_factory,
182182
Environment $environment,
183-
Settings $settings,
183+
SettingsProvider $settings_provider,
184184
AuthorizedPaymentsProcessor $authorized_payments_processor,
185185
FundingSourceRenderer $funding_source_renderer,
186186
RealTimeAccountUpdaterHelper $real_time_account_updater_helper,
@@ -197,7 +197,7 @@ public function __construct(
197197
$this->shipping_preference_factory = $shipping_preference_factory;
198198
$this->payer_factory = $payer_factory;
199199
$this->environment = $environment;
200-
$this->settings = $settings;
200+
$this->settings_provider = $settings_provider;
201201
$this->authorized_payments_processor = $authorized_payments_processor;
202202
$this->funding_source_renderer = $funding_source_renderer;
203203
$this->real_time_account_updater_helper = $real_time_account_updater_helper;
@@ -475,13 +475,9 @@ private function get_token_for_customer( \WC_Customer $customer, \WC_Order $wc_o
475475
* @param Order $order The PayPal order.
476476
*
477477
* @return bool
478-
* @throws NotFoundException When a setting was not found.
479478
*/
480479
protected function capture_authorized_downloads( Order $order ): bool {
481-
if (
482-
! $this->settings->has( 'capture_for_virtual_only' )
483-
|| ! $this->settings->get( 'capture_for_virtual_only' )
484-
) {
480+
if ( ! $this->settings_provider->capture_virtual_orders() ) {
485481
return false;
486482
}
487483

modules/ppcp-wc-subscriptions/src/VaultV2/DisplaySavedPaymentTokens.php

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,22 +5,21 @@
55

66
use WC_Payment_Token_CC;
77
use WC_Payment_Tokens;
8-
use WooCommerce\PayPalCommerce\WcGateway\Exception\NotFoundException;
98
use WooCommerce\PayPalCommerce\WcGateway\Gateway\CreditCardGateway;
109
use WooCommerce\PayPalCommerce\WcGateway\Gateway\PayPalGateway;
11-
use WooCommerce\PayPalCommerce\WcGateway\Settings\Settings;
10+
use WooCommerce\PayPalCommerce\Settings\Data\SettingsProvider;
1211
use WooCommerce\PayPalCommerce\WcSubscriptions\Helper\SubscriptionHelper;
1312

1413
class DisplaySavedPaymentTokens {
1514

16-
private Settings $settings;
15+
private SettingsProvider $settings_provider;
1716
private SubscriptionHelper $subscription_helper;
1817

1918
public function __construct(
20-
Settings $settings,
19+
SettingsProvider $settings_provider,
2120
SubscriptionHelper $subscription_helper
2221
) {
23-
$this->settings = $settings;
22+
$this->settings_provider = $settings_provider;
2423
$this->subscription_helper = $subscription_helper;
2524
}
2625

@@ -35,8 +34,7 @@ public function display_saved_paypal_payments(
3534
string $id,
3635
string $description
3736
): string {
38-
if ( $this->settings->has( 'vault_enabled' )
39-
&& $this->settings->get( 'vault_enabled' )
37+
if ( $this->settings_provider->save_paypal_and_venmo()
4038
&& PayPalGateway::ID === $id
4139
&& $this->subscription_helper->is_subscription_change_payment()
4240
) {
@@ -63,14 +61,12 @@ public function display_saved_paypal_payments(
6361
* @param string $id The payment gateway Id.
6462
* @param array $default_fields Default payment gateway fields.
6563
* @return array|mixed|string
66-
* @throws NotFoundException When setting was not found.
6764
*/
6865
public function display_saved_credit_cards(
6966
string $id,
7067
array $default_fields
7168
) {
72-
if ( $this->settings->has( 'vault_enabled_dcc' )
73-
&& $this->settings->get( 'vault_enabled_dcc' )
69+
if ( $this->settings_provider->save_card_details()
7470
&& $this->subscription_helper->is_subscription_change_payment()
7571
&& CreditCardGateway::ID === $id
7672
) {

modules/ppcp-wc-subscriptions/src/WcSubscriptionsModule.php

Lines changed: 49 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
use WooCommerce\PayPalCommerce\WcGateway\Gateway\CreditCardGateway;
2727
use WooCommerce\PayPalCommerce\WcGateway\Gateway\PayPalGateway;
2828
use WooCommerce\PayPalCommerce\WcGateway\Processor\TransactionIdHandlingTrait;
29-
use WooCommerce\PayPalCommerce\WcGateway\Settings\Settings;
29+
use WooCommerce\PayPalCommerce\Settings\Data\SettingsProvider;
3030
use WooCommerce\PayPalCommerce\WcSubscriptions\Endpoint\SubscriptionChangePaymentMethod;
3131
use WooCommerce\PayPalCommerce\WcSubscriptions\Helper\FreeTrialSubscriptionHelper;
3232
use WooCommerce\PayPalCommerce\WcSubscriptions\Helper\SubscriptionHelper;
@@ -487,10 +487,13 @@ private function add_gateways_support( ContainerInterface $c ): void {
487487
add_filter(
488488
'woocommerce_paypal_payments_paypal_gateway_supports',
489489
function ( array $supports ) use ( $c ): array {
490-
$settings = $c->get( 'wcgateway.settings' );
491-
assert( $settings instanceof Settings );
490+
$settings_provider = $c->get( 'settings.settings-provider' );
491+
assert( $settings_provider instanceof SettingsProvider );
492492

493-
$subscriptions_mode = $settings->has( 'subscriptions_mode' ) ? $settings->get( 'subscriptions_mode' ) : '';
493+
$subscription_helper = $c->get( 'wc-subscriptions.helper' );
494+
assert( $subscription_helper instanceof SubscriptionHelper );
495+
496+
$subscriptions_mode = $this->get_subscriptions_mode( $settings_provider, $subscription_helper );
494497
if ( 'disable_paypal_subscriptions' === $subscriptions_mode ) {
495498
return $supports;
496499
}
@@ -504,15 +507,17 @@ function ( array $supports ) use ( $c ): array {
504507
add_filter(
505508
'woocommerce_paypal_payments_credit_card_gateway_supports',
506509
function ( array $supports ) use ( $c ): array {
507-
$settings = $c->get( 'wcgateway.settings' );
508-
assert( $settings instanceof Settings );
510+
$settings_provider = $c->get( 'settings.settings-provider' );
511+
assert( $settings_provider instanceof SettingsProvider );
512+
513+
$subscription_helper = $c->get( 'wc-subscriptions.helper' );
514+
assert( $subscription_helper instanceof SubscriptionHelper );
509515

510-
$subscriptions_mode = $settings->has( 'subscriptions_mode' ) ? $settings->get( 'subscriptions_mode' ) : '';
516+
$subscriptions_mode = $this->get_subscriptions_mode( $settings_provider, $subscription_helper );
511517
if ( 'disable_paypal_subscriptions' === $subscriptions_mode ) {
512518
return $supports;
513519
}
514-
$vaulting_enabled = $settings->has( 'vault_enabled_dcc' ) && $settings->get( 'vault_enabled_dcc' );
515-
if ( ! $vaulting_enabled ) {
520+
if ( ! $settings_provider->save_card_details() ) {
516521
return $supports;
517522
}
518523
return array_merge(
@@ -525,10 +530,13 @@ function ( array $supports ) use ( $c ): array {
525530
add_filter(
526531
'woocommerce_paypal_payments_card_button_gateway_supports',
527532
function ( array $supports ) use ( $c ): array {
528-
$settings = $c->get( 'wcgateway.settings' );
529-
assert( $settings instanceof Settings );
533+
$settings_provider = $c->get( 'settings.settings-provider' );
534+
assert( $settings_provider instanceof SettingsProvider );
530535

531-
$subscriptions_mode = $settings->has( 'subscriptions_mode' ) ? $settings->get( 'subscriptions_mode' ) : '';
536+
$subscription_helper = $c->get( 'wc-subscriptions.helper' );
537+
assert( $subscription_helper instanceof SubscriptionHelper );
538+
539+
$subscriptions_mode = $this->get_subscriptions_mode( $settings_provider, $subscription_helper );
532540
if ( 'disable_paypal_subscriptions' === $subscriptions_mode ) {
533541
return $supports;
534542
}
@@ -539,4 +547,33 @@ function ( array $supports ) use ( $c ): array {
539547
}
540548
);
541549
}
550+
551+
/**
552+
* Gets the subscriptions mode based on settings.
553+
*
554+
* @param SettingsProvider $settings_provider The settings provider.
555+
* @param SubscriptionHelper $subscription_helper The subscription helper.
556+
* @return string The subscriptions mode ('vaulting_api', 'subscriptions_api', or 'disable_paypal_subscriptions').
557+
*/
558+
private function get_subscriptions_mode(
559+
SettingsProvider $settings_provider,
560+
SubscriptionHelper $subscription_helper
561+
): string {
562+
if ( ! $subscription_helper->plugin_is_active() ) {
563+
return '';
564+
}
565+
566+
$subscription_mode_disabled = (bool) apply_filters(
567+
'woocommerce_paypal_payments_subscription_mode_disabled',
568+
false
569+
);
570+
571+
if ( $subscription_mode_disabled ) {
572+
return 'disable_paypal_subscriptions';
573+
}
574+
575+
return $settings_provider->save_paypal_and_venmo()
576+
? 'vaulting_api'
577+
: 'subscriptions_api';
578+
}
542579
}

0 commit comments

Comments
 (0)