<?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' );