PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 16.1
Jetpack – WP Security, Backup, Speed, & Growth v16.1
16.2-a.3 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 / json-endpoints / jetpack / class.jetpack-json-api-plugins-modify-v1-2-endpoint.php
jetpack / json-endpoints / jetpack Last commit date
class-jetpack-json-api-attachment-ownership-trait.php 3 months ago class-jetpack-json-api-delete-backup-helper-script-endpoint.php 3 weeks ago class-jetpack-json-api-install-backup-helper-script-endpoint.php 3 weeks ago class-jetpack-json-api-modules-list-v1-2-endpoint.php 9 months ago class.jetpack-json-api-check-capabilities-endpoint.php 9 months ago class.jetpack-json-api-core-endpoint.php 9 months ago class.jetpack-json-api-core-modify-endpoint.php 3 months ago class.jetpack-json-api-cron-endpoint.php 9 months ago class.jetpack-json-api-endpoint.php 3 weeks ago class.jetpack-json-api-get-comment-backup-endpoint.php 9 months ago class.jetpack-json-api-get-database-object-backup-endpoint.php 9 months ago class.jetpack-json-api-get-option-backup-endpoint.php 9 months ago class.jetpack-json-api-get-post-backup-endpoint.php 9 months ago class.jetpack-json-api-get-term-backup-endpoint.php 9 months ago class.jetpack-json-api-get-user-backup-endpoint.php 9 months ago class.jetpack-json-api-jps-woocommerce-connect-endpoint.php 9 months ago class.jetpack-json-api-log-endpoint.php 9 months ago class.jetpack-json-api-maybe-auto-update-endpoint.php 9 months ago class.jetpack-json-api-modules-endpoint.php 9 months ago class.jetpack-json-api-modules-get-endpoint.php 9 months ago class.jetpack-json-api-modules-list-endpoint.php 9 months ago class.jetpack-json-api-modules-modify-endpoint.php 9 months ago class.jetpack-json-api-plugins-delete-endpoint.php 9 months ago class.jetpack-json-api-plugins-endpoint.php 3 months ago class.jetpack-json-api-plugins-get-endpoint.php 9 months ago class.jetpack-json-api-plugins-install-endpoint.php 9 months ago class.jetpack-json-api-plugins-list-endpoint.php 2 months ago class.jetpack-json-api-plugins-modify-endpoint.php 9 months ago class.jetpack-json-api-plugins-modify-v1-2-endpoint.php 9 months ago class.jetpack-json-api-plugins-new-endpoint.php 3 weeks ago class.jetpack-json-api-plugins-replace-endpoint.php 3 weeks ago class.jetpack-json-api-sync-endpoint.php 3 months ago class.jetpack-json-api-themes-active-endpoint.php 9 months ago class.jetpack-json-api-themes-delete-endpoint.php 9 months ago class.jetpack-json-api-themes-endpoint.php 3 months ago class.jetpack-json-api-themes-get-endpoint.php 9 months ago class.jetpack-json-api-themes-install-endpoint.php 9 months ago class.jetpack-json-api-themes-list-endpoint.php 9 months ago class.jetpack-json-api-themes-modify-endpoint.php 9 months ago class.jetpack-json-api-themes-new-endpoint.php 3 weeks ago class.jetpack-json-api-themes-replace-endpoint.php 3 weeks ago class.jetpack-json-api-translations-endpoint.php 9 months ago class.jetpack-json-api-translations-modify-endpoint.php 9 months ago class.jetpack-json-api-updates-status-endpoint.php 3 months ago class.jetpack-json-api-user-connect-endpoint.php 9 months ago class.jetpack-json-api-user-create-endpoint.php 3 months ago class.wpcom-json-api-get-option-endpoint.php 3 months ago class.wpcom-json-api-update-option-endpoint.php 9 months ago json-api-jetpack-endpoints.php 3 months ago
class.jetpack-json-api-plugins-modify-v1-2-endpoint.php
228 lines
1 <?php // phpcs:ignore WordPress.Files.FileName.InvalidClassFileName
2
3 if ( ! defined( 'ABSPATH' ) ) {
4 exit( 0 );
5 }
6
7 new Jetpack_JSON_API_Plugins_Modify_v1_2_Endpoint(
8 array(
9 'description' => 'Activate/Deactivate a Plugin on your Jetpack Site, or set automatic updates',
10 'min_version' => '1.2',
11 'method' => 'POST',
12 'path' => '/sites/%s/plugins/%s',
13 'stat' => 'plugins:1:modify',
14 'path_labels' => array(
15 '$site' => '(int|string) The site ID, The site domain',
16 '$plugin' => '(string) The plugin ID',
17 ),
18 'request_format' => array(
19 'action' => '(string) Possible values are \'update\'',
20 'autoupdate' => '(bool) Whether or not to automatically update the plugin',
21 'active' => '(bool) Activate or deactivate the plugin',
22 'network_wide' => '(bool) Do action network wide (default value: false)',
23 ),
24 'query_parameters' => array(
25 'autoupdate' => '(bool=false) If the update is happening as a result of autoupdate event',
26 ),
27 'response_format' => Jetpack_JSON_API_Plugins_Endpoint::$_response_format_v1_2,
28 'allow_jetpack_site_auth' => true,
29 'example_request_data' => array(
30 'headers' => array(
31 'authorization' => 'Bearer YOUR_API_TOKEN',
32 ),
33 'body' => array(
34 'action' => 'update',
35 ),
36 ),
37 'example_request' => 'https://public-api.wordpress.com/rest/v1.2/sites/example.wordpress.org/plugins/hello-dolly%20hello',
38 )
39 );
40
41 new Jetpack_JSON_API_Plugins_Modify_v1_2_Endpoint(
42 array(
43 'description' => 'Activate/Deactivate a list of plugins on your Jetpack Site, or set automatic updates',
44 'min_version' => '1.2',
45 'method' => 'POST',
46 'path' => '/sites/%s/plugins',
47 'stat' => 'plugins:modify',
48 'path_labels' => array(
49 '$site' => '(int|string) The site ID, The site domain',
50 ),
51 'request_format' => array(
52 'action' => '(string) Possible values are \'update\'',
53 'autoupdate' => '(bool) Whether or not to automatically update the plugin',
54 'active' => '(bool) Activate or deactivate the plugin',
55 'network_wide' => '(bool) Do action network wide (default value: false)',
56 'plugins' => '(array) A list of plugin ids to modify',
57 ),
58 'query_parameters' => array(
59 'autoupdate' => '(bool=false) If the update is happening as a result of autoupdate event',
60 ),
61 'response_format' => array(
62 'plugins' => '(array:plugin_v1_2) An array of plugin objects.',
63 'updated' => '(array) A list of plugin ids that were updated. Only present if action is update.',
64 'not_updated' => '(array) A list of plugin ids that were not updated. Only present if action is update.',
65 'log' => '(array) Update log. Only present if action is update.',
66 ),
67 'allow_jetpack_site_auth' => true,
68 'example_request_data' => array(
69 'headers' => array(
70 'authorization' => 'Bearer YOUR_API_TOKEN',
71 ),
72 'body' => array(
73 'active' => true,
74 'plugins' => array(
75 'jetpack/jetpack',
76 'akismet/akismet',
77 ),
78 ),
79 ),
80 'example_request' => 'https://public-api.wordpress.com/rest/v1.2/sites/example.wordpress.org/plugins',
81 )
82 );
83
84 new Jetpack_JSON_API_Plugins_Modify_v1_2_Endpoint(
85 array(
86 'description' => 'Update a Plugin on your Jetpack Site',
87 'min_version' => '1.2',
88 'method' => 'POST',
89 'path' => '/sites/%s/plugins/%s/update/',
90 'stat' => 'plugins:1:update',
91 'path_labels' => array(
92 '$site' => '(int|string) The site ID, The site domain',
93 '$plugin' => '(string) The plugin ID',
94 ),
95 'query_parameters' => array(
96 'autoupdate' => '(bool=false) If the update is happening as a result of autoupdate event',
97 ),
98 'response_format' => Jetpack_JSON_API_Plugins_Endpoint::$_response_format_v1_2,
99 'allow_jetpack_site_auth' => true,
100 'example_request_data' => array(
101 'headers' => array(
102 'authorization' => 'Bearer YOUR_API_TOKEN',
103 ),
104 ),
105 'example_request' => 'https://public-api.wordpress.com/rest/v1.2/sites/example.wordpress.org/plugins/hello-dolly%20hello/update',
106 )
107 );
108
109 /**
110 * Plugins modify 1_2 Endpoint.
111 *
112 * @phan-constructor-used-for-side-effects
113 */
114 class Jetpack_JSON_API_Plugins_Modify_v1_2_Endpoint extends Jetpack_JSON_API_Plugins_Modify_Endpoint { // phpcs:ignore PEAR.NamingConventions.ValidClassName.Invalid, Generic.Classes.OpeningBraceSameLine.ContentAfterBrace
115
116 /**
117 * Activate plugins.
118 *
119 * @return null|WP_Error null on success, WP_Error otherwise.
120 */
121 protected function activate() {
122 $permission_error = false;
123 $has_errors = false;
124 foreach ( $this->plugins as $plugin ) {
125
126 // If this endpoint accepts site based authentication and a blog token is used, skip capabilities check.
127 if ( ! $this->accepts_site_based_authentication() ) {
128 if ( ! $this->current_user_can( 'activate_plugin', $plugin ) ) {
129 $this->log[ $plugin ]['error'] = __( 'Sorry, you are not allowed to activate this plugin.', 'jetpack' );
130
131 $has_errors = true;
132 $permission_error = true;
133 continue;
134 }
135 }
136
137 if ( ( ! $this->network_wide && Jetpack::is_plugin_active( $plugin ) ) || is_plugin_active_for_network( $plugin ) ) {
138 continue;
139 }
140
141 if ( ! $this->network_wide && is_network_only_plugin( $plugin ) && is_multisite() ) {
142 $this->log[ $plugin ]['error'] = __( 'Plugin can only be Network Activated', 'jetpack' );
143
144 $has_errors = true;
145 continue;
146 }
147
148 $result = activate_plugin( $plugin, '', $this->network_wide );
149
150 if ( is_wp_error( $result ) ) {
151 $this->log[ $plugin ]['error'] = $result->get_error_messages();
152
153 $has_errors = true;
154 continue;
155 }
156
157 $success = Jetpack::is_plugin_active( $plugin );
158 if ( $success && $this->network_wide ) {
159 $success &= is_plugin_active_for_network( $plugin );
160 }
161
162 if ( ! $success ) {
163 $this->log[ $plugin ]['error'] = $result->get_error_messages;
164
165 $has_errors = true;
166 continue;
167 }
168 $this->log[ $plugin ][] = __( 'Plugin activated.', 'jetpack' );
169 }
170
171 if ( ! $this->bulk && $has_errors ) {
172 $plugin = $this->plugins[0];
173 if ( $permission_error ) {
174 return new WP_Error( 'unauthorized_error', $this->log[ $plugin ]['error'], 403 );
175 }
176
177 return new WP_Error( 'activation_error', $this->log[ $plugin ]['error'] );
178 }
179 }
180
181 /**
182 * Deactivate plugins.
183 *
184 * @return null|WP_Error null on success, WP_Error otherwise.
185 */
186 protected function deactivate() {
187 $permission_error = false;
188 foreach ( $this->plugins as $plugin ) {
189 // If this endpoint accepts site based authentication and a blog token is used, skip capabilities check.
190 if ( ! $this->accepts_site_based_authentication() ) {
191 if ( ! $this->current_user_can( 'deactivate_plugin', $plugin ) ) {
192 $error = __( 'Sorry, you are not allowed to deactivate this plugin.', 'jetpack' );
193
194 $this->log[ $plugin ]['error'] = $error;
195 $permission_error = true;
196 continue;
197 }
198 }
199
200 if ( ! Jetpack::is_plugin_active( $plugin ) ) {
201 continue;
202 }
203
204 deactivate_plugins( $plugin, false, $this->network_wide );
205
206 $success = ! Jetpack::is_plugin_active( $plugin );
207 if ( $success && $this->network_wide ) {
208 $success &= ! is_plugin_active_for_network( $plugin );
209 }
210
211 if ( ! $success ) {
212 $error = __( 'There was an error deactivating your plugin', 'jetpack' );
213
214 $this->log[ $plugin ]['error'] = $error;
215 continue;
216 }
217 $this->log[ $plugin ][] = __( 'Plugin deactivated.', 'jetpack' );
218 }
219 if ( ! $this->bulk && isset( $error ) ) {
220 if ( $permission_error ) {
221 return new WP_Error( 'unauthorized_error', $error, 403 );
222 }
223
224 return new WP_Error( 'deactivation_error', $error );
225 }
226 }
227 }
228