← All changes
|
extensions/blocks/premium-content/_inc/subscription-service/include.php
+26
-20
12.3.2
→
16.3-a.7
View file →
| @@ -6,23 +6,25 @@ | ||
| 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 | -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'; | |
| 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'; | |
| 15 | 23 | require_once __DIR__ . '/class-wpcom-online-subscription-service.php'; |
| 16 | 24 | require_once __DIR__ . '/class-wpcom-offline-subscription-service.php'; |
| 17 | -require_once __DIR__ . '/class-jetpack-token-subscription-service.php'; | |
| 18 | 25 | require_once __DIR__ . '/class-unconfigured-subscription-service.php'; |
| 19 | 26 | |
| 20 | -use Automattic\Jetpack\Extensions\Premium_Content\Subscription_Service\Jetpack_Token_Subscription_Service; | |
| 21 | -use Automattic\Jetpack\Extensions\Premium_Content\Subscription_Service\Unconfigured_Subscription_Service; | |
| 22 | -use Automattic\Jetpack\Extensions\Premium_Content\Subscription_Service\WPCOM_Online_Subscription_Service; | |
| 23 | -use Automattic\Jetpack\Extensions\Premium_Content\Subscription_Service\WPCOM_Token_Subscription_Service; | |
| 24 | - | |
| 25 | 27 | const PAYWALL_FILTER = 'earn_premium_content_subscription_service'; |
| 26 | 28 | |
| 27 | 29 | /** |
| 28 | 30 | * Initializes the premium content subscription service. |
| @@ -37,11 +39,12 @@ | ||
| 37 | 39 | |
| 38 | 40 | /** |
| 39 | 41 | * Gets the service handling the premium content subscriptions. |
| 40 | 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. | |
| 41 | 44 | * @return Subscription_Service Service that will handle the premium content subscriptions. |
| 42 | 45 | */ |
| 43 | -function subscription_service() { | |
| 46 | +function subscription_service( $user_id = null ) { | |
| 44 | 47 | /** |
| 45 | 48 | * Filter the Jetpack_Token_Subscription_Service class. |
| 46 | 49 | * |
| 47 | 50 | * @since 9.4.0 |
| @@ -47,9 +50,9 @@ | ||
| 47 | 50 | * @since 9.4.0 |
| 48 | 51 | * |
| 49 | 52 | * @param null|Jetpack_Token_Subscription_Service $interface Registered Subscription_Service. |
| 50 | 53 | */ |
| 51 | - $interface = apply_filters( PAYWALL_FILTER, null ); | |
| 54 | + $interface = apply_filters( PAYWALL_FILTER, null, $user_id ); | |
| 52 | 55 | if ( ! $interface instanceof Jetpack_Token_Subscription_Service ) { |
| 53 | 56 | _doing_it_wrong( __FUNCTION__, 'No Subscription_Service registered for the ' . esc_html( PAYWALL_FILTER ) . ' filter', 'jetpack' ); |
| 54 | 57 | } |
| 55 | 58 | return $interface; |
| @@ -58,26 +61,29 @@ | ||
| 58 | 61 | /** |
| 59 | 62 | * Gets the default service handling the premium content. |
| 60 | 63 | * |
| 61 | 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. | |
| 62 | 66 | * @return Subscription_Service Service that will handle the premium content. |
| 63 | 67 | */ |
| 64 | -function default_service( $service ) { | |
| 68 | +function default_service( $service, $user_id = null ) { | |
| 65 | 69 | if ( null !== $service ) { |
| 66 | 70 | return $service; |
| 67 | 71 | } |
| 68 | 72 | |
| 69 | - if ( WPCOM_Online_Subscription_Service::available() ) { | |
| 70 | - return new WPCOM_Online_Subscription_Service(); | |
| 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 ); | |
| 71 | 78 | } |
| 72 | 79 | |
| 73 | - if ( WPCOM_Token_Subscription_Service::available() ) { | |
| 74 | - return new WPCOM_Token_Subscription_Service(); | |
| 75 | - } | |
| 76 | - | |
| 80 | + // Fallback on using the Jetpack_Token_Subscription_Service if this is not executing on WPCOM but is executing on a Jetpack site. | |
| 77 | 81 | if ( Jetpack_Token_Subscription_Service::available() ) { |
| 82 | + // Return the Jetpack Token Subscription Service when it is available. | |
| 78 | 83 | return new Jetpack_Token_Subscription_Service(); |
| 79 | 84 | } |
| 80 | 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. | |
| 81 | 87 | return new Unconfigured_Subscription_Service(); |
| 82 | 88 | } |
| 83 | -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 ); | |