PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 16.1-beta.2
Jetpack – WP Security, Backup, Speed, & Growth v16.1-beta.2
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 / jetpack_vendor / automattic / jetpack-publicize / src / rest-api / class-services-controller.php
jetpack / jetpack_vendor / automattic / jetpack-publicize / src / rest-api Last commit date
class-base-controller.php 9 months ago class-connections-controller.php 3 weeks ago class-connections-post-field.php 4 weeks ago class-keyring-result-controller.php 2 months ago class-message-templates-placeholders-controller.php 3 months ago class-proxy-requests.php 9 months ago class-render-messages-controller.php 4 weeks ago class-scheduled-actions-controller.php 9 months ago class-services-controller.php 3 weeks ago class-share-post-controller.php 9 months ago class-share-status-controller.php 9 months ago class-social-image-generator-controller.php 9 months ago
class-services-controller.php
174 lines
1 <?php
2 /**
3 * The Publicize services Controller class.
4 *
5 * @package automattic/jetpack-publicize
6 */
7
8 namespace Automattic\Jetpack\Publicize\REST_API;
9
10 use Automattic\Jetpack\Connection\Traits\WPCOM_REST_API_Proxy_Request;
11 use Automattic\Jetpack\Publicize\Publicize_Utils;
12 use Automattic\Jetpack\Publicize\Services;
13 use WP_Error;
14 use WP_REST_Request;
15 use WP_REST_Response;
16 use WP_REST_Server;
17
18 if ( ! defined( 'ABSPATH' ) ) {
19 exit( 0 );
20 }
21
22 /**
23 * Services Controller class.
24 *
25 * @phan-constructor-used-for-side-effects
26 */
27 class Services_Controller extends Base_Controller {
28
29 use WPCOM_REST_API_Proxy_Request;
30
31 /**
32 * Constructor.
33 */
34 public function __construct() {
35 parent::__construct();
36
37 $this->base_api_path = 'wpcom';
38 $this->version = 'v2';
39
40 $this->namespace = "{$this->base_api_path}/{$this->version}";
41 $this->rest_base = 'publicize/services';
42
43 add_action( 'rest_api_init', array( $this, 'register_routes' ) );
44 }
45
46 /**
47 * Register the routes.
48 */
49 public function register_routes() {
50 register_rest_route(
51 $this->namespace,
52 '/' . $this->rest_base,
53 array(
54 array(
55 'methods' => WP_REST_Server::READABLE,
56 'callback' => array( $this, 'get_items' ),
57 'permission_callback' => array( $this, 'get_items_permissions_check' ),
58 ),
59 'schema' => array( $this, 'get_public_item_schema' ),
60 )
61 );
62 }
63
64 /**
65 * Schema for the endpoint.
66 *
67 * @return array
68 */
69 public function get_item_schema() {
70 if ( $this->schema ) {
71 return $this->add_additional_fields_schema( $this->schema );
72 }
73 $schema = array(
74 '$schema' => 'http://json-schema.org/draft-04/schema#',
75 'title' => 'jetpack-publicize-service',
76 'type' => 'object',
77 'properties' => array(
78 'id' => array(
79 'type' => 'string',
80 'description' => __( 'Alphanumeric slug for the service.', 'jetpack-publicize-pkg' ),
81 ),
82 'description' => array(
83 'type' => 'string',
84 'description' => __( 'Description for the service.', 'jetpack-publicize-pkg' ),
85 ),
86 'label' => array(
87 'type' => 'string',
88 'description' => __( 'Human-readable label for the Jetpack Social service.', 'jetpack-publicize-pkg' ),
89 ),
90 'status' => array(
91 'type' => 'string',
92 'description' => __( 'Status of the service.', 'jetpack-publicize-pkg' ),
93 'enum' => array( null, 'ok', 'unsupported' ),
94 ),
95 'supports' => array(
96 'type' => 'object',
97 'description' => __( 'An object of features that the service supports.', 'jetpack-publicize-pkg' ),
98 'properties' => array(
99 'additional_users' => array(
100 'type' => 'boolean',
101 'description' => __( 'Whether the service is supported for multiple additional user accounts.', 'jetpack-publicize-pkg' ),
102 ),
103 'additional_users_only' => array(
104 'type' => 'boolean',
105 'description' => __( 'Whether the service supports only the additional users and not the main user account.', 'jetpack-publicize-pkg' ),
106 ),
107 ),
108 ),
109 'url' => array(
110 'type' => 'string',
111 'description' => __( 'URL to use for connecting an account for the service.', 'jetpack-publicize-pkg' ),
112 ),
113 ),
114 );
115
116 $this->schema = $schema;
117
118 return $this->add_additional_fields_schema( $schema );
119 }
120
121 /**
122 * Verify that the request has access to services list.
123 *
124 * @param WP_REST_Request $request Full details about the request.
125 * @return true|WP_Error
126 */
127 public function get_items_permissions_check( $request ) {// phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable
128 return $this->publicize_permissions_check();
129 }
130
131 /**
132 * Get list of Publicize services.
133 *
134 * @param WP_REST_Request $request Full details about the request.
135 *
136 * @return WP_REST_Response suitable for 1-page collection
137 */
138 public function get_items( $request ) {
139 if ( Publicize_Utils::is_wpcom() ) {
140
141 $items = array();
142
143 /*
144 * Neither path goes through Services::get_all(), so the filter is applied
145 * here too to keep the REST route consistent with it.
146 *
147 * This filter is documented in projects/packages/publicize/src/class-services.php
148 */
149 $services = (array) apply_filters( 'jetpack_publicize_services', Services::wpcom_get_all() );
150
151 foreach ( $services as $item ) {
152 $data = $this->prepare_item_for_response( $item, $request );
153
154 $items[] = $this->prepare_response_for_collection( $data );
155 }
156 } else {
157 $items = $this->proxy_request_to_wpcom_as_user( $request );
158
159 if ( is_wp_error( $items ) ) {
160 return $items;
161 }
162
163 /** This filter is documented in projects/packages/publicize/src/class-services.php */
164 $items = (array) apply_filters( 'jetpack_publicize_services', $items );
165 }
166
167 $response = rest_ensure_response( $items );
168 $response->header( 'X-WP-Total', (string) count( $items ) );
169 $response->header( 'X-WP-TotalPages', '1' );
170
171 return $response;
172 }
173 }
174