PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 16.1-beta
Jetpack – WP Security, Backup, Speed, & Growth v16.1-beta
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 / jetpack_vendor / automattic / jetpack-publicize / src / rest-api / class-base-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-base-controller.php
125 lines
1 <?php
2 /**
3 * Base Controller class.
4 *
5 * @package automattic/jetpack-publicize
6 */
7
8 namespace Automattic\Jetpack\Publicize\REST_API;
9
10 use Automattic\Jetpack\Publicize\Connections;
11 use Automattic\Jetpack\Publicize\Publicize_Utils;
12 use WP_Error;
13 use WP_REST_Controller;
14 use WP_REST_Request;
15 use WP_REST_Response;
16
17 /**
18 * Base controller for Publicize endpoints.
19 */
20 abstract class Base_Controller extends WP_REST_Controller {
21
22 /**
23 * Whether to allow requests as blog.
24 *
25 * @var bool
26 */
27 protected $allow_requests_as_blog = false;
28
29 /**
30 * Constructor.
31 */
32 public function __construct() {
33 $this->wpcom_is_wpcom_only_endpoint = true;
34 }
35
36 /**
37 * Check if the request is authorized for the blog.
38 *
39 * @return bool
40 */
41 protected static function is_authorized_blog_request() {
42 if ( Publicize_Utils::is_wpcom() && is_jetpack_site( get_current_blog_id() ) ) {
43
44 $jp_auth_endpoint = new \WPCOM_REST_API_V2_Endpoint_Jetpack_Auth();
45
46 return $jp_auth_endpoint->is_jetpack_authorized_for_site() === true;
47 }
48
49 return false;
50 }
51
52 /**
53 * Filters out data based on ?_fields= request parameter
54 *
55 * @param array $item Item to prepare.
56 * @param WP_REST_Request $request Full details about the request.
57 *
58 * @return WP_REST_Response filtered item
59 */
60 public function prepare_item_for_response( $item, $request ) {
61
62 $fields = $this->get_fields_for_response( $request );
63
64 $response_data = array();
65 foreach ( $item as $field => $value ) {
66 if ( rest_is_field_included( $field, $fields ) ) {
67 $response_data[ $field ] = $value;
68 }
69 }
70
71 return rest_ensure_response( $response_data );
72 }
73
74 /**
75 * Verify that user can access Publicize data
76 *
77 * @return true|WP_Error
78 */
79 protected function publicize_permissions_check() {
80
81 global $publicize;
82
83 if ( ! $publicize ) {
84 return new WP_Error(
85 'publicize_not_available',
86 __( 'Sorry, Jetpack Social is not available on your site right now.', 'jetpack-publicize-pkg' ),
87 array( 'status' => rest_authorization_required_code() )
88 );
89 }
90
91 if ( $this->allow_requests_as_blog && self::is_authorized_blog_request() ) {
92 return true;
93 }
94
95 if ( $publicize->current_user_can_access_publicize_data() ) {
96 return true;
97 }
98
99 return new WP_Error(
100 'invalid_user_permission_publicize',
101 __( 'Sorry, you are not allowed to access Jetpack Social data on this site.', 'jetpack-publicize-pkg' ),
102 array( 'status' => rest_authorization_required_code() )
103 );
104 }
105
106 /**
107 * Check whether the request is allowed to manage (update/delete) a connection.
108 *
109 * @param WP_REST_Request $request Full details about the request.
110 * @return bool True if the request can manage connection, false otherwise.
111 */
112 protected function manage_connection_permission_check( $request ) {
113 // Editors and above can manage any connection.
114 if ( current_user_can( 'edit_others_posts' ) ) {
115 return true;
116 }
117
118 $connection_id = $request->get_param( 'connection_id' );
119
120 $connection = Connections::get_by_id( $connection_id );
121
122 return Connections::user_owns_connection( $connection );
123 }
124 }
125