2024-10-18 17:17:07 +02:00
|
|
|
<?php
|
|
|
|
/**
|
|
|
|
* The Settings module services.
|
|
|
|
*
|
|
|
|
* @package WooCommerce\PayPalCommerce\Settings
|
|
|
|
*/
|
|
|
|
|
|
|
|
declare( strict_types = 1 );
|
|
|
|
|
|
|
|
namespace WooCommerce\PayPalCommerce\Settings;
|
|
|
|
|
2024-11-14 17:13:01 +01:00
|
|
|
use WooCommerce\PayPalCommerce\ApiClient\Helper\Cache;
|
2025-01-08 17:18:52 +01:00
|
|
|
use WooCommerce\PayPalCommerce\Settings\Ajax\SwitchSettingsUiEndpoint;
|
2024-11-15 09:01:49 +01:00
|
|
|
use WooCommerce\PayPalCommerce\Settings\Data\GeneralSettings;
|
2024-11-14 17:13:01 +01:00
|
|
|
use WooCommerce\PayPalCommerce\Settings\Data\OnboardingProfile;
|
2025-01-14 17:59:35 +01:00
|
|
|
use WooCommerce\PayPalCommerce\Settings\Data\PaymentSettings;
|
2025-01-17 13:59:17 +01:00
|
|
|
use WooCommerce\PayPalCommerce\Settings\Data\SettingsModel;
|
2025-01-28 11:52:56 +01:00
|
|
|
use WooCommerce\PayPalCommerce\Settings\Data\StylingSettings;
|
|
|
|
use WooCommerce\PayPalCommerce\Settings\Data\TodosModel;
|
2025-01-02 12:26:40 +01:00
|
|
|
use WooCommerce\PayPalCommerce\Settings\Endpoint\AuthenticationRestEndpoint;
|
2024-11-21 19:23:42 +01:00
|
|
|
use WooCommerce\PayPalCommerce\Settings\Endpoint\CommonRestEndpoint;
|
|
|
|
use WooCommerce\PayPalCommerce\Settings\Endpoint\LoginLinkRestEndpoint;
|
2024-10-22 15:14:46 +02:00
|
|
|
use WooCommerce\PayPalCommerce\Settings\Endpoint\OnboardingRestEndpoint;
|
2025-01-14 17:59:35 +01:00
|
|
|
use WooCommerce\PayPalCommerce\Settings\Endpoint\PaymentRestEndpoint;
|
2024-12-16 13:12:38 +01:00
|
|
|
use WooCommerce\PayPalCommerce\Settings\Endpoint\RefreshFeatureStatusEndpoint;
|
2024-12-18 07:00:47 +01:00
|
|
|
use WooCommerce\PayPalCommerce\Settings\Endpoint\WebhookSettingsEndpoint;
|
2025-01-17 13:59:17 +01:00
|
|
|
use WooCommerce\PayPalCommerce\Settings\Endpoint\SettingsRestEndpoint;
|
2025-01-28 11:52:56 +01:00
|
|
|
use WooCommerce\PayPalCommerce\Settings\Endpoint\StylingRestEndpoint;
|
|
|
|
use WooCommerce\PayPalCommerce\Settings\Endpoint\TodosRestEndpoint;
|
2025-01-08 17:18:52 +01:00
|
|
|
use WooCommerce\PayPalCommerce\Settings\Handler\ConnectionListener;
|
|
|
|
use WooCommerce\PayPalCommerce\Settings\Service\AuthenticationManager;
|
2024-11-14 17:13:01 +01:00
|
|
|
use WooCommerce\PayPalCommerce\Settings\Service\ConnectionUrlGenerator;
|
2024-12-10 15:38:07 +01:00
|
|
|
use WooCommerce\PayPalCommerce\Settings\Service\OnboardingUrlManager;
|
2024-10-18 17:17:07 +02:00
|
|
|
use WooCommerce\PayPalCommerce\Vendor\Psr\Container\ContainerInterface;
|
2025-01-17 18:40:43 +01:00
|
|
|
use WooCommerce\PayPalCommerce\Settings\Service\DataSanitizer;
|
2024-10-18 17:17:07 +02:00
|
|
|
|
|
|
|
return array(
|
2024-10-31 16:17:15 +01:00
|
|
|
'settings.url' => static function ( ContainerInterface $container ) : string {
|
2024-10-18 17:17:07 +02:00
|
|
|
/**
|
|
|
|
* The path cannot be false.
|
|
|
|
*
|
|
|
|
* @psalm-suppress PossiblyFalseArgument
|
|
|
|
*/
|
|
|
|
return plugins_url(
|
|
|
|
'/modules/ppcp-settings/',
|
|
|
|
dirname( realpath( __FILE__ ), 3 ) . '/woocommerce-paypal-payments.php'
|
|
|
|
);
|
|
|
|
},
|
2024-10-31 16:17:15 +01:00
|
|
|
'settings.data.onboarding' => static function ( ContainerInterface $container ) : OnboardingProfile {
|
|
|
|
$can_use_casual_selling = $container->get( 'settings.casual-selling.eligible' );
|
2024-10-25 13:02:22 +02:00
|
|
|
$can_use_vaulting = $container->has( 'save-payment-methods.eligible' ) && $container->get( 'save-payment-methods.eligible' );
|
|
|
|
$can_use_card_payments = $container->has( 'card-fields.eligible' ) && $container->get( 'card-fields.eligible' );
|
2024-12-10 15:38:07 +01:00
|
|
|
$can_use_subscriptions = $container->has( 'wc-subscriptions.helper' ) && $container->get( 'wc-subscriptions.helper' )
|
|
|
|
->plugin_is_active();
|
2024-10-25 13:02:22 +02:00
|
|
|
|
|
|
|
// Card payments are disabled for this plugin when WooPayments is active.
|
2024-10-31 16:17:15 +01:00
|
|
|
// TODO: Move this condition to the card-fields.eligible service?
|
2024-10-25 13:02:22 +02:00
|
|
|
if ( class_exists( '\WC_Payments' ) ) {
|
|
|
|
$can_use_card_payments = false;
|
|
|
|
}
|
|
|
|
|
|
|
|
return new OnboardingProfile(
|
|
|
|
$can_use_casual_selling,
|
|
|
|
$can_use_vaulting,
|
2024-12-05 10:33:34 -04:00
|
|
|
$can_use_card_payments,
|
|
|
|
$can_use_subscriptions
|
2024-10-25 13:02:22 +02:00
|
|
|
);
|
2024-10-22 18:53:24 +02:00
|
|
|
},
|
2024-11-22 15:21:09 +01:00
|
|
|
'settings.data.general' => static function ( ContainerInterface $container ) : GeneralSettings {
|
2025-01-09 13:05:03 +01:00
|
|
|
return new GeneralSettings(
|
2024-12-02 18:15:07 -04:00
|
|
|
$container->get( 'api.shop.country' ),
|
|
|
|
$container->get( 'api.shop.currency.getter' )->get(),
|
2024-12-19 14:36:26 +01:00
|
|
|
$container->get( 'wcgateway.is-send-only-country' )
|
2024-12-02 18:15:07 -04:00
|
|
|
);
|
2024-11-21 17:23:22 +01:00
|
|
|
},
|
2025-01-13 17:06:05 +01:00
|
|
|
'settings.data.styling' => static function ( ContainerInterface $container ) : StylingSettings {
|
2025-01-17 19:03:23 +01:00
|
|
|
return new StylingSettings(
|
|
|
|
$container->get( 'settings.service.sanitizer' )
|
|
|
|
);
|
2025-01-13 17:06:05 +01:00
|
|
|
},
|
2025-01-23 14:14:47 +01:00
|
|
|
'settings.data.payment' => static function ( ContainerInterface $container ) : PaymentSettings {
|
2025-01-22 17:26:59 +01:00
|
|
|
return new PaymentSettings();
|
|
|
|
},
|
2024-10-31 16:17:15 +01:00
|
|
|
'settings.rest.onboarding' => static function ( ContainerInterface $container ) : OnboardingRestEndpoint {
|
2024-10-22 18:53:24 +02:00
|
|
|
return new OnboardingRestEndpoint( $container->get( 'settings.data.onboarding' ) );
|
2024-10-22 15:14:46 +02:00
|
|
|
},
|
2024-11-21 17:23:22 +01:00
|
|
|
'settings.rest.common' => static function ( ContainerInterface $container ) : CommonRestEndpoint {
|
2025-01-09 13:05:03 +01:00
|
|
|
return new CommonRestEndpoint( $container->get( 'settings.data.general' ) );
|
2024-11-21 17:23:22 +01:00
|
|
|
},
|
2025-01-14 17:59:35 +01:00
|
|
|
'settings.rest.payment' => static function ( ContainerInterface $container ) : PaymentRestEndpoint {
|
2025-01-23 14:14:47 +01:00
|
|
|
return new PaymentRestEndpoint( $container->get( 'settings.data.payment' ) );
|
2025-01-14 17:59:35 +01:00
|
|
|
},
|
2025-01-13 17:06:05 +01:00
|
|
|
'settings.rest.styling' => static function ( ContainerInterface $container ) : StylingRestEndpoint {
|
2025-01-17 18:40:43 +01:00
|
|
|
return new StylingRestEndpoint(
|
|
|
|
$container->get( 'settings.data.styling' ),
|
|
|
|
$container->get( 'settings.service.sanitizer' )
|
|
|
|
);
|
2025-01-13 17:06:05 +01:00
|
|
|
},
|
2024-12-16 13:12:38 +01:00
|
|
|
'settings.rest.refresh_feature_status' => static function ( ContainerInterface $container ) : RefreshFeatureStatusEndpoint {
|
|
|
|
return new RefreshFeatureStatusEndpoint(
|
|
|
|
$container->get( 'wcgateway.settings' ),
|
|
|
|
new Cache( 'ppcp-timeout' ),
|
|
|
|
$container->get( 'woocommerce.logger.woocommerce' )
|
|
|
|
);
|
|
|
|
},
|
2025-01-02 12:26:40 +01:00
|
|
|
'settings.rest.connect_manual' => static function ( ContainerInterface $container ) : AuthenticationRestEndpoint {
|
|
|
|
return new AuthenticationRestEndpoint(
|
2025-01-08 17:18:52 +01:00
|
|
|
$container->get( 'settings.service.authentication_manager' ),
|
2024-11-06 09:15:53 +02:00
|
|
|
);
|
2024-10-31 17:49:15 +01:00
|
|
|
},
|
2024-11-15 14:05:52 +01:00
|
|
|
'settings.rest.login_link' => static function ( ContainerInterface $container ) : LoginLinkRestEndpoint {
|
|
|
|
return new LoginLinkRestEndpoint(
|
2025-01-03 13:48:26 +01:00
|
|
|
$container->get( 'settings.service.connection-url-generator' ),
|
2024-11-06 09:15:53 +02:00
|
|
|
);
|
2024-10-31 17:49:15 +01:00
|
|
|
},
|
2024-12-20 08:59:52 +01:00
|
|
|
'settings.rest.webhooks' => static function ( ContainerInterface $container ) : WebhookSettingsEndpoint {
|
2024-12-18 07:00:47 +01:00
|
|
|
return new WebhookSettingsEndpoint(
|
2024-12-20 08:59:52 +01:00
|
|
|
$container->get( 'api.endpoint.webhook' ),
|
|
|
|
$container->get( 'webhook.registrar' ),
|
|
|
|
$container->get( 'webhook.status.simulation' )
|
2024-11-06 09:15:53 +02:00
|
|
|
);
|
2024-10-31 17:49:15 +01:00
|
|
|
},
|
2024-10-31 16:17:15 +01:00
|
|
|
'settings.casual-selling.supported-countries' => static function ( ContainerInterface $container ) : array {
|
|
|
|
return array(
|
2024-10-31 18:49:08 +01:00
|
|
|
'AR',
|
|
|
|
'AU',
|
2024-10-31 16:17:15 +01:00
|
|
|
'AT',
|
2024-10-31 18:49:08 +01:00
|
|
|
'BE',
|
|
|
|
'BR',
|
|
|
|
'CA',
|
|
|
|
'CL',
|
|
|
|
'CN',
|
|
|
|
'CY',
|
|
|
|
'CZ',
|
|
|
|
'DK',
|
|
|
|
'EE',
|
|
|
|
'FI',
|
|
|
|
'FR',
|
|
|
|
'GR',
|
|
|
|
'HU',
|
|
|
|
'ID',
|
|
|
|
'IE',
|
|
|
|
'IT',
|
|
|
|
'JP',
|
|
|
|
'LV',
|
|
|
|
'LI',
|
|
|
|
'LU',
|
|
|
|
'MY',
|
|
|
|
'MT',
|
2024-10-31 16:17:15 +01:00
|
|
|
'NL',
|
2024-10-31 18:49:08 +01:00
|
|
|
'NZ',
|
|
|
|
'NO',
|
|
|
|
'PH',
|
|
|
|
'PL',
|
|
|
|
'PT',
|
|
|
|
'RO',
|
|
|
|
'RU',
|
|
|
|
'SM',
|
|
|
|
'SA',
|
|
|
|
'SG',
|
|
|
|
'SK',
|
|
|
|
'SI',
|
|
|
|
'ZA',
|
|
|
|
'KR',
|
|
|
|
'ES',
|
|
|
|
'SE',
|
|
|
|
'TW',
|
|
|
|
'GB',
|
|
|
|
'US',
|
|
|
|
'VN',
|
2024-10-31 16:17:15 +01:00
|
|
|
);
|
|
|
|
},
|
|
|
|
'settings.casual-selling.eligible' => static function ( ContainerInterface $container ) : bool {
|
|
|
|
$country = $container->get( 'api.shop.country' );
|
|
|
|
$eligible_countries = $container->get( 'settings.casual-selling.supported-countries' );
|
|
|
|
|
|
|
|
return in_array( $country, $eligible_countries, true );
|
2024-10-31 09:44:04 +02:00
|
|
|
},
|
2024-12-10 18:23:30 +01:00
|
|
|
'settings.handler.connection-listener' => static function ( ContainerInterface $container ) : ConnectionListener {
|
|
|
|
$page_id = $container->has( 'wcgateway.current-ppcp-settings-page-id' ) ? $container->get( 'wcgateway.current-ppcp-settings-page-id' ) : '';
|
|
|
|
|
|
|
|
return new ConnectionListener(
|
|
|
|
$page_id,
|
|
|
|
$container->get( 'settings.service.onboarding-url-manager' ),
|
2025-01-08 17:47:37 +01:00
|
|
|
$container->get( 'settings.service.authentication_manager' ),
|
2025-01-09 18:57:17 +01:00
|
|
|
$container->get( 'http.redirector' ),
|
2024-12-10 18:23:30 +01:00
|
|
|
$container->get( 'woocommerce.logger.woocommerce' )
|
|
|
|
);
|
|
|
|
},
|
2024-11-14 17:13:01 +01:00
|
|
|
'settings.service.signup-link-cache' => static function ( ContainerInterface $container ) : Cache {
|
|
|
|
return new Cache( 'ppcp-paypal-signup-link' );
|
|
|
|
},
|
2024-12-10 15:38:07 +01:00
|
|
|
'settings.service.onboarding-url-manager' => static function ( ContainerInterface $container ) : OnboardingUrlManager {
|
2024-12-10 18:23:30 +01:00
|
|
|
return new OnboardingUrlManager(
|
|
|
|
$container->get( 'settings.service.signup-link-cache' ),
|
|
|
|
$container->get( 'woocommerce.logger.woocommerce' )
|
|
|
|
);
|
2024-12-10 15:38:07 +01:00
|
|
|
},
|
2025-01-03 13:48:26 +01:00
|
|
|
'settings.service.connection-url-generator' => static function ( ContainerInterface $container ) : ConnectionUrlGenerator {
|
|
|
|
return new ConnectionUrlGenerator(
|
|
|
|
$container->get( 'api.env.endpoint.partner-referrals' ),
|
|
|
|
$container->get( 'api.repository.partner-referrals-data' ),
|
|
|
|
$container->get( 'settings.service.onboarding-url-manager' ),
|
|
|
|
$container->get( 'woocommerce.logger.woocommerce' )
|
2024-11-14 17:13:01 +01:00
|
|
|
);
|
|
|
|
},
|
2025-01-08 17:18:52 +01:00
|
|
|
'settings.service.authentication_manager' => static function ( ContainerInterface $container ) : AuthenticationManager {
|
|
|
|
return new AuthenticationManager(
|
2025-01-09 13:05:03 +01:00
|
|
|
$container->get( 'settings.data.general' ),
|
2025-01-03 12:22:06 +01:00
|
|
|
$container->get( 'api.env.paypal-host' ),
|
|
|
|
$container->get( 'api.env.endpoint.login-seller' ),
|
2025-01-02 20:40:11 +01:00
|
|
|
$container->get( 'api.repository.partner-referrals-data' ),
|
2024-12-17 19:34:22 +01:00
|
|
|
$container->get( 'woocommerce.logger.woocommerce' ),
|
2024-11-14 17:13:01 +01:00
|
|
|
);
|
|
|
|
},
|
2025-01-17 18:40:43 +01:00
|
|
|
'settings.service.sanitizer' => static function ( ContainerInterface $container ) : DataSanitizer {
|
|
|
|
return new DataSanitizer();
|
|
|
|
},
|
2024-12-17 16:08:09 +01:00
|
|
|
'settings.ajax.switch_ui' => static function ( ContainerInterface $container ) : SwitchSettingsUiEndpoint {
|
2024-11-20 20:16:35 +04:00
|
|
|
return new SwitchSettingsUiEndpoint(
|
|
|
|
$container->get( 'woocommerce.logger.woocommerce' ),
|
|
|
|
$container->get( 'button.request-data' ),
|
2024-12-19 15:52:06 +04:00
|
|
|
$container->get( 'settings.data.onboarding' ),
|
|
|
|
$container->get( 'api.merchant_id' ) !== ''
|
2024-11-20 20:16:35 +04:00
|
|
|
);
|
2024-11-15 09:01:49 +01:00
|
|
|
},
|
2025-01-17 13:59:17 +01:00
|
|
|
'settings.rest.settings' => static function( ContainerInterface $container ): SettingsRestEndpoint {
|
|
|
|
return new SettingsRestEndpoint(
|
|
|
|
$container->get( 'settings.data.settings' ),
|
|
|
|
$container->get( 'woocommerce.logger.woocommerce' ),
|
|
|
|
);
|
|
|
|
},
|
|
|
|
'settings.data.settings' => static function() : SettingsModel {
|
|
|
|
return new SettingsModel();
|
|
|
|
},
|
2025-01-28 11:55:47 +01:00
|
|
|
'settings.rest.todos' => static function ( ContainerInterface $container ) : TodosRestEndpoint {
|
2025-01-28 11:52:56 +01:00
|
|
|
return new TodosRestEndpoint(
|
|
|
|
$container->get( 'settings.data.todos' ),
|
|
|
|
);
|
|
|
|
},
|
2025-01-28 11:55:47 +01:00
|
|
|
'settings.data.todos' => static function ( ContainerInterface $container ) : TodosModel {
|
2025-01-28 11:52:56 +01:00
|
|
|
return new TodosModel();
|
|
|
|
},
|
2024-10-18 17:17:07 +02:00
|
|
|
);
|