Files
carpseeds.pl/wp-content/plugins/jetpack.bck/json-endpoints/jetpack/class.jetpack-json-api-plugins-modify-v1-2-endpoint.php
2024-07-15 11:28:08 +02:00

192 lines
6.7 KiB
PHP

<?php
new Jetpack_JSON_API_Plugins_Modify_v1_2_Endpoint(
array(
'description' => 'Activate/Deactivate a Plugin on your Jetpack Site, or set automatic updates',
'min_version' => '1.2',
'method' => 'POST',
'path' => '/sites/%s/plugins/%s',
'stat' => 'plugins:1:modify',
'path_labels' => array(
'$site' => '(int|string) The site ID, The site domain',
'$plugin' => '(string) The plugin ID',
),
'request_format' => array(
'action' => '(string) Possible values are \'update\'',
'autoupdate' => '(bool) Whether or not to automatically update the plugin',
'active' => '(bool) Activate or deactivate the plugin',
'network_wide' => '(bool) Do action network wide (default value: false)',
),
'query_parameters' => array(
'autoupdate' => '(bool=false) If the update is happening as a result of autoupdate event',
),
'response_format' => Jetpack_JSON_API_Plugins_Endpoint::$_response_format_v1_2,
'example_request_data' => array(
'headers' => array(
'authorization' => 'Bearer YOUR_API_TOKEN'
),
'body' => array(
'action' => 'update',
)
),
'example_request' => 'https://public-api.wordpress.com/rest/v1.2/sites/example.wordpress.org/plugins/hello-dolly%20hello'
)
);
new Jetpack_JSON_API_Plugins_Modify_v1_2_Endpoint(
array(
'description' => 'Activate/Deactivate a list of plugins on your Jetpack Site, or set automatic updates',
'min_version' => '1.2',
'method' => 'POST',
'path' => '/sites/%s/plugins',
'stat' => 'plugins:modify',
'path_labels' => array(
'$site' => '(int|string) The site ID, The site domain',
),
'request_format' => array(
'action' => '(string) Possible values are \'update\'',
'autoupdate' => '(bool) Whether or not to automatically update the plugin',
'active' => '(bool) Activate or deactivate the plugin',
'network_wide' => '(bool) Do action network wide (default value: false)',
'plugins' => '(array) A list of plugin ids to modify',
),
'query_parameters' => array(
'autoupdate' => '(bool=false) If the update is happening as a result of autoupdate event',
),
'response_format' => array(
'plugins' => '(array:plugin_v1_2) An array of plugin objects.',
'updated' => '(array) A list of plugin ids that were updated. Only present if action is update.',
'not_updated' => '(array) A list of plugin ids that were not updated. Only present if action is update.',
'log' => '(array) Update log. Only present if action is update.',
),
'example_request_data' => array(
'headers' => array(
'authorization' => 'Bearer YOUR_API_TOKEN'
),
'body' => array(
'active' => true,
'plugins' => array(
'jetpack/jetpack',
'akismet/akismet',
),
)
),
'example_request' => 'https://public-api.wordpress.com/rest/v1.2/sites/example.wordpress.org/plugins'
)
);
new Jetpack_JSON_API_Plugins_Modify_v1_2_Endpoint(
array(
'description' => 'Update a Plugin on your Jetpack Site',
'min_version' => '1.2',
'method' => 'POST',
'path' => '/sites/%s/plugins/%s/update/',
'stat' => 'plugins:1:update',
'path_labels' => array(
'$site' => '(int|string) The site ID, The site domain',
'$plugin' => '(string) The plugin ID',
),
'query_parameters' => array(
'autoupdate' => '(bool=false) If the update is happening as a result of autoupdate event',
),
'response_format' => Jetpack_JSON_API_Plugins_Endpoint::$_response_format_v1_2,
'example_request_data' => array(
'headers' => array(
'authorization' => 'Bearer YOUR_API_TOKEN'
),
),
'example_request' => 'https://public-api.wordpress.com/rest/v1.2/sites/example.wordpress.org/plugins/hello-dolly%20hello/update'
)
);
class Jetpack_JSON_API_Plugins_Modify_v1_2_Endpoint extends Jetpack_JSON_API_Plugins_Modify_Endpoint {
protected function activate() {
$permission_error = false;
$has_errors = false;
foreach ( $this->plugins as $plugin ) {
if ( ! $this->current_user_can( 'activate_plugin', $plugin ) ) {
$this->log[$plugin]['error'] = __( 'Sorry, you are not allowed to activate this plugin.' );
$has_errors = true;
$permission_error = true;
continue;
}
if ( ( ! $this->network_wide && Jetpack::is_plugin_active( $plugin ) ) || is_plugin_active_for_network( $plugin ) ) {
continue;
}
if ( ! $this->network_wide && is_network_only_plugin( $plugin ) && is_multisite() ) {
$this->log[$plugin]['error'] = __( 'Plugin can only be Network Activated', 'jetpack' );
$has_errors = true;
continue;
}
$result = activate_plugin( $plugin, '', $this->network_wide );
if ( is_wp_error( $result ) ) {
$this->log[$plugin]['error'] = $result->get_error_messages();
$has_errors = true;
continue;
}
$success = Jetpack::is_plugin_active( $plugin );
if ( $success && $this->network_wide ) {
$success &= is_plugin_active_for_network( $plugin );
}
if ( ! $success ) {
$this->log[$plugin]['error'] = $result->get_error_messages;
$has_errors = true;
continue;
}
$this->log[$plugin][] = __( 'Plugin activated.', 'jetpack' );
}
if ( ! $this->bulk && $has_errors ) {
$plugin = $this->plugins[0];
if ( $permission_error ) {
return new WP_Error( 'unauthorized_error', $this->log[$plugin]['error'], 403 );
}
return new WP_Error( 'activation_error', $this->log[$plugin]['error'] );
}
}
protected function deactivate() {
$permission_error = false;
foreach ( $this->plugins as $plugin ) {
if ( ! $this->current_user_can( 'deactivate_plugin', $plugin ) ) {
$error = $this->log[$plugin]['error'] = __( 'Sorry, you are not allowed to deactivate this plugin.', 'jetpack' );
$permission_error = true;
continue;
}
if ( ! Jetpack::is_plugin_active( $plugin ) ) {
continue;
}
deactivate_plugins( $plugin, false, $this->network_wide );
$success = ! Jetpack::is_plugin_active( $plugin );
if ( $success && $this->network_wide ) {
$success &= ! is_plugin_active_for_network( $plugin );
}
if ( ! $success ) {
$error = $this->log[$plugin]['error'] = __( 'There was an error deactivating your plugin', 'jetpack' );
continue;
}
$this->log[$plugin][] = __( 'Plugin deactivated.', 'jetpack' );
}
if ( ! $this->bulk && isset( $error ) ) {
if ( $permission_error ) {
return new WP_Error( 'unauthorized_error', $error, 403 );
}
return new WP_Error( 'deactivation_error', $error );
}
}
}