forked from Automattic/jetpack
-
Notifications
You must be signed in to change notification settings - Fork 0
/
class.jetpack-client-server.php
120 lines (103 loc) · 3.19 KB
/
class.jetpack-client-server.php
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
<?php
use Automattic\Jetpack\Connection\Client;
use Automattic\Jetpack\Connection\Manager as Connection_Manager;
use Automattic\Jetpack\Connection\Utils as Connection_Utils;
use Automattic\Jetpack\Roles;
use Automattic\Jetpack\Tracking;
/**
* Client = Plugin
* Client Server = API Methods the Plugin must respond to
*/
class Jetpack_Client_Server {
/**
* Authorizations
*/
function client_authorize() {
$data = stripslashes_deep( $_GET );
$data['auth_type'] = 'client';
$roles = new Roles();
$role = $roles->translate_current_user_to_role();
$redirect = isset( $data['redirect'] ) ? esc_url_raw( (string) $data['redirect'] ) : '';
check_admin_referer( "jetpack-authorize_{$role}_{$redirect}" );
$tracking = new Tracking();
$manager = new Connection_Manager();
$result = $manager->authorize( $data );
if ( is_wp_error( $result ) ) {
Jetpack::state( 'error', $result->get_error_code() );
$tracking->record_user_event(
'jpc_client_authorize_fail',
array(
'error_code' => $result->get_error_code(),
'error_message' => $result->get_error_message(),
)
);
} else {
/**
* Fires after the Jetpack client is authorized to communicate with WordPress.com.
*
* @since 4.2.0
*
* @param int Jetpack Blog ID.
*/
do_action( 'jetpack_client_authorized', Jetpack_Options::get_option( 'id' ) );
}
if ( wp_validate_redirect( $redirect ) ) {
// Exit happens below in $this->do_exit()
wp_safe_redirect( $redirect );
} else {
// Exit happens below in $this->do_exit()
wp_safe_redirect( Jetpack::admin_url() );
}
$tracking->record_user_event( 'jpc_client_authorize_success' );
$this->do_exit();
}
/*
* @deprecated 8.0 Use Automattic\Jetpack\Connection\Manager::authorize() instead.
*/
function authorize( $data = array() ) {
_deprecated_function( __METHOD__, 'jetpack-8.0', 'Automattic\\Jetpack\\Connection\\Manager::authorize' );
$manager = new Connection_Manager();
return $manager->authorize( $data );
}
public static function deactivate_plugin( $probable_file, $probable_title ) {
include_once ABSPATH . 'wp-admin/includes/plugin.php';
if ( is_plugin_active( $probable_file ) ) {
deactivate_plugins( $probable_file );
return 1;
} else {
// If the plugin is not in the usual place, try looking through all active plugins.
$active_plugins = Jetpack::get_active_plugins();
foreach ( $active_plugins as $plugin ) {
$data = get_plugin_data( WP_PLUGIN_DIR . '/' . $plugin );
if ( $data['Name'] == $probable_title ) {
deactivate_plugins( $plugin );
return 1;
}
}
}
return 0;
}
/**
* @deprecated since 8.0.0 Use Automattic\Jetpack\Connection\Manager::get_token() instead.
*
* @return object|WP_Error
*/
function get_token( $data ) {
_deprecated_function( __METHOD__, 'jetpack-8.0', 'Automattic\\Jetpack\\Connection\\Manager\\get_token' );
return Jetpack::connection()->get_token( $data );
}
/**
* Returns an instance of the Jetpack object.
*
* @return Automattic\Jetpack
*/
public function get_jetpack() {
return Jetpack::init();
}
/**
* Kills the current process.
*/
public function do_exit() {
exit;
}
}