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