PluginProbe
Jetpack – WP Security, Backup, Speed, & Growth / 16.3
Jetpack – WP Security, Backup, Speed, & Growth v16.3
16.3 16.3-beta 16.3-a.5 16.3-a.7 16.3-a.3 16.3-a.1 16.2 16.2-beta 12.0.3 12.1.3 12.2.3 12.3.2 12.4.2 12.5.2 12.6.4 12.7.3 12.8.3 12.9.5 13.0.2 13.1.5 13.2.4 13.3.3 13.4.5 13.5.2 13.6.2 All 508 releases
← All changes | extensions/blocks/premium-content/_inc/subscription-service/include.php +89 -0 16.2-beta → 16.3 View file →
@@ -1,0 +1,89 @@
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 +use Automattic\Jetpack\Extensions\Premium_Content\Subscription_Service\Jetpack_Token_Subscription_Service;
11 +use Automattic\Jetpack\Extensions\Premium_Content\Subscription_Service\Subscription_Service;
12 +use Automattic\Jetpack\Extensions\Premium_Content\Subscription_Service\Unconfigured_Subscription_Service;
13 +use Automattic\Jetpack\Extensions\Premium_Content\Subscription_Service\WPCOM_Online_Subscription_Service;
14 +
15 +if ( ! defined( 'ABSPATH' ) ) {
16 + exit( 0 );
17 +}
18 +
19 +require_once __DIR__ . '/class-jwt.php';
20 +require_once __DIR__ . '/interface-subscription-service.php';
21 +require_once __DIR__ . '/class-abstract-token-subscription-service.php';
22 +require_once __DIR__ . '/class-jetpack-token-subscription-service.php';
23 +require_once __DIR__ . '/class-wpcom-online-subscription-service.php';
24 +require_once __DIR__ . '/class-wpcom-offline-subscription-service.php';
25 +require_once __DIR__ . '/class-unconfigured-subscription-service.php';
26 +
27 +const PAYWALL_FILTER = 'earn_premium_content_subscription_service';
28 +
29 +/**
30 + * Initializes the premium content subscription service.
31 + */
32 +function paywall_initialize() {
33 + $paywall = subscription_service();
34 + if ( $paywall ) {
35 + $paywall->initialize();
36 + }
37 +}
38 +add_action( 'init', 'Automattic\Jetpack\Extensions\Premium_Content\paywall_initialize', 9 );
39 +
40 +/**
41 + * Gets the service handling the premium content subscriptions.
42 + *
43 + * @param int|null $user_id An optional user_id to query subscriptions against. Uses token from request/cookie or logged-in user information if omitted.
44 + * @return Subscription_Service Service that will handle the premium content subscriptions.
45 + */
46 +function subscription_service( $user_id = null ) {
47 + /**
48 + * Filter the Jetpack_Token_Subscription_Service class.
49 + *
50 + * @since 9.4.0
51 + *
52 + * @param null|Jetpack_Token_Subscription_Service $interface Registered Subscription_Service.
53 + */
54 + $interface = apply_filters( PAYWALL_FILTER, null, $user_id );
55 + if ( ! $interface instanceof Jetpack_Token_Subscription_Service ) {
56 + _doing_it_wrong( __FUNCTION__, 'No Subscription_Service registered for the ' . esc_html( PAYWALL_FILTER ) . ' filter', 'jetpack' );
57 + }
58 + return $interface;
59 +}
60 +
61 +/**
62 + * Gets the default service handling the premium content.
63 + *
64 + * @param Subscription_Service $service If set, this service will be used by default.
65 + * @param int|null $user_id An optional user_id to query subscriptions against. Uses token from request/cookie or logged-in user information if omitted.
66 + * @return Subscription_Service Service that will handle the premium content.
67 + */
68 +function default_service( $service, $user_id = null ) {
69 + if ( null !== $service ) {
70 + return $service;
71 + }
72 +
73 + // Prefer to use the WPCOM_Online_Subscription_Service if this code is executing on WPCOM.
74 + $wpcom_available_but_user_is_not_logged_in = defined( 'IS_WPCOM' ) && IS_WPCOM && ! is_user_logged_in() && ! empty( $user_id );
75 + if ( WPCOM_Online_Subscription_Service::available() || $wpcom_available_but_user_is_not_logged_in ) {
76 + // Return the WPCOM Online subscription service when we are on WPCOM.
77 + return new WPCOM_Online_Subscription_Service( $user_id );
78 + }
79 +
80 + // Fallback on using the Jetpack_Token_Subscription_Service if this is not executing on WPCOM but is executing on a Jetpack site.
81 + if ( Jetpack_Token_Subscription_Service::available() ) {
82 + // Return the Jetpack Token Subscription Service when it is available.
83 + return new Jetpack_Token_Subscription_Service();
84 + }
85 +
86 + // Return an Unconfigured Subscription Service if this is not a WPCOM or Jetpack site or if both of those services are not available.
87 + return new Unconfigured_Subscription_Service();
88 +}
89 +add_filter( PAYWALL_FILTER, 'Automattic\Jetpack\Extensions\Premium_Content\default_service', 10, 2 );