PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 16.2-a.1
Jetpack – WP Security, Backup, Speed, & Growth v16.2-a.1
16.1.2 16.2-a.1 16.1.1 16.1 16.1-beta 16.1-beta.2 16.1-beta.3 16.1-a.5 16.1-a.3 16.0.1 16.1-a.1 16.0 16.0-beta 16.0-a.7 16.0-a.5 15.9.1 16.0-a.3 16.0-a.1 15.9 15.9-beta 15.9-a.7 15.9-a.5 15.9-a.3 15.9-a.1 15.8 15.8-beta 15.8-a.7 15.8-a.5 5.2.5 5.3.4 5.4.4 5.5.5 5.6.5 5.7.5 5.8.4 5.9.4 6.0.4 6.1 6.1.1 6.1.2 6.1.3 6.1.4 6.1.5 6.2 6.2.1 6.2.2 6.2.3 6.2.4 6.2.5 6.3 6.3.1 6.3.2 6.3.3 6.3.4 6.3.5 6.3.6 6.3.7 6.4 6.4.1 6.4.2 6.4.3 6.4.4 6.4.5 6.4.6 6.5 6.5.1 6.5.2 6.5.3 6.5.4 6.6 6.6.1 6.6.2 6.6.3 6.6.4 6.6.5 6.7 6.7.1 6.7.2 6.7.3 6.7.4 6.8 6.8.1 6.8.2 6.8.3 6.8.4 6.8.5 6.9 6.9.1 6.9.2 6.9.3 6.9.4 7.0 7.0.1 7.0.2 7.0.3 7.0.4 7.0.5 7.1 7.1.1 7.1.2 7.1.3 7.1.4 7.1.5 7.2 7.2.1 7.2.1.1 7.2.2 7.2.3 7.2.4 7.2.5 7.3 7.3.0.1 7.3.1 7.3.1.1 7.3.2 7.3.3 7.3.4 7.3.5 7.4 7.4.1 7.4.2 7.4.3 7.4.4 7.4.5 7.5 7.5.0.1 7.5.1 7.5.2 7.5.3 7.5.4 7.5.5 7.5.6 7.5.7 7.6 7.6.1 7.6.2 7.6.3 7.6.4 7.7 7.7.1 7.7.2 7.7.3 7.7.4 7.7.5 7.7.6 7.8 7.8.1 7.8.2 7.8.3 7.8.4 7.9 7.9.1 7.9.2 7.9.3 7.9.4 8.0 8.0.1 8.0.2 8.0.3 8.1 8.1.1 8.1.2 8.1.3 8.1.4 8.2 8.2.0.1 8.2.1 8.2.2 8.2.3 8.2.4 8.2.5 8.2.6 8.3 8.3.1 8.3.2 8.3.3 8.4 8.4.1 8.4.2 8.4.3 8.4.4 8.4.5 8.5 8.5.1 8.5.2 8.5.3 8.6 8.6.1 8.6.2 8.6.3 8.6.4 8.7 8.7.0.1 8.7.1 8.7.2 8.7.3 8.7.4 8.8 8.8.1 8.8.2 8.8.3 8.8.4 8.8.5 8.9 8.9.1 8.9.2 8.9.3 8.9.4 9.0 9.0.1 9.0.2 9.0.3 9.0.4 9.0.5 9.1 9.1.1 9.1.2 9.1.3 9.2 9.2.1 9.2.2 9.2.3 9.2.4 9.3 9.3.1 9.3.2 9.3.3 9.3.4 9.3.5 9.4 9.4.1 9.4.2 9.4.3 9.4.4 9.5 9.5.1 9.5.2 9.5.3 9.5.4 9.5.5 9.6 9.6.1 9.6.2 9.6.3 9.6.4 9.7 9.7.1 9.7.2 15.7-beta.2 9.7.3 15.7.1 9.8 15.8-a.1 9.8.1 15.8-a.3 9.8.2 2.0.9 9.8.3 2.1.7 9.9 2.2.10 9.9.1 2.3.10 9.9.2 2.4.7 9.9.3 2.5.5 2.6.6 2.7.5 2.8.5 2.9.6 3.0.6 3.1.5 3.2.5 3.3.6 3.4.6 3.5.6 3.6.4 3.7.5 3.8.5 3.9.10 4.0.7 4.1.4 4.2.5 4.3.5 4.4.5 4.5.3 4.6.3 4.7.4 4.8.5 4.9.3 5.0.3 5.1.4 trunk 10.0 10.0.1 10.0.2 10.1 10.1.1 10.1.2 10.2 10.2.1 10.2.2 10.2.3 10.3 10.3.1 10.3.2 10.4 10.4.1 10.4.2 10.5 10.5.1 10.5.2 10.5.3 10.6 10.6.1 10.6.2 10.7 10.7.1 10.7.2 10.8 10.8.1 10.8.2 10.9 10.9.1 10.9.2 10.9.3 11.0 11.0.1 11.0.2 11.1 11.1.1 11.1.2 11.1.3 11.1.4 11.2 11.2.1 11.2.2 11.3 11.3.1 11.3.2 11.3.3 11.3.4 11.4 11.4.1 11.4.2 11.5 11.5.1 11.5.2 11.5.3 11.6 11.6.1 11.6.2 11.7 11.7.1 11.7.2 11.7.3 11.8 11.8.3 11.8.4 11.8.5 11.8.6 11.9 11.9.1 11.9.2 11.9.3 12.0 12.0.1 12.0.2 12.1 12.1.1 12.1.2 12.2 12.2.1 12.2.2 12.3 12.3.1 12.4 12.4.1 12.5 12.5.1 12.6 12.6.1 12.6.2 12.6.3 12.7 12.7.1 12.7.2 12.8 12.8.1 12.8.2 12.9 12.9.1 12.9.2 12.9.3 12.9.4 13.0 13.0.1 13.1 13.1.1 13.1.2 13.1.3 13.1.4 13.2 13.2.1 13.2.2 13.2.3 13.3 13.3.1 13.3.2 13.4 13.4.1 13.4.2 13.4.3 13.4.4 13.5 13.5.1 13.6 13.6.1 13.7 13.7.1 13.8 13.8.1 13.8.2 13.9 13.9.1 14.0 14.1 14.2 14.2.1 14.3 14.4 14.4.1 14.5 14.6 14.7 14.8 14.9 14.9.1 15.0 15.0.1 15.0.2 15.1 15.1.1 15.2 15.3 15.3.1 15.4 15.5 15.6 15.7 15.7-a.1 15.7-a.3 15.7-a.5 15.7-a.7 15.7-beta
jetpack / vendor / automattic / jetpack-plans / src / class-plans.php
jetpack / vendor / automattic / jetpack-plans / src Last commit date
class-current-plan.php 2 days ago class-plans.php 8 months ago
class-plans.php
112 lines
1 <?php
2 /**
3 * Plans Library
4 *
5 * Fetch plans data from WordPress.com.
6 *
7 * This file was copied and adapted from the Jetpack plugin on Mar 2022.
8 *
9 * @package automattic/jetpack-plans
10 */
11
12 namespace Automattic\Jetpack;
13
14 use Store_Product_List;
15
16 /**
17 * Fetch data about available Plans from WordPress.com
18 */
19 class Plans {
20 /**
21 * Get a list of all available plans from WordPress.com
22 *
23 * @since-jetpack 7.7.0
24 *
25 * @return array The plans list
26 */
27 public static function get_plans() {
28 if ( defined( 'IS_WPCOM' ) && IS_WPCOM ) {
29 if ( ! class_exists( 'Store_Product_List' ) ) {
30 require WP_CONTENT_DIR . '/admin-plugins/wpcom-billing/store-product-list.php';
31 }
32
33 return Store_Product_List::api_only_get_active_plans_v1_4();
34 }
35
36 // We're on Jetpack, so it's safe to use this namespace.
37 $request = \Automattic\Jetpack\Connection\Client::wpcom_json_api_request_as_user(
38 '/plans?_locale=' . get_user_locale(),
39 // We're using version 1.5 of the endpoint rather than the default version 2
40 // since the latter only returns Jetpack Plans, but we're also interested in
41 // WordPress.com plans, for consumers of this method that run on WP.com.
42 '1.5',
43 array(
44 'method' => 'GET',
45 'headers' => array(
46 'X-Forwarded-For' => ( new \Automattic\Jetpack\Status\Visitor() )->get_ip( true ),
47 ),
48 ),
49 null,
50 'rest'
51 );
52
53 $body = wp_remote_retrieve_body( $request );
54 if ( 200 === wp_remote_retrieve_response_code( $request ) ) {
55 return json_decode( $body );
56 } else {
57 return $body;
58 }
59 }
60
61 /**
62 * Get plan information for a plan given its slug
63 *
64 * @since-jetpack 7.7.0
65 *
66 * @param string $plan_slug Plan slug.
67 *
68 * @return object The plan object
69 */
70 public static function get_plan( $plan_slug ) {
71 $plans = self::get_plans();
72 if ( ! is_array( $plans ) ) {
73 return;
74 }
75
76 foreach ( $plans as $plan ) {
77 if ( $plan_slug === $plan->product_slug ) {
78 return $plan;
79 }
80 }
81 }
82
83 /**
84 * Efficiently get the short name of a plan from a slug.
85 *
86 * @param string $plan_slug Plan slug.
87 * @return string|null Short product name or null if not round.
88 */
89 public static function get_plan_short_name( $plan_slug ) {
90 if ( defined( 'IS_WPCOM' ) && IS_WPCOM ) {
91 if ( ! class_exists( 'Store_Product_List' ) ) {
92 require WP_CONTENT_DIR . '/admin-plugins/wpcom-billing/store-product-list.php';
93 }
94
95 // Skip additional work like processing of coupons, since we only need the plan's short name.
96 $products = Store_Product_List::get();
97
98 foreach ( $products as $product ) {
99 if ( isset( $product['product_slug'] ) && $product['product_slug'] === $plan_slug ) {
100 return $product['product_name_short'] ?? null;
101 }
102 }
103
104 return null;
105 }
106
107 // Fallback to less efficient method for Jetpack environments.
108 $plan = self::get_plan( $plan_slug );
109 return $plan->product_name_short ?? null;
110 }
111 }
112