PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 12.7.3
Jetpack – WP Security, Backup, Speed, & Growth v12.7.3
12.0.3 12.1.3 12.2.3 12.3.2 12.4.2 12.5.2 12.6.4 12.7.3 12.8.3 12.9.5 13.0.2 13.1.5 13.2.4 13.3.3 13.4.5 13.5.2 13.6.2 13.7.2 13.8.3 13.9.2 14.0.1 14.1.1 14.2.2 14.3.1 14.4.2 14.5.1 14.6.1 14.7.1 14.8.1 14.9.2 15.0.3 15.1.2 15.2.1 15.3.2 15.4.1 15.5.1 15.6.1 15.7.2 15.8.1 15.9.2 16.0.2 16.1.3 16.2-a.5 16.2-a.3 16.1.2 16.2-a.1 16.1.1 16.1 16.1-beta 16.1-beta.2 16.1-beta.3 16.1-a.5 16.1-a.3 16.0.1 16.1-a.1 16.0 16.0-beta 16.0-a.7 16.0-a.5 15.9.1 16.0-a.3 16.0-a.1 15.9 15.9-beta 15.9-a.7 15.9-a.5 15.9-a.3 15.9-a.1 15.8 15.8-beta 15.8-a.7 15.8-a.5 5.2.5 5.3.4 5.4.4 5.5.5 5.6.5 5.7.5 5.8.4 5.9.4 6.0.4 6.1 6.1.1 6.1.2 6.1.3 6.1.4 6.1.5 6.2 6.2.1 6.2.2 6.2.3 6.2.4 6.2.5 6.3 6.3.1 6.3.2 6.3.3 6.3.4 6.3.5 6.3.6 6.3.7 6.4 6.4.1 6.4.2 6.4.3 6.4.4 6.4.5 6.4.6 6.5 6.5.1 6.5.2 6.5.3 6.5.4 6.6 6.6.1 6.6.2 6.6.3 6.6.4 6.6.5 6.7 6.7.1 6.7.2 6.7.3 6.7.4 6.8 6.8.1 6.8.2 6.8.3 6.8.4 6.8.5 6.9 6.9.1 6.9.2 6.9.3 6.9.4 7.0 7.0.1 7.0.2 7.0.3 7.0.4 7.0.5 7.1 7.1.1 7.1.2 7.1.3 7.1.4 7.1.5 7.2 7.2.1 7.2.1.1 7.2.2 7.2.3 7.2.4 7.2.5 7.3 7.3.0.1 7.3.1 7.3.1.1 7.3.2 7.3.3 7.3.4 7.3.5 7.4 7.4.1 7.4.2 7.4.3 7.4.4 7.4.5 7.5 7.5.0.1 7.5.1 7.5.2 7.5.3 7.5.4 7.5.5 7.5.6 7.5.7 7.6 7.6.1 7.6.2 7.6.3 7.6.4 7.7 7.7.1 7.7.2 7.7.3 7.7.4 7.7.5 7.7.6 7.8 7.8.1 7.8.2 7.8.3 7.8.4 7.9 7.9.1 7.9.2 7.9.3 7.9.4 8.0 8.0.1 8.0.2 8.0.3 8.1 8.1.1 8.1.2 8.1.3 8.1.4 8.2 8.2.0.1 8.2.1 8.2.2 8.2.3 8.2.4 8.2.5 8.2.6 8.3 8.3.1 8.3.2 8.3.3 8.4 8.4.1 8.4.2 8.4.3 8.4.4 8.4.5 8.5 8.5.1 8.5.2 8.5.3 8.6 8.6.1 8.6.2 8.6.3 8.6.4 8.7 8.7.0.1 8.7.1 8.7.2 8.7.3 8.7.4 8.8 8.8.1 8.8.2 8.8.3 8.8.4 8.8.5 8.9 8.9.1 8.9.2 8.9.3 8.9.4 9.0 9.0.1 9.0.2 9.0.3 9.0.4 9.0.5 9.1 9.1.1 9.1.2 9.1.3 9.2 9.2.1 9.2.2 9.2.3 9.2.4 9.3 9.3.1 9.3.2 9.3.3 9.3.4 9.3.5 9.4 9.4.1 9.4.2 9.4.3 9.4.4 9.5 9.5.1 9.5.2 9.5.3 9.5.4 9.5.5 9.6 9.6.1 9.6.2 9.6.3 9.6.4 9.7 9.7.1 9.7.2 15.7-beta.2 9.7.3 15.7.1 9.8 15.8-a.1 9.8.1 15.8-a.3 9.8.2 2.0.9 9.8.3 2.1.7 9.9 2.2.10 9.9.1 2.3.10 9.9.2 2.4.7 9.9.3 2.5.5 2.6.6 2.7.5 2.8.5 2.9.6 3.0.6 3.1.5 3.2.5 3.3.6 3.4.6 3.5.6 3.6.4 3.7.5 3.8.5 3.9.10 4.0.7 4.1.4 4.2.5 4.3.5 4.4.5 4.5.3 4.6.3 4.7.4 4.8.5 4.9.3 5.0.3 5.1.4 trunk 10.0 10.0.1 10.0.2 10.1 10.1.1 10.1.2 10.2 10.2.1 10.2.2 10.2.3 10.3 10.3.1 10.3.2 10.4 10.4.1 10.4.2 10.5 10.5.1 10.5.2 10.5.3 10.6 10.6.1 10.6.2 10.7 10.7.1 10.7.2 10.8 10.8.1 10.8.2 10.9 10.9.1 10.9.2 10.9.3 11.0 11.0.1 11.0.2 11.1 11.1.1 11.1.2 11.1.3 11.1.4 11.2 11.2.1 11.2.2 11.3 11.3.1 11.3.2 11.3.3 11.3.4 11.4 11.4.1 11.4.2 11.5 11.5.1 11.5.2 11.5.3 11.6 11.6.1 11.6.2 11.7 11.7.1 11.7.2 11.7.3 11.8 11.8.3 11.8.4 11.8.5 11.8.6 11.9 11.9.1 11.9.2 11.9.3 12.0 12.0.1 12.0.2 12.1 12.1.1 12.1.2 12.2 12.2.1 12.2.2 12.3 12.3.1 12.4 12.4.1 12.5 12.5.1 12.6 12.6.1 12.6.2 12.6.3 12.7 12.7.1 12.7.2 12.8 12.8.1 12.8.2 12.9 12.9.1 12.9.2 12.9.3 12.9.4 13.0 13.0.1 13.1 13.1.1 13.1.2 13.1.3 13.1.4 13.2 13.2.1 13.2.2 13.2.3 13.3 13.3.1 13.3.2 13.4 13.4.1 13.4.2 13.4.3 13.4.4 13.5 13.5.1 13.6 13.6.1 13.7 13.7.1 13.8 13.8.1 13.8.2 13.9 13.9.1 14.0 14.1 14.2 14.2.1 14.3 14.4 14.4.1 14.5 14.6 14.7 14.8 14.9 14.9.1 15.0 15.0.1 15.0.2 15.1 15.1.1 15.2 15.3 15.3.1 15.4 15.5 15.6 15.7 15.7-a.1 15.7-a.3 15.7-a.5 15.7-a.7 15.7-beta
jetpack / _inc / lib / class-jetpack-google-drive-helper.php
jetpack / _inc / lib Last commit date
admin-pages 2 years ago core-api 2 years ago debugger 2 years ago markdown 2 years ago class-jetpack-ai-helper.php 2 years ago class-jetpack-currencies.php 5 years ago class-jetpack-google-drive-helper.php 3 years ago class-jetpack-instagram-gallery-helper.php 3 years ago class-jetpack-mapbox-helper.php 3 years ago class-jetpack-podcast-feed-locator.php 2 years ago class-jetpack-podcast-helper.php 3 years ago class-jetpack-recommendations.php 3 years ago class-jetpack-tweetstorm-helper.php 2 years ago class-jetpack-wizard.php 5 years ago class.color.php 2 years ago class.core-rest-api-endpoints.php 2 years ago class.jetpack-automatic-install-skin.php 2 years ago class.jetpack-iframe-embed.php 3 years ago class.jetpack-keyring-service-helper.php 3 years ago class.jetpack-password-checker.php 3 years ago class.jetpack-search-performance-logger.php 4 years ago class.media-extractor.php 3 years ago class.media-summary.php 3 years ago class.media.php 2 years ago components.php 3 years ago debugger.php 4 years ago functions.wp-notify.php 3 years ago icalendar-reader.php 3 years ago markdown.php 3 years ago plans.php 4 years ago plugins.php 4 years ago tonesque.php 2 years ago widgets.php 4 years ago
class-jetpack-google-drive-helper.php
127 lines
1 <?php
2 /**
3 * Google Drive helper.
4 *
5 * @package automattic/jetpack
6 */
7
8 use Automattic\Jetpack\Connection\Client;
9 use Automattic\Jetpack\Connection\Manager;
10 use Automattic\Jetpack\Status\Visitor;
11
12 /**
13 * Class Jetpack_Google_Drive_Helper
14 */
15 class Jetpack_Google_Drive_Helper {
16 /**
17 * Checks if the user has a valid connection to Google Drive
18 *
19 * @param int $user_id The user ID.
20 * @return array Array with single 'valid' (bool) entry.
21 */
22 public static function has_valid_connection( $user_id ) {
23 $site_id = Manager::get_site_id();
24 if ( is_wp_error( $site_id ) ) {
25 return false;
26 }
27
28 if ( defined( 'IS_WPCOM' ) && IS_WPCOM ) {
29 // check for gdrive helper class, call synchronously on .com
30 require_lib( 'google-sheets-helper' );
31 $user_id = (int) get_current_user_id();
32 $token = WPCOM_Google_Sheets_helper::get_google_drive_token_for_user_id( $user_id );
33
34 return ! is_wp_error( $token ) && ! $token->is_expired();
35 }
36
37 $request_path = sprintf( '/sites/%d/google-drive/connection', $site_id );
38 $wpcom_request = Client::wpcom_json_api_request_as_user(
39 $request_path,
40 '2',
41 array(
42 'method' => 'GET',
43 'headers' => array(
44 'content-type' => 'application/json',
45 'X-Forwarded-For' => ( new Visitor() )->get_ip( true ),
46 ),
47 )
48 );
49
50 $response_code = wp_remote_retrieve_response_code( $wpcom_request );
51 if ( 200 !== $response_code ) {
52 return new WP_Error(
53 'failed_to_fetch_data',
54 esc_html__( 'Unable to fetch the requested data.', 'jetpack' ),
55 array( 'status' => $response_code )
56 );
57 }
58 $result = json_decode( wp_remote_retrieve_body( $wpcom_request ), true );
59
60 return ! empty( $result ) && ! empty( $result['valid'] );
61 }
62
63 /**
64 * Creates a Google Spreadsheet and returns some of its meta
65 *
66 * @param int $user_id The user ID.
67 * @param string $title The spreadsheet title.
68 * @param array $rows Array of arrays with values.
69 * @return array
70 */
71 public static function create_sheet( $user_id, $title, $rows = array() ) {
72 $site_id = Manager::get_site_id();
73 if ( is_wp_error( $site_id ) ) {
74 return false;
75 }
76
77 if ( defined( 'IS_WPCOM' ) && IS_WPCOM ) {
78 // check for gdrive helper class, call synchronously on .com
79 require_lib( 'google-sheets-helper' );
80 $helper = WPCOM_Google_Sheets_helper::create_for_user( $user_id );
81
82 if ( is_wp_error( $helper ) ) {
83 return $helper;
84 }
85
86 $spreadsheet = $helper->create_spreadsheet( $title, $rows );
87
88 if ( is_wp_error( $spreadsheet ) ) {
89 return $spreadsheet;
90 }
91
92 return array(
93 // phpcs:ignore WordPress.NamingConventions.ValidVariableName.UsedPropertyNotSnakeCase -- as is on google client
94 'sheet_link' => $spreadsheet->spreadsheetUrl,
95 // phpcs:ignore WordPress.NamingConventions.ValidVariableName.UsedPropertyNotSnakeCase -- as is on google client
96 'sheet_id' => $spreadsheet->spreadsheetId,
97 );
98 }
99
100 $request_path = sprintf( '/sites/%d/google-drive/sheets', $site_id );
101 $wpcom_request = Client::wpcom_json_api_request_as_user(
102 $request_path,
103 '2',
104 array(
105 'method' => 'POST',
106 'headers' => array(
107 'content-type' => 'application/json',
108 'X-Forwarded-For' => ( new Visitor() )->get_ip( true ),
109 ),
110 ),
111 array(
112 'title' => $title,
113 'rows' => $rows,
114 )
115 );
116 $response_code = wp_remote_retrieve_response_code( $wpcom_request );
117 if ( 200 !== $response_code ) {
118 return new WP_Error(
119 'failed_to_fetch_data',
120 esc_html__( 'Unable to fetch the requested data.', 'jetpack' ),
121 array( 'status' => $response_code )
122 );
123 }
124 return json_decode( wp_remote_retrieve_body( $wpcom_request ), true );
125 }
126 }
127