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
|
|
|
|