PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 12.6.4
Jetpack – WP Security, Backup, Speed, & Growth v12.6.4
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 / class-wpcom-rest-api-v2-endpoint-following.php
jetpack / _inc / lib / core-api / wpcom-endpoints Last commit date
business-hours.php 4 years ago class-wpcom-rest-api-v2-endpoint-admin-menu.php 3 years ago class-wpcom-rest-api-v2-endpoint-ai.php 2 years ago class-wpcom-rest-api-v2-endpoint-external-media.php 3 years ago class-wpcom-rest-api-v2-endpoint-following.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-podcast-player.php 3 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-transient.php 5 years ago class-wpcom-rest-api-v2-endpoint-tweetstorm-gather.php 3 years ago class-wpcom-rest-api-v2-endpoint-tweetstorm-parse.php 3 years ago class-wpcom-rest-api-v3-endpoint-blogging-prompts.php 3 years ago gutenberg-available-extensions.php 4 years ago hello.php 4 years ago memberships.php 3 years ago publicize-connection-test-results.php 3 years ago publicize-connections.php 3 years ago publicize-services.php 3 years ago service-api-keys.php 3 years ago sites-posts-featured-media-url.php 4 years ago subscribers.php 3 years ago trait-wpcom-rest-api-proxy-request-trait.php 2 years ago
class-wpcom-rest-api-v2-endpoint-following.php
160 lines
1 <?php
2 /**
3 * REST API endpoint for the Jetpack Blogroll block.
4 *
5 * @package automattic/jetpack
6 * @since 12.2
7 */
8
9 use Automattic\Jetpack\Connection\Client;
10 use Automattic\Jetpack\Status\Visitor;
11
12 /**
13 * Class WPCOM_REST_API_V2_Endpoint_Following
14 */
15 class WPCOM_REST_API_V2_Endpoint_Following extends WP_REST_Controller {
16 /**
17 * Namespace prefix.
18 *
19 * @var string
20 */
21 public $namespace = 'wpcom/v2';
22
23 /**
24 * Endpoint base route.
25 *
26 * @var string
27 */
28 public $rest_base = 'following';
29
30 /**
31 * Constructor.
32 */
33 public function __construct() {
34 $this->wpcom_is_wpcom_only_endpoint = true;
35 $this->wpcom_is_site_specific_endpoint = false;
36
37 add_action( 'rest_api_init', array( $this, 'register_routes' ) );
38 }
39
40 /**
41 * Register routes.
42 */
43 public function register_routes() {
44 register_rest_route(
45 $this->namespace,
46 $this->rest_base . '/mine',
47 array(
48 array(
49 'methods' => WP_REST_Server::READABLE,
50 'callback' => array( $this, 'get_following' ),
51 'permission_callback' => array( $this, 'permission_check' ),
52 'args' => array(
53 'ignore_user_blogs' => array(
54 'type' => 'boolean',
55 ),
56 ),
57 ),
58 )
59 );
60
61 register_rest_route(
62 $this->namespace,
63 $this->rest_base . '/recommendations',
64 array(
65 array(
66 'methods' => WP_REST_Server::READABLE,
67 'callback' => array( $this, 'get_recommendations' ),
68 'permission_callback' => array( $this, 'permission_check' ),
69 'args' => array(
70 'number' => array(
71 'type' => 'number',
72 'default' => 5,
73 'validate_callback' => function ( $param ) {
74 return is_numeric( $param ) && $param <= 20;
75 },
76 ),
77 ),
78 ),
79 )
80 );
81 }
82
83 /**
84 * Check if user has edit post permission.
85 *
86 * @return true|WP_Error True if the request has access to create items, WP_Error object otherwise.
87 */
88 public function permission_check() {
89 return current_user_can( 'edit_posts' );
90 }
91
92 /**
93 * Gets the sites the user is following
94 *
95 * @param WP_REST_Request $request Full details about the request.
96 * @return array|WP_Error list of followed sites, WP_Error otherwise
97 */
98 public function get_following( $request ) {
99 $ignore_user_blogs = $request->get_param( 'ignore_user_blogs' );
100
101 if ( defined( 'IS_WPCOM' ) && IS_WPCOM ) {
102 require_lib( 'wpcom-get-user-followed-blogs' );
103 return get_user_followed_blogs( get_current_user_id(), $ignore_user_blogs );
104 }
105
106 $body = Client::wpcom_json_api_request_as_user(
107 sprintf( '/me/following%s', $ignore_user_blogs ? '?ignore_user_blogs=true' : '' ),
108 '2',
109 array(
110 'method' => 'GET',
111 'headers' => array(
112 'Content-Type' => 'application/json',
113 'X-Forwarded-For' => ( new Visitor() )->get_ip( true ),
114 ),
115 )
116 );
117
118 if ( is_wp_error( $body ) ) {
119 return $body;
120 }
121
122 return json_decode( wp_remote_retrieve_body( $body ) );
123 }
124
125 /**
126 * Gets recommended sites for user
127 *
128 * @param WP_REST_Request $request Full details about the request.
129 * @return array|WP_Error list of following recommendations, WP_Error otherwise
130 */
131 public function get_recommendations( $request ) {
132 $number_of_recommendations = $request->get_param( 'number' );
133
134 if ( defined( 'IS_WPCOM' ) && IS_WPCOM ) {
135 require_lib( 'wpcom-get-user-followed-blogs' );
136 return get_user_following_recommendations( get_current_user_id(), $number_of_recommendations );
137 }
138
139 $body = Client::wpcom_json_api_request_as_user(
140 sprintf( '/me/following/recommendations?number=%d', $number_of_recommendations ),
141 '2',
142 array(
143 'method' => 'GET',
144 'headers' => array(
145 'Content-Type' => 'application/json',
146 'X-Forwarded-For' => ( new Visitor() )->get_ip( true ),
147 ),
148 )
149 );
150
151 if ( is_wp_error( $body ) ) {
152 return $body;
153 }
154
155 return json_decode( wp_remote_retrieve_body( $body ) );
156 }
157 }
158
159 wpcom_rest_api_v2_load_plugin( 'WPCOM_REST_API_V2_Endpoint_Following' );
160