PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 13.5.2
Jetpack – WP Security, Backup, Speed, & Growth v13.5.2
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-services.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 2 years 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-external-media.php 2 years 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 3 years ago class-wpcom-rest-api-v2-endpoint-newsletter-categories-list.php 2 years ago class-wpcom-rest-api-v2-endpoint-newsletter-categories-subscriptions-count.php 2 years ago class-wpcom-rest-api-v2-endpoint-podcast-player.php 2 years ago class-wpcom-rest-api-v2-endpoint-publicize-share-post.php 3 years 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 2 years 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 2 years ago gutenberg-available-extensions.php 2 years ago hello.php 4 years ago memberships.php 2 years ago publicize-connection-test-results.php 3 years ago publicize-connections.php 2 years 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 3 years ago trait-wpcom-rest-api-proxy-request-trait.php 2 years ago
publicize-services.php
177 lines
1 <?php // phpcs:ignore WordPress.Files.FileName.InvalidClassFileName
2 /**
3 * Endpoint used to fetch information to connect to a Publicize service.
4 *
5 * @package automattic/jetpack
6 */
7
8 /**
9 * Publicize: List Publicize Services
10 *
11 * [
12 * { # Service Object. See schema for more detail.
13 * name: (string) Service slug
14 * label: (string) Human readable label for the Service
15 * url: (string) Connect URL
16 * },
17 * ...
18 * ]
19 *
20 * @since 6.8
21 */
22 class WPCOM_REST_API_V2_Endpoint_List_Publicize_Services extends WP_REST_Controller {
23 /**
24 * Flag to help WordPress.com decide where it should look for
25 * Publicize data. Ignored for direct requests to Jetpack sites.
26 *
27 * @var bool $wpcom_is_wpcom_only_endpoint
28 */
29 public $wpcom_is_wpcom_only_endpoint = true;
30
31 /**
32 * Constructor.
33 */
34 public function __construct() {
35 $this->namespace = 'wpcom/v2';
36 $this->rest_base = 'publicize/services';
37
38 add_action( 'rest_api_init', array( $this, 'register_routes' ) );
39 }
40
41 /**
42 * Called automatically on `rest_api_init()`.
43 */
44 public function register_routes() {
45 register_rest_route(
46 $this->namespace,
47 '/' . $this->rest_base,
48 array(
49 array(
50 'methods' => WP_REST_Server::READABLE,
51 'callback' => array( $this, 'get_items' ),
52 'permission_callback' => array( $this, 'get_items_permission_check' ),
53 ),
54 'schema' => array( $this, 'get_public_item_schema' ),
55 )
56 );
57 }
58
59 /**
60 * Schema for the publicize services endpoint.
61 *
62 * @return array
63 */
64 public function get_item_schema() {
65 $schema = array(
66 '$schema' => 'http://json-schema.org/draft-04/schema#',
67 'title' => 'jetpack-publicize-service',
68 'type' => 'object',
69 'properties' => array(
70 'name' => array(
71 'description' => __( 'Alphanumeric identifier for the Jetpack Social service', 'jetpack' ),
72 'type' => 'string',
73 ),
74 'label' => array(
75 'description' => __( 'Human readable label for the Jetpack Social service', 'jetpack' ),
76 'type' => 'string',
77 ),
78 'url' => array(
79 'description' => __( 'The URL used to connect to the Jetpack Social service', 'jetpack' ),
80 'type' => 'string',
81 'format' => 'uri',
82 ),
83 ),
84 );
85
86 return $this->add_additional_fields_schema( $schema );
87 }
88
89 /**
90 * Retrieves available Publicize Services.
91 *
92 * @see Publicize::get_available_service_data()
93 *
94 * @param WP_REST_Request $request Full details about the request.
95 *
96 * @return WP_REST_Response suitable for 1-page collection
97 */
98 public function get_items( $request ) {
99 global $publicize;
100
101 if ( ! defined( 'IS_WPCOM' ) || ! IS_WPCOM ) {
102 /**
103 * We need this because Publicize::get_available_service_data() uses `Jetpack_Keyring_Service_Helper`
104 * and `Jetpack_Keyring_Service_Helper` needs a `sharing` page to be registered.
105 */
106 require_once JETPACK__PLUGIN_DIR . '_inc/lib/class.jetpack-keyring-service-helper.php';
107 Jetpack_Keyring_Service_Helper::register_sharing_page();
108 }
109
110 $services_data = $publicize->get_available_service_data();
111
112 $services = array();
113 foreach ( $services_data as $service_data ) {
114 $services[] = $this->prepare_item_for_response( $service_data, $request );
115 }
116
117 $response = rest_ensure_response( $services );
118 $response->header( 'X-WP-Total', count( $services ) );
119 $response->header( 'X-WP-TotalPages', 1 );
120
121 return $response;
122 }
123
124 /**
125 * Filters out data based on ?_fields= request parameter
126 *
127 * @param array $service UI service connection data for a specific Publicize service.
128 * @param WP_REST_Request $request Full details about the request.
129 *
130 * @return array filtered $service
131 */
132 public function prepare_item_for_response( $service, $request ) {
133 if ( ! is_callable( array( $this, 'get_fields_for_response' ) ) ) {
134 return $service;
135 }
136
137 $fields = $this->get_fields_for_response( $request );
138
139 $response_data = array();
140 foreach ( $service as $field => $value ) {
141 if ( in_array( $field, $fields, true ) ) {
142 $response_data[ $field ] = $value;
143 }
144 }
145
146 return $response_data;
147 }
148
149 /**
150 * Verify that user can access Publicize data
151 *
152 * @return true|WP_Error
153 */
154 public function get_items_permission_check() {
155 global $publicize;
156
157 if ( ! $publicize ) {
158 return new WP_Error(
159 'publicize_not_available',
160 __( 'Sorry, Jetpack Social is not available on your site right now.', 'jetpack' ),
161 array( 'status' => rest_authorization_required_code() )
162 );
163 }
164
165 if ( $publicize->current_user_can_access_publicize_data() ) {
166 return true;
167 }
168
169 return new WP_Error(
170 'invalid_user_permission_publicize',
171 __( 'Sorry, you are not allowed to access Jetpack Social data on this site.', 'jetpack' ),
172 array( 'status' => rest_authorization_required_code() )
173 );
174 }
175 }
176 wpcom_rest_api_v2_load_plugin( 'WPCOM_REST_API_V2_Endpoint_List_Publicize_Services' );
177