PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 14.3.1
Jetpack – WP Security, Backup, Speed, & Growth v14.3.1
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 / core-api / wpcom-endpoints / publicize-connections.php
jetpack / _inc / lib / core-api / wpcom-endpoints Last commit date
business-hours.php 4 years ago class-wpcom-rest-api-v2-endpoint-admin-color.php 2 years ago class-wpcom-rest-api-v2-endpoint-admin-menu.php 1 year ago class-wpcom-rest-api-v2-endpoint-ai.php 2 years ago class-wpcom-rest-api-v2-endpoint-app-media.php 2 years ago class-wpcom-rest-api-v2-endpoint-blog-stats.php 2 years ago class-wpcom-rest-api-v2-endpoint-email-preview.php 1 year ago class-wpcom-rest-api-v2-endpoint-external-media.php 1 year ago class-wpcom-rest-api-v2-endpoint-following.php 2 years ago class-wpcom-rest-api-v2-endpoint-goodreads.php 2 years ago class-wpcom-rest-api-v2-endpoint-google-docs.php 4 years ago class-wpcom-rest-api-v2-endpoint-instagram-gallery.php 3 years ago class-wpcom-rest-api-v2-endpoint-mailchimp.php 2 years ago class-wpcom-rest-api-v2-endpoint-newsletter-categories-list.php 1 year ago class-wpcom-rest-api-v2-endpoint-newsletter-categories-subscriptions-count.php 1 year ago class-wpcom-rest-api-v2-endpoint-podcast-player.php 2 years ago class-wpcom-rest-api-v2-endpoint-profile.php 2 years ago class-wpcom-rest-api-v2-endpoint-publicize-share-post.php 1 year ago class-wpcom-rest-api-v2-endpoint-publicize-share-status.php 1 year ago class-wpcom-rest-api-v2-endpoint-related-posts.php 2 years ago class-wpcom-rest-api-v2-endpoint-resolve-redirect.php 2 years ago class-wpcom-rest-api-v2-endpoint-search.php 4 years ago class-wpcom-rest-api-v2-endpoint-send-email-preview.php 1 year ago class-wpcom-rest-api-v2-endpoint-template-loader.php 3 years ago class-wpcom-rest-api-v2-endpoint-top-posts.php 2 years ago class-wpcom-rest-api-v2-endpoint-transient.php 5 years ago class-wpcom-rest-api-v3-endpoint-blogging-prompts.php 1 year ago gutenberg-available-extensions.php 2 years ago hello.php 4 years ago memberships.php 1 year ago publicize-connection-test-results.php 3 years ago publicize-connections.php 1 year ago publicize-services.php 3 years ago service-api-keys.php 2 years ago sites-posts-featured-media-url.php 2 years ago subscribers.php 1 year ago
publicize-connections.php
208 lines
1 <?php // phpcs:ignore WordPress.Files.FileName.InvalidClassFileName
2 /**
3 * Fetch information about Publicize connections on a site.
4 *
5 * @package automattic/jetpack
6 */
7
8 /**
9 * Publicize: List Connections
10 *
11 * [
12 * { # Connection Object. See schema for more detail.
13 * id: (string) Connection unique_id
14 * service_name: (string) Service slug
15 * display_name: (string) User name/display name of user/connection on Service
16 * global: (boolean) Is the Connection available to all users of the site?
17 * },
18 * ...
19 * ]
20 *
21 * @since 6.8
22 */
23 class WPCOM_REST_API_V2_Endpoint_List_Publicize_Connections extends WP_REST_Controller {
24 /**
25 * Flag to help WordPress.com decide where it should look for
26 * Publicize data. Ignored for direct requests to Jetpack sites.
27 *
28 * @var bool $wpcom_is_wpcom_only_endpoint
29 */
30 public $wpcom_is_wpcom_only_endpoint = true;
31
32 /**
33 * Called automatically on `rest_api_init()`.
34 */
35 public function register_routes() {
36 // Endpoint moved to publicize package.
37 }
38
39 /**
40 * Helper for generating schema. Used by this endpoint and by the
41 * Connection Test Result endpoint.
42 *
43 * @internal
44 * @return array
45 */
46 protected function get_connection_schema_properties() {
47 return array(
48 'id' => array(
49 'description' => __( 'Unique identifier for the Jetpack Social connection', 'jetpack' ),
50 'type' => 'string',
51 ),
52 'service_name' => array(
53 'description' => __( 'Alphanumeric identifier for the Jetpack Social service', 'jetpack' ),
54 'type' => 'string',
55 ),
56 'display_name' => array(
57 'description' => __( 'Display name of the connected account', 'jetpack' ),
58 'type' => 'string',
59 ),
60 'username' => array(
61 'description' => __( 'Username of the connected account', 'jetpack' ),
62 'type' => 'string',
63 ),
64 'profile_display_name' => array(
65 'description' => __( 'The name to display in the profile of the connected account', 'jetpack' ),
66 'type' => 'string',
67 ),
68 'profile_picture' => array(
69 'description' => __( 'Profile picture of the connected account', 'jetpack' ),
70 'type' => 'string',
71 ),
72 'global' => array(
73 'description' => __( 'Is this connection available to all users?', 'jetpack' ),
74 'type' => 'boolean',
75 ),
76 'external_id' => array(
77 'description' => __( 'The external ID of the connected account', 'jetpack' ),
78 'type' => 'string',
79 ),
80 );
81 }
82
83 /**
84 * Schema for the endpoint.
85 *
86 * @return array
87 */
88 public function get_item_schema() {
89 $schema = array(
90 '$schema' => 'http://json-schema.org/draft-04/schema#',
91 'title' => 'jetpack-publicize-connection',
92 'type' => 'object',
93 'properties' => $this->get_connection_schema_properties(),
94 );
95
96 return $this->add_additional_fields_schema( $schema );
97 }
98
99 /**
100 * Helper for retrieving Connections. Used by this endpoint and by
101 * the Connection Test Result endpoint.
102 *
103 * @internal
104 * @return array
105 */
106 protected function get_connections() {
107 global $publicize;
108
109 $items = array();
110
111 foreach ( (array) $publicize->get_services( 'connected' ) as $service_name => $connections ) {
112 foreach ( $connections as $connection ) {
113 $connection_meta = $publicize->get_connection_meta( $connection );
114 $connection_data = $connection_meta['connection_data'];
115
116 $items[] = array(
117 'id' => (string) $publicize->get_connection_unique_id( $connection ),
118 'connection_id' => (string) $publicize->get_connection_id( $connection ),
119 'service_name' => $service_name,
120 'display_name' => $publicize->get_display_name( $service_name, $connection ),
121 'username' => $publicize->get_username( $service_name, $connection ),
122 'profile_display_name' => ! empty( $connection_meta['profile_display_name'] ) ? $connection_meta['profile_display_name'] : '',
123 'profile_picture' => ! empty( $connection_meta['profile_picture'] ) ? $connection_meta['profile_picture'] : '',
124 // phpcs:ignore Universal.Operators.StrictComparisons.LooseEqual -- We expect an integer, but do loose comparison below in case some other type is stored.
125 'global' => 0 == $connection_data['user_id'],
126 'external_id' => $connection_meta['external_id'] ?? '',
127 );
128 }
129 }
130
131 return $items;
132 }
133
134 /**
135 * Get list of connected Publicize connections.
136 *
137 * @param WP_REST_Request $request Full details about the request.
138 *
139 * @return WP_REST_Response suitable for 1-page collection
140 */
141 public function get_items( $request ) {
142 $items = array();
143
144 foreach ( $this->get_connections() as $item ) {
145 $items[] = $this->prepare_item_for_response( $item, $request );
146 }
147
148 $response = rest_ensure_response( $items );
149 $response->header( 'X-WP-Total', count( $items ) );
150 $response->header( 'X-WP-TotalPages', 1 );
151
152 return $response;
153 }
154
155 /**
156 * Filters out data based on ?_fields= request parameter
157 *
158 * @param array $connection Array of info about a specific Publicize connection.
159 * @param WP_REST_Request $request Full details about the request.
160 *
161 * @return array filtered $connection
162 */
163 public function prepare_item_for_response( $connection, $request ) {
164 if ( ! is_callable( array( $this, 'get_fields_for_response' ) ) ) {
165 return $connection;
166 }
167
168 $fields = $this->get_fields_for_response( $request );
169
170 $response_data = array();
171 foreach ( $connection as $field => $value ) {
172 if ( in_array( $field, $fields, true ) ) {
173 $response_data[ $field ] = $value;
174 }
175 }
176
177 return $response_data;
178 }
179
180 /**
181 * Verify that user can access Publicize data
182 *
183 * @return true|WP_Error
184 */
185 public function get_items_permission_check() {
186 global $publicize;
187
188 if ( ! $publicize ) {
189 return new WP_Error(
190 'publicize_not_available',
191 __( 'Sorry, Jetpack Social is not available on your site right now.', 'jetpack' ),
192 array( 'status' => rest_authorization_required_code() )
193 );
194 }
195
196 if ( $publicize->current_user_can_access_publicize_data() ) {
197 return true;
198 }
199
200 return new WP_Error(
201 'invalid_user_permission_publicize',
202 __( 'Sorry, you are not allowed to access Jetpack Social data on this site.', 'jetpack' ),
203 array( 'status' => rest_authorization_required_code() )
204 );
205 }
206 }
207 wpcom_rest_api_v2_load_plugin( 'WPCOM_REST_API_V2_Endpoint_List_Publicize_Connections' );
208