ensure( 'connection', array( 'slug' => JETPACK_BACKUP_PLUGIN_SLUG, 'name' => JETPACK_BACKUP_PLUGIN_NAME, 'url_info' => JETPACK_BACKUP_PLUGIN_URI, ) ); // Sync package. $config->ensure( 'sync' ); // Connection Manager UI. Automattic\Jetpack\ConnectionUI\Admin::init(); }, 1 ); // Add "Settings" link to plugins page. add_filter( 'plugin_action_links_' . JETPACK_BACKUP_PLUGIN_FOLDER . '/jetpack-backup.php', function ( $actions ) { $settings_link = '' . __( 'Settings', 'jetpack-backup' ) . ''; array_unshift( $actions, $settings_link ); return $actions; } ); } /** * Initialize the admin resources. */ public function admin_init() { add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_admin_scripts' ) ); } /** * Enqueue plugin admin scripts and styles. */ public function enqueue_admin_scripts() { $build_assets = require_once JETPACK_BACKUP_PLUGIN_DIR . '/build/index.asset.php'; // Main JS file. wp_register_script( 'jetpack-backup-script', plugins_url( 'build/index.js', JETPACK_BACKUP_PLUGIN_ROOT_FILE ), $build_assets['dependencies'], $build_assets['version'], true ); wp_enqueue_script( 'jetpack-backup-script' ); // Initial JS state including JP Connection data. wp_add_inline_script( 'jetpack-backup-script', $this->get_initial_state(), 'before' ); // Translation assets. wp_set_script_translations( 'jetpack-backup-script-translations', 'jetpack-backup' ); // Main CSS file. wp_enqueue_style( 'jetpack-backup-style', plugins_url( 'build/index.css', JETPACK_BACKUP_PLUGIN_ROOT_FILE ), array( 'wp-components' ), $build_assets['version'] ); // RTL CSS file. wp_style_add_data( 'jetpack-backup-style', 'rtl', plugins_url( 'build/index.rtl.css', JETPACK_BACKUP_PLUGIN_ROOT_FILE ) ); } /** * Main plugin settings page. */ public function plugin_settings_page() { ?>
render(); } /** * Register REST API */ public function register_rest_routes() { // Get information on most recent 10 backups. register_rest_route( 'jetpack/v4', '/backups', array( 'methods' => WP_REST_Server::READABLE, 'callback' => __CLASS__ . '::get_recent_backups', 'permission_callback' => __CLASS__ . '::backups_permissions_callback', ) ); // Get site backup/scan/anti-spam capabilities. register_rest_route( 'jetpack/v4', '/backup-capabilities', array( 'methods' => WP_REST_Server::READABLE, 'callback' => __CLASS__ . '::get_backup_capabilities', 'permission_callback' => __CLASS__ . '::backups_permissions_callback', ) ); } /** * The backup calls should only occur from a signed in admin user * * @access public * @static * * @return true|WP_Error */ public static function backups_permissions_callback() { return current_user_can( 'manage_options' ); } /** * Get information about recent backups * * @access public * @static * * @return array An array of recent backups */ public static function get_recent_backups() { $blog_id = \Jetpack_Options::get_option( 'id' ); $response = Automattic\Jetpack\Connection\Client::wpcom_json_api_request_as_blog( '/sites/' . $blog_id . '/rewind/backups', 'v2', array(), null, 'wpcom' ); if ( 200 !== $response['response']['code'] ) { return null; } return rest_ensure_response( json_decode( $response['body'], true ) ); } /** * Get an array of backup/scan/anti-spam site capabilities * * @access public * @static * * @return array An array of capabilities */ public static function get_backup_capabilities() { $blog_id = \Jetpack_Options::get_option( 'id' ); $response = Automattic\Jetpack\Connection\Client::wpcom_json_api_request_as_user( '/sites/' . $blog_id . '/rewind/capabilities', 'v2', array(), null, 'wpcom' ); if ( is_wp_error( $response ) ) { return null; } if ( 200 !== $response['response']['code'] ) { return null; } return rest_ensure_response( json_decode( $response['body'], true ) ); } /** * Removes plugin from the connection manager * If it's the last plugin using the connection, the site will be disconnected. * * @access public * @static */ public static function plugin_deactivation() { $manager = new Connection_Manager( 'jetpack-backup' ); $manager->remove_connection(); } }