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 / jetpack_vendor / automattic / jetpack-connection / src / class-partner.php
jetpack / jetpack_vendor / automattic / jetpack-connection / src Last commit date
abilities 2 days ago connectors 2 days ago health 2 days ago identity-crisis 1 month ago sso 1 month ago traits 8 months ago webhooks 8 months ago class-authorize-json-api.php 1 month ago class-client.php 2 days ago class-connection-assets.php 1 year ago class-connection-notice.php 8 months ago class-error-handler.php 2 days ago class-external-storage.php 4 months ago class-heartbeat.php 1 month ago class-initial-state.php 3 weeks ago class-manager.php 2 days ago class-nonce-handler.php 8 months ago class-package-version-tracker.php 1 month ago class-package-version.php 2 days ago class-partner-coupon.php 2 months ago class-partner.php 2 years ago class-plugin-storage.php 8 months ago class-plugin.php 8 months ago class-rest-authentication.php 2 days ago class-rest-connector.php 2 days ago class-secrets.php 8 months ago class-server-sandbox.php 2 months ago class-site-health.php 2 days ago class-terms-of-service.php 2 days ago class-tokens-locks.php 8 months ago class-tokens.php 2 days ago class-tracking.php 2 days ago class-urls.php 6 months ago class-user-account-status.php 2 days ago class-users-connection-admin.php 2 months ago class-utils.php 2 years ago class-webhooks.php 1 month ago class-xmlrpc-async-call.php 2 years ago class-xmlrpc-connector.php 8 months ago interface-manager.php 4 years ago interface-storage-provider.php 6 months ago
class-partner.php
216 lines
1 <?php
2 /**
3 * Jetpack Partner utilities.
4 *
5 * @package automattic/jetpack-connection
6 */
7
8 namespace Automattic\Jetpack;
9
10 /**
11 * This class introduces functionality used by Jetpack hosting partners.
12 *
13 * @since partner-1.0.0
14 * @since 2.0.0
15 */
16 class Partner {
17
18 /**
19 * Affiliate code.
20 */
21 const AFFILIATE_CODE = 'affiliate';
22
23 /**
24 * Subsidiary id code.
25 */
26 const SUBSIDIARY_CODE = 'subsidiary';
27
28 /**
29 * Singleton instance.
30 *
31 * @since partner-1.0.0
32 * @since 2.0.0
33 *
34 * @var Partner This class instance.
35 */
36 private static $instance = null;
37
38 /**
39 * Partner constructor.
40 */
41 private function __construct() {
42 }
43
44 /**
45 * Initializes the class or returns the singleton.
46 *
47 * @since partner-1.0.0
48 * @since 2.0.0
49 *
50 * @return Partner | false
51 */
52 public static function init() {
53 if ( self::$instance === null ) {
54 self::$instance = new Partner();
55 add_filter( 'jetpack_build_authorize_url', array( self::$instance, 'add_subsidiary_id_as_query_arg' ) );
56 add_filter( 'jetpack_build_authorize_url', array( self::$instance, 'add_affiliate_code_as_query_arg' ) );
57 add_filter( 'jetpack_build_connection_url', array( self::$instance, 'add_subsidiary_id_as_query_arg' ) );
58 add_filter( 'jetpack_build_connection_url', array( self::$instance, 'add_affiliate_code_as_query_arg' ) );
59
60 add_filter( 'jetpack_register_request_body', array( self::$instance, 'add_subsidiary_id_to_params_array' ) );
61 add_filter( 'jetpack_register_request_body', array( self::$instance, 'add_affiliate_code_to_params_array' ) );
62 }
63
64 return self::$instance;
65 }
66
67 /**
68 * Adds the partner subsidiary code to the passed URL.
69 *
70 * @param string $url The URL.
71 *
72 * @return string
73 */
74 public function add_subsidiary_id_as_query_arg( $url ) {
75 return $this->add_code_as_query_arg( self::SUBSIDIARY_CODE, $url );
76 }
77
78 /**
79 * Adds the affiliate code to the passed URL.
80 *
81 * @param string $url The URL.
82 *
83 * @return string
84 */
85 public function add_affiliate_code_as_query_arg( $url ) {
86 return $this->add_code_as_query_arg( self::AFFILIATE_CODE, $url );
87 }
88
89 /**
90 * Adds the partner subsidiary code to the passed array.
91 *
92 * @since partner-1.5.0
93 * @since 2.0.0
94 *
95 * @param array $params The parameters array.
96 *
97 * @return array
98 */
99 public function add_subsidiary_id_to_params_array( $params ) {
100 if ( ! is_array( $params ) ) {
101 return $params;
102 }
103 return array_merge( $params, $this->get_code_as_array( self::SUBSIDIARY_CODE ) );
104 }
105
106 /**
107 * Adds the affiliate code to the passed array.
108 *
109 * @since partner-1.5.0
110 * @since 2.0.0
111 *
112 * @param array $params The parameters array.
113 *
114 * @return array
115 */
116 public function add_affiliate_code_to_params_array( $params ) {
117 if ( ! is_array( $params ) ) {
118 return $params;
119 }
120 return array_merge( $params, $this->get_code_as_array( self::AFFILIATE_CODE ) );
121 }
122
123 /**
124 * Returns the passed URL with the partner code added as a URL query arg.
125 *
126 * @since partner-1.0.0
127 * @since 2.0.0
128 *
129 * @param string $type The partner code.
130 * @param string $url The URL where the partner subsidiary id will be added.
131 *
132 * @return string The passed URL with the partner code added.
133 */
134 public function add_code_as_query_arg( $type, $url ) {
135 return add_query_arg( $this->get_code_as_array( $type ), $url );
136 }
137
138 /**
139 * Gets the partner code in an associative array format
140 *
141 * @since partner-1.5.0
142 * @since 2.0.0
143 *
144 * @param string $type The partner code.
145 * @return array
146 */
147 private function get_code_as_array( $type ) {
148 switch ( $type ) {
149 case self::AFFILIATE_CODE:
150 $query_arg_name = 'aff';
151 break;
152 case self::SUBSIDIARY_CODE:
153 $query_arg_name = 'subsidiaryId';
154 break;
155 default:
156 return array();
157 }
158
159 $code = $this->get_partner_code( $type );
160
161 if ( '' === $code ) {
162 return array();
163 }
164
165 return array( $query_arg_name => $code );
166 }
167
168 /**
169 * Returns a partner code.
170 *
171 * @since partner-1.0.0
172 * @since 2.0.0
173 *
174 * @param string $type This can be either 'affiliate' or 'subsidiary'. Returns empty string when code is unknown.
175 *
176 * @return string The partner code.
177 */
178 public function get_partner_code( $type ) {
179 switch ( $type ) {
180 case self::AFFILIATE_CODE:
181 /**
182 * Allow to filter the affiliate code.
183 *
184 * @since partner-1.0.0
185 * @since-jetpack 6.9.0
186 * @since 2.0.0
187 *
188 * @param string $affiliate_code The affiliate code, blank by default.
189 */
190 return apply_filters( 'jetpack_affiliate_code', get_option( 'jetpack_affiliate_code', '' ) );
191 case self::SUBSIDIARY_CODE:
192 /**
193 * Allow to filter the partner subsidiary id.
194 *
195 * @since partner-1.0.0
196 * @since 2.0.0
197 *
198 * @param string $subsidiary_id The partner subsidiary id, blank by default.
199 */
200 return apply_filters(
201 'jetpack_partner_subsidiary_id',
202 get_option( 'jetpack_partner_subsidiary_id', '' )
203 );
204 default:
205 return '';
206 }
207 }
208
209 /**
210 * Resets the singleton for testing purposes.
211 */
212 public static function reset() {
213 self::$instance = null;
214 }
215 }
216