diff options
Diffstat (limited to 'plugins/jetpack/extensions/blocks/premium-content/_inc/subscription-service/include.php')
-rw-r--r-- | plugins/jetpack/extensions/blocks/premium-content/_inc/subscription-service/include.php | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/plugins/jetpack/extensions/blocks/premium-content/_inc/subscription-service/include.php b/plugins/jetpack/extensions/blocks/premium-content/_inc/subscription-service/include.php new file mode 100644 index 00000000..34bf3f20 --- /dev/null +++ b/plugins/jetpack/extensions/blocks/premium-content/_inc/subscription-service/include.php @@ -0,0 +1,82 @@ +<?php +/** + * Subcription service includes to build out the service. + * + * @package Automattic\Jetpack\Extensions\Premium_Content + */ + +namespace Automattic\Jetpack\Extensions\Premium_Content; + +require_once __DIR__ . '/class-jwt.php'; +require_once __DIR__ . '/class-subscription-service.php'; +require_once __DIR__ . '/class-token-subscription.php'; +require_once __DIR__ . '/class-token-subscription-service.php'; +require_once __DIR__ . '/class-wpcom-token-subscription-service.php'; +require_once __DIR__ . '/class-wpcom-offline-subscription-service.php'; +require_once __DIR__ . '/class-jetpack-token-subscription-service.php'; +require_once __DIR__ . '/class-unconfigured-subscription-service.php'; + +use Automattic\Jetpack\Extensions\Premium_Content\Subscription_Service\Jetpack_Token_Subscription_Service; +use Automattic\Jetpack\Extensions\Premium_Content\Subscription_Service\Unconfigured_Subscription_Service; +use Automattic\Jetpack\Extensions\Premium_Content\Subscription_Service\WPCOM_Offline_Subscription_Service; +use Automattic\Jetpack\Extensions\Premium_Content\Subscription_Service\WPCOM_Token_Subscription_Service; + +const PAYWALL_FILTER = 'earn_premium_content_subscription_service'; + +/** + * Initializes the premium content subscription service. + */ +function paywall_initialize() { + $paywall = subscription_service(); + if ( $paywall ) { + $paywall->initialize(); + } +} +add_action( 'init', 'Automattic\Jetpack\Extensions\Premium_Content\paywall_initialize', 9 ); + +/** + * Gets the service handling the premium content subscriptions. + * + * @return Subscription_Service Service that will handle the premium content subscriptions. + */ +function subscription_service() { + /** + * Filter the Jetpack_Token_Subscription_Service class. + * + * @since 9.4.0 + * + * @param null|Jetpack_Token_Subscription_Service $interface Registered Subscription_Service. + */ + $interface = apply_filters( PAYWALL_FILTER, null ); + if ( ! $interface instanceof Jetpack_Token_Subscription_Service ) { + _doing_it_wrong( __FUNCTION__, 'No Subscription_Service registered for the ' . esc_html( PAYWALL_FILTER ) . ' filter', 'jetpack' ); + } + return $interface; +} + +/** + * Gets the default service handling the premium content. + * + * @param Subscription_Service $service If set, this service will be used by default. + * @return Subscription_Service Service that will handle the premium content. + */ +function default_service( $service ) { + if ( null !== $service ) { + return $service; + } + + if ( WPCOM_Offline_Subscription_Service::available() ) { + return new WPCOM_Offline_Subscription_Service(); + } + + if ( WPCOM_Token_Subscription_Service::available() ) { + return new WPCOM_Token_Subscription_Service(); + } + + if ( Jetpack_Token_Subscription_Service::available() ) { + return new Jetpack_Token_Subscription_Service(); + } + + return new Unconfigured_Subscription_Service(); +} +add_filter( PAYWALL_FILTER, 'Automattic\Jetpack\Extensions\Premium_Content\default_service' ); |