'id' ); $response = Client::wpcom_json_api_request_as_blog( sprintf( '/sites/%d/rewind', $site_id ) . '?force=wpcom', '2', array( 'timeout' => 2 ), null, 'wpcom' ); if ( 200 !== wp_remote_retrieve_response_code( $response ) ) { $status = new WP_Error( 'rewind_state_fetch_failed' ); return $status; } $body = wp_remote_retrieve_body( $response ); $status = json_decode( $body ); return $status; } /** * Checks whether the current plan (or purchases) of the site already supports the product * * @return boolean */ public static function has_paid_plan_for_product() { $rewind_data = static::get_state_from_wpcom(); if ( is_wp_error( $rewind_data ) ) { return false; } return is_object( $rewind_data ) && isset( $rewind_data->state ) && 'unavailable' !== $rewind_data->state; } /** * Return product bundles list * that supports the product. * * @return boolean|array Products bundle list. */ public static function is_upgradable_by_bundle() { return array( 'security' ); } /** * Get the URL the user is taken after activating the product * * @return ?string */ public static function get_post_activation_url() { return ''; // stay in My Jetpack page or continue the purchase flow if needed. } /** * Get the URL where the user manages the product * * @return ?string */ public static function get_manage_url() { // check standalone first if ( static::is_standalone_plugin_active() ) { return admin_url( 'admin.php?page=jetpack-backup' ); // otherwise, check for the main Jetpack plugin } elseif ( static::is_jetpack_plugin_active() ) { return Redirect::get_url( 'my-jetpack-manage-backup' ); } } }