134 lines
4.2 KiB
PHP
134 lines
4.2 KiB
PHP
<?php
|
|
/**
|
|
* Google Drive helper.
|
|
*
|
|
* @deprecated 13.4 Use automattic/jetpack-forms
|
|
* @package automattic/jetpack
|
|
*/
|
|
|
|
use Automattic\Jetpack\Connection\Client;
|
|
use Automattic\Jetpack\Connection\Manager;
|
|
use Automattic\Jetpack\Status\Visitor;
|
|
|
|
/**
|
|
* Class Jetpack_Google_Drive_Helper
|
|
*
|
|
* @deprecated 13.4 Use Automattic\Jetpack\Forms\Service\Google_Drive_Helper
|
|
*/
|
|
class Jetpack_Google_Drive_Helper {
|
|
/**
|
|
* Checks if the user has a valid connection to Google Drive
|
|
*
|
|
* @deprecated 13.4 Use Automattic\Jetpack\Forms\Service\Google_Drive_Helper->has_valid_connection
|
|
* @param int $user_id The user ID.
|
|
* @return array Array with single 'valid' (bool) entry.
|
|
*/
|
|
public static function has_valid_connection( $user_id ) {
|
|
_deprecated_function( __METHOD__, 'jetpack-13.4', 'Automattic\Jetpack\Forms\Service\Google_Drive_Helper->has_valid_connection' );
|
|
$site_id = Manager::get_site_id();
|
|
if ( is_wp_error( $site_id ) ) {
|
|
return false;
|
|
}
|
|
|
|
if ( defined( 'IS_WPCOM' ) && IS_WPCOM ) {
|
|
// check for gdrive helper class, call synchronously on .com
|
|
require_lib( 'google-sheets-helper' );
|
|
$user_id = (int) get_current_user_id();
|
|
$token = WPCOM_Google_Sheets_helper::get_google_drive_token_for_user_id( $user_id );
|
|
|
|
return ! is_wp_error( $token ) && ! $token->is_expired();
|
|
}
|
|
|
|
$request_path = sprintf( '/sites/%d/google-drive/connection', $site_id );
|
|
$wpcom_request = Client::wpcom_json_api_request_as_user(
|
|
$request_path,
|
|
'2',
|
|
array(
|
|
'method' => 'GET',
|
|
'headers' => array(
|
|
'content-type' => 'application/json',
|
|
'X-Forwarded-For' => ( new Visitor() )->get_ip( true ),
|
|
),
|
|
)
|
|
);
|
|
|
|
$response_code = wp_remote_retrieve_response_code( $wpcom_request );
|
|
if ( 200 !== $response_code ) {
|
|
return new WP_Error(
|
|
'failed_to_fetch_data',
|
|
esc_html__( 'Unable to fetch the requested data.', 'jetpack' ),
|
|
array( 'status' => $response_code )
|
|
);
|
|
}
|
|
$result = json_decode( wp_remote_retrieve_body( $wpcom_request ), true );
|
|
|
|
return ! empty( $result ) && ! empty( $result['valid'] );
|
|
}
|
|
|
|
/**
|
|
* Creates a Google Spreadsheet and returns some of its meta
|
|
*
|
|
* @deprecated 13.4 Use Automattic\Jetpack\Forms\Service\Google_Drive_Helper->create_sheet
|
|
* @param int $user_id The user ID.
|
|
* @param string $title The spreadsheet title.
|
|
* @param array $rows Array of arrays with values.
|
|
* @return array|WP_Error
|
|
*/
|
|
public static function create_sheet( $user_id, $title, $rows = array() ) {
|
|
_deprecated_function( __METHOD__, 'jetpack-13.4', 'Automattic\Jetpack\Forms\Service\Google_Drive_Helper->create_sheet' );
|
|
$site_id = Manager::get_site_id();
|
|
if ( is_wp_error( $site_id ) ) {
|
|
return false;
|
|
}
|
|
|
|
if ( defined( 'IS_WPCOM' ) && IS_WPCOM ) {
|
|
// check for gdrive helper class, call synchronously on .com
|
|
require_lib( 'google-sheets-helper' );
|
|
$helper = WPCOM_Google_Sheets_helper::create_for_user( $user_id );
|
|
|
|
if ( is_wp_error( $helper ) ) {
|
|
return $helper;
|
|
}
|
|
|
|
$spreadsheet = $helper->create_spreadsheet( $title, $rows );
|
|
|
|
if ( is_wp_error( $spreadsheet ) ) {
|
|
return $spreadsheet;
|
|
}
|
|
|
|
return array(
|
|
// phpcs:ignore WordPress.NamingConventions.ValidVariableName.UsedPropertyNotSnakeCase -- as is on google client
|
|
'sheet_link' => $spreadsheet->spreadsheetUrl,
|
|
// phpcs:ignore WordPress.NamingConventions.ValidVariableName.UsedPropertyNotSnakeCase -- as is on google client
|
|
'sheet_id' => $spreadsheet->spreadsheetId,
|
|
);
|
|
}
|
|
|
|
$request_path = sprintf( '/sites/%d/google-drive/sheets', $site_id );
|
|
$wpcom_request = Client::wpcom_json_api_request_as_user(
|
|
$request_path,
|
|
'2',
|
|
array(
|
|
'method' => 'POST',
|
|
'headers' => array(
|
|
'content-type' => 'application/json',
|
|
'X-Forwarded-For' => ( new Visitor() )->get_ip( true ),
|
|
),
|
|
),
|
|
array(
|
|
'title' => $title,
|
|
'rows' => $rows,
|
|
)
|
|
);
|
|
$response_code = wp_remote_retrieve_response_code( $wpcom_request );
|
|
if ( 200 !== $response_code ) {
|
|
return new WP_Error(
|
|
'failed_to_fetch_data',
|
|
esc_html__( 'Unable to fetch the requested data.', 'jetpack' ),
|
|
array( 'status' => $response_code )
|
|
);
|
|
}
|
|
return json_decode( wp_remote_retrieve_body( $wpcom_request ), true );
|
|
}
|
|
}
|