PluginProbe
Jetpack – WP Security, Backup, Speed, & Growth / 16.3-a.7
Jetpack – WP Security, Backup, Speed, & Growth v16.3-a.7
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 13.7.2 13.8.3 All 506 releases
← All changes | extensions/blocks/premium-content/_inc/subscription-service/include.php +18 -10 13.2.4 → 16.3-a.7 View file →
@@ -6,8 +6,17 @@
6 6 */
7 7
8 8 namespace Automattic\Jetpack\Extensions\Premium_Content;
9 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 +
10 19 require_once __DIR__ . '/class-jwt.php';
11 20 require_once __DIR__ . '/interface-subscription-service.php';
12 21 require_once __DIR__ . '/class-abstract-token-subscription-service.php';
13 22 require_once __DIR__ . '/class-jetpack-token-subscription-service.php';
@@ -14,12 +23,8 @@
14 23 require_once __DIR__ . '/class-wpcom-online-subscription-service.php';
15 24 require_once __DIR__ . '/class-wpcom-offline-subscription-service.php';
16 25 require_once __DIR__ . '/class-unconfigured-subscription-service.php';
17 26
18 -use Automattic\Jetpack\Extensions\Premium_Content\Subscription_Service\Jetpack_Token_Subscription_Service;
19 -use Automattic\Jetpack\Extensions\Premium_Content\Subscription_Service\Unconfigured_Subscription_Service;
20 -use Automattic\Jetpack\Extensions\Premium_Content\Subscription_Service\WPCOM_Online_Subscription_Service;
21 -
22 27 const PAYWALL_FILTER = 'earn_premium_content_subscription_service';
23 28
24 29 /**
25 30 * Initializes the premium content subscription service.
@@ -34,11 +39,12 @@
34 39
35 40 /**
36 41 * Gets the service handling the premium content subscriptions.
37 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.
38 44 * @return Subscription_Service Service that will handle the premium content subscriptions.
39 45 */
40 -function subscription_service() {
46 +function subscription_service( $user_id = null ) {
41 47 /**
42 48 * Filter the Jetpack_Token_Subscription_Service class.
43 49 *
44 50 * @since 9.4.0
@@ -44,9 +50,9 @@
44 50 * @since 9.4.0
45 51 *
46 52 * @param null|Jetpack_Token_Subscription_Service $interface Registered Subscription_Service.
47 53 */
48 - $interface = apply_filters( PAYWALL_FILTER, null );
54 + $interface = apply_filters( PAYWALL_FILTER, null, $user_id );
49 55 if ( ! $interface instanceof Jetpack_Token_Subscription_Service ) {
50 56 _doing_it_wrong( __FUNCTION__, 'No Subscription_Service registered for the ' . esc_html( PAYWALL_FILTER ) . ' filter', 'jetpack' );
51 57 }
52 58 return $interface;
@@ -55,19 +61,21 @@
55 61 /**
56 62 * Gets the default service handling the premium content.
57 63 *
58 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.
59 66 * @return Subscription_Service Service that will handle the premium content.
60 67 */
61 -function default_service( $service ) {
68 +function default_service( $service, $user_id = null ) {
62 69 if ( null !== $service ) {
63 70 return $service;
64 71 }
65 72
66 73 // Prefer to use the WPCOM_Online_Subscription_Service if this code is executing on WPCOM.
67 - if ( WPCOM_Online_Subscription_Service::available() ) {
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 ) {
68 76 // Return the WPCOM Online subscription service when we are on WPCOM.
69 - return new WPCOM_Online_Subscription_Service();
77 + return new WPCOM_Online_Subscription_Service( $user_id );
70 78 }
71 79
72 80 // Fallback on using the Jetpack_Token_Subscription_Service if this is not executing on WPCOM but is executing on a Jetpack site.
73 81 if ( Jetpack_Token_Subscription_Service::available() ) {
@@ -77,5 +85,5 @@
77 85
78 86 // Return an Unconfigured Subscription Service if this is not a WPCOM or Jetpack site or if both of those services are not available.
79 87 return new Unconfigured_Subscription_Service();
80 88 }
81 -add_filter( PAYWALL_FILTER, 'Automattic\Jetpack\Extensions\Premium_Content\default_service' );
89 +add_filter( PAYWALL_FILTER, 'Automattic\Jetpack\Extensions\Premium_Content\default_service', 10, 2 );