summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
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.php82
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' );