Completed
Push — update/anchor-fm-checks-spotif... ( f9835e...28fd2e )
by
unknown
234:35 queued 224:59
created

include.php ➔ paywall_initialize()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
nc 2
nop 0
dl 0
loc 6
rs 10
c 0
b 0
f 0
1
<?php
2
/**
3
 * Subcription service includes to build out the service.
4
 *
5
 * @package Automattic\Jetpack\Extensions\Premium_Content
6
 */
7
8
namespace Automattic\Jetpack\Extensions\Premium_Content;
9
10
require_once __DIR__ . '/class-jwt.php';
11
require_once __DIR__ . '/class-subscription-service.php';
12
require_once __DIR__ . '/class-token-subscription.php';
13
require_once __DIR__ . '/class-token-subscription-service.php';
14
require_once __DIR__ . '/class-wpcom-token-subscription-service.php';
15
require_once __DIR__ . '/class-wpcom-offline-subscription-service.php';
16
require_once __DIR__ . '/class-jetpack-token-subscription-service.php';
17
require_once __DIR__ . '/class-unconfigured-subscription-service.php';
18
19
use Automattic\Jetpack\Extensions\Premium_Content\Subscription_Service\Jetpack_Token_Subscription_Service;
20
use Automattic\Jetpack\Extensions\Premium_Content\Subscription_Service\Unconfigured_Subscription_Service;
21
use Automattic\Jetpack\Extensions\Premium_Content\Subscription_Service\WPCOM_Offline_Subscription_Service;
22
use Automattic\Jetpack\Extensions\Premium_Content\Subscription_Service\WPCOM_Token_Subscription_Service;
23
24
const PAYWALL_FILTER = 'earn_premium_content_subscription_service';
25
26
/**
27
 * Initializes the premium content subscription service.
28
 */
29
function paywall_initialize() {
30
	$paywall = subscription_service();
31
	if ( $paywall ) {
32
		$paywall->initialize();
33
	}
34
}
35
add_action( 'init', 'Automattic\Jetpack\Extensions\Premium_Content\paywall_initialize', 9 );
36
37
/**
38
 * Gets the service handling the premium content subscriptions.
39
 *
40
 * @return Subscription_Service Service that will handle the premium content subscriptions.
41
 */
42
function subscription_service() {
43
	/**
44
	 * Filter the Jetpack_Token_Subscription_Service class.
45
	 *
46
	 * @since 9.4.0
47
	 *
48
	 * @param null|Jetpack_Token_Subscription_Service $interface Registered Subscription_Service.
49
	 */
50
	$interface = apply_filters( PAYWALL_FILTER, null );
51
	if ( ! $interface instanceof Jetpack_Token_Subscription_Service ) {
52
		_doing_it_wrong( __FUNCTION__, 'No Subscription_Service registered for the ' . esc_html( PAYWALL_FILTER ) . ' filter', 'jetpack' );
53
	}
54
	return $interface;
55
}
56
57
/**
58
 * Gets the default service handling the premium content.
59
 *
60
 * @param  Subscription_Service $service If set, this service will be used by default.
61
 * @return Subscription_Service Service that will handle the premium content.
62
 */
63
function default_service( $service ) {
64
	if ( null !== $service ) {
65
		return $service;
66
	}
67
68
	if ( WPCOM_Offline_Subscription_Service::available() ) {
69
		return new WPCOM_Offline_Subscription_Service();
70
	}
71
72
	if ( WPCOM_Token_Subscription_Service::available() ) {
73
		return new WPCOM_Token_Subscription_Service();
74
	}
75
76
	if ( Jetpack_Token_Subscription_Service::available() ) {
77
		return new Jetpack_Token_Subscription_Service();
78
	}
79
80
	return new Unconfigured_Subscription_Service();
81
}
82
add_filter( PAYWALL_FILTER, 'Automattic\Jetpack\Extensions\Premium_Content\default_service' );
83