get_json_params(); if ( ! is_array( $body ) ) { return new \WP_REST_Response( [ 'success' => false, 'message' => $error ], 400 ); } if ( ! current_user_can( 'install_plugins' ) ) { return new \WP_REST_Response( [ 'success' => false, 'message' => $error ], 400 ); } $failed = []; $completed = []; foreach ( $body as $plugin ) { if ( empty( $plugin['plugin'] ) ) { return new \WP_REST_Response( [ 'success' => false, 'message' => $error ], 400 ); } $result = aioseo()->addons->installAddon( $plugin['plugin'] ); if ( ! $result ) { $failed[] = $plugin['plugin']; } else { $completed[ $plugin['plugin'] ] = $result; } } return new \WP_REST_Response( [ 'success' => true, 'completed' => $completed, 'failed' => $failed ], 200 ); } /** * Deactivates plugins from vue. * * @since 4.0.0 * * @param \WP_REST_Request $request The REST Request * @return \WP_REST_Response The response. */ public static function deactivatePlugins( $request ) { $error = esc_html__( 'Deactivation failed. Please check permissions and try again.', 'all-in-one-seo-pack' ); $body = $request->get_json_params(); if ( ! is_array( $body ) ) { return new \WP_REST_Response( [ 'success' => false, 'message' => $error ], 400 ); } if ( ! current_user_can( 'install_plugins' ) ) { return new \WP_REST_Response( [ 'success' => false, 'message' => $error ], 400 ); } require_once ABSPATH . 'wp-admin/includes/plugin.php'; $failed = []; $completed = []; foreach ( $body as $plugin ) { if ( empty( $plugin['plugin'] ) ) { return new \WP_REST_Response( [ 'success' => false, 'message' => $error ], 400 ); } // Activate the plugin silently. $activated = deactivate_plugins( $plugin['plugin'] ); if ( is_wp_error( $activated ) ) { $failed[] = $plugin['plugin']; } $completed[] = $plugin['plugin']; } return new \WP_REST_Response( [ 'success' => true, 'completed' => $completed, 'failed' => $failed ], 200 ); } }