class-wc-connect-jetpack.php
5.34 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
<?php
use Automattic\Jetpack\Connection\Tokens;
use Automattic\Jetpack\Connection\Manager;
if ( ! class_exists( 'WC_Connect_Jetpack' ) ) {
class WC_Connect_Jetpack {
/**
* @param $user_id
*
* @return stdClass|WP_Error
*/
public static function get_master_user_access_token( $user_id ) {
if ( class_exists( '\Automattic\Jetpack\Connection\Tokens' ) && method_exists( '\Automattic\Jetpack\Connection\Tokens', 'get_access_token' ) ) {
$connection = new Tokens();
return $connection->get_access_token( $user_id );
}
if ( class_exists( '\Automattic\Jetpack\Connection\Manager' ) && method_exists( '\Automattic\Jetpack\Connection\Manager', 'get_access_token' ) ) {
$connection = new Manager();
return $connection->get_access_token( $user_id );
}
// fallback
return new stdClass();
}
/**
* Helper method to get if Jetpack is in development mode
*
* @return bool
*/
public static function is_development_mode() {
if ( method_exists( '\\Automattic\\Jetpack\\Status', 'is_offline_mode' ) ) {
$status = new \Automattic\Jetpack\Status();
return $status->is_offline_mode();
}
return false;
}
/**
* Helper method to get if Jetpack is connected (aka active)
*
* @return bool
*/
public static function is_active() {
if ( defined( 'WOOCOMMERCE_SERVICES_LOCAL_TEST_MODE' ) && WOOCOMMERCE_SERVICES_LOCAL_TEST_MODE ) {
return true;
}
if ( method_exists( 'Jetpack', 'is_active' ) ) {
return Jetpack::is_active();
}
return false;
}
/**
* Helper method to get if the current Jetpack website is marked as staging
*
* @return bool
*/
public static function is_staging_site() {
if ( method_exists( '\\Automattic\\Jetpack\\Status', 'is_staging_site' ) ) {
$status = new \Automattic\Jetpack\Status();
return $status->is_staging_site();
}
if ( method_exists( 'Jetpack', 'is_staging_site' ) ) {
return Jetpack::is_staging_site();
}
return false;
}
/**
* Helper method to get whether the current site is an Atomic site
*
* @return bool
*/
public static function is_atomic_site() {
if ( function_exists( 'jetpack_is_atomic_site' ) ) {
return jetpack_is_atomic_site();
} elseif ( function_exists( 'jetpack_is_automated_transfer_site' ) ) {
return jetpack_is_automated_transfer_site();
}
return false;
}
public static function get_connected_user_data( $user_id ) {
if ( class_exists( '\Automattic\Jetpack\Connection\Manager' ) && method_exists( '\Automattic\Jetpack\Connection\Manager', 'get_connected_user_data' ) ) {
$connection = new Manager();
return $connection->get_connected_user_data( $user_id );
}
if ( method_exists( 'Jetpack', 'get_connected_user_data' ) ) {
return Jetpack::get_connected_user_data( $user_id );
}
return false;
}
/**
* Helper method to get the Jetpack master user, IF we are connected
*
* @return WP_User | false
*/
public static function get_master_user() {
include_once ABSPATH . 'wp-admin/includes/plugin.php';
if ( self::is_active() && method_exists( 'Jetpack_Options', 'get_option' ) ) {
$master_user_id = Jetpack_Options::get_option( 'master_user' );
return get_userdata( $master_user_id );
}
return false;
}
/**
* Builds a connect url
*
* @param $redirect_url
* @return string
*/
public static function build_connect_url( $redirect_url ) {
return Jetpack::init()->build_connect_url(
true,
$redirect_url,
'woocommerce-services-auto-authorize'
);
}
/**
* Records a Tracks event
*
* @param $user
* @param $event_type
* @param
*/
public static function tracks_record_event( $user, $event_type, $data ) {
if ( version_compare( JETPACK__VERSION, '7.5', '<' ) ) {
if ( function_exists( 'jetpack_tracks_record_event' ) ) {
return jetpack_tracks_record_event( $user, $event_type, $data );
}
} elseif ( class_exists( 'Automattic\\Jetpack\\Tracking' ) ) {
$tracking = new Automattic\Jetpack\Tracking();
return $tracking->tracks_record_event( $user, $event_type, $data );
}
return false;
}
/**
* Determines if the current user is connected to Jetpack
*
* @return bool Whether or nor the current user is connected to Jetpack
*/
public static function is_current_user_connected() {
if ( class_exists( '\Automattic\Jetpack\Connection\Manager' ) && method_exists( '\Automattic\Jetpack\Connection\Manager', 'is_user_connected' ) ) {
$connection = new Manager();
return $connection->is_user_connected();
}
if ( defined( 'JETPACK_MASTER_USER' ) ) {
$user_token = self::get_master_user_access_token( JETPACK_MASTER_USER );
return ( isset( $user_token->external_user_id ) && get_current_user_id() === $user_token->external_user_id );
}
return false;
}
/**
* Determines if Jetpack is connected
*
* @return bool Whether or nor Jetpack is connected
*/
public static function is_connected() {
if ( class_exists( '\Automattic\Jetpack\Connection\Manager' ) && method_exists( '\Automattic\Jetpack\Connection\Manager', 'is_connected' ) ) {
$connection = new Manager();
return $connection->is_connected();
}
if ( defined( 'JETPACK_MASTER_USER' ) ) {
$user_token = self::get_master_user_access_token( JETPACK_MASTER_USER );
return isset( $user_token->external_user_id );
}
return false;
}
}
}