PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 16.1-beta
Jetpack – WP Security, Backup, Speed, & Growth v16.1-beta
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 8 months ago class-wpcom-rest-api-v2-endpoint-admin-bar.php 3 months ago class-wpcom-rest-api-v2-endpoint-admin-color.php 8 months ago class-wpcom-rest-api-v2-endpoint-admin-menu.php 1 month ago class-wpcom-rest-api-v2-endpoint-agent-guidelines-ai.php 2 weeks ago class-wpcom-rest-api-v2-endpoint-ai.php 1 month ago class-wpcom-rest-api-v2-endpoint-app-media.php 8 months ago class-wpcom-rest-api-v2-endpoint-application-password-extras.php 5 months ago class-wpcom-rest-api-v2-endpoint-block-editor-assets.php 1 month ago class-wpcom-rest-api-v2-endpoint-blog-stats.php 8 months ago class-wpcom-rest-api-v2-endpoint-email-preview.php 3 months ago class-wpcom-rest-api-v2-endpoint-external-media.php 8 months ago class-wpcom-rest-api-v2-endpoint-following.php 8 months ago class-wpcom-rest-api-v2-endpoint-goodreads.php 8 months ago class-wpcom-rest-api-v2-endpoint-google-docs.php 8 months ago class-wpcom-rest-api-v2-endpoint-guidelines-banner-dismissed.php 1 month ago class-wpcom-rest-api-v2-endpoint-instagram-gallery.php 3 months ago class-wpcom-rest-api-v2-endpoint-mailchimp.php 8 months ago class-wpcom-rest-api-v2-endpoint-mcp-settings.php 1 month ago class-wpcom-rest-api-v2-endpoint-newsletter-categories-list.php 8 months ago class-wpcom-rest-api-v2-endpoint-newsletter-categories-subscriptions-count.php 8 months ago class-wpcom-rest-api-v2-endpoint-newsletter-categories-subscriptions.php 2 weeks ago class-wpcom-rest-api-v2-endpoint-newsletter-email-sent-status.php 4 months ago class-wpcom-rest-api-v2-endpoint-podcast-player.php 3 months ago class-wpcom-rest-api-v2-endpoint-profile.php 8 months ago class-wpcom-rest-api-v2-endpoint-related-posts.php 8 months ago class-wpcom-rest-api-v2-endpoint-resolve-redirect.php 8 months ago class-wpcom-rest-api-v2-endpoint-search.php 1 month ago class-wpcom-rest-api-v2-endpoint-send-email-preview.php 2 weeks ago class-wpcom-rest-api-v2-endpoint-subscribers-list.php 1 month ago class-wpcom-rest-api-v2-endpoint-template-loader.php 8 months ago class-wpcom-rest-api-v2-endpoint-top-posts.php 3 months ago class-wpcom-rest-api-v2-endpoint-transient.php 8 months ago class-wpcom-rest-api-v3-endpoint-blogging-prompts.php 8 months ago class-wpcom-rest-api-v3-endpoint-jitm.php 8 months ago gutenberg-available-extensions.php 8 months ago hello.php 8 months ago memberships.php 1 month ago publicize-connection-test-results.php 8 months ago service-api-keys.php 2 months ago sites-posts-featured-media-url.php 8 months ago subscribers.php 8 months ago
class-wpcom-rest-api-v2-endpoint-following.php
155 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 if ( ! defined( 'ABSPATH' ) ) {
13 exit( 0 );
14 }
15
16 /**
17 * Class WPCOM_REST_API_V2_Endpoint_Following
18 */
19 class WPCOM_REST_API_V2_Endpoint_Following extends WP_REST_Controller {
20 /**
21 * Namespace prefix.
22 *
23 * @var string
24 */
25 public $namespace = 'wpcom/v2';
26
27 /**
28 * Endpoint base route.
29 *
30 * @var string
31 */
32 public $rest_base = 'following';
33
34 /**
35 * Constructor.
36 */
37 public function __construct() {
38 $this->wpcom_is_wpcom_only_endpoint = true;
39 $this->wpcom_is_site_specific_endpoint = false;
40
41 add_action( 'rest_api_init', array( $this, 'register_routes' ) );
42 }
43
44 /**
45 * Register routes.
46 */
47 public function register_routes() {
48 register_rest_route(
49 $this->namespace,
50 $this->rest_base . '/mine',
51 array(
52 array(
53 'methods' => WP_REST_Server::READABLE,
54 'callback' => array( $this, 'get_following' ),
55 'permission_callback' => 'is_user_logged_in',
56 'args' => array(
57 'ignore_user_blogs' => array(
58 'type' => 'boolean',
59 ),
60 ),
61 ),
62 )
63 );
64
65 register_rest_route(
66 $this->namespace,
67 $this->rest_base . '/recommendations',
68 array(
69 array(
70 'methods' => WP_REST_Server::READABLE,
71 'callback' => array( $this, 'get_recommendations' ),
72 'permission_callback' => 'is_user_logged_in',
73 'args' => array(
74 'number' => array(
75 'type' => 'number',
76 'default' => 5,
77 'validate_callback' => function ( $param ) {
78 return is_numeric( $param ) && $param <= 20;
79 },
80 ),
81 ),
82 ),
83 )
84 );
85 }
86
87 /**
88 * Gets the sites the user is following
89 *
90 * @param WP_REST_Request $request Full details about the request.
91 * @return array|WP_Error list of followed sites, WP_Error otherwise
92 */
93 public function get_following( $request ) {
94 $ignore_user_blogs = $request->get_param( 'ignore_user_blogs' );
95
96 if ( defined( 'IS_WPCOM' ) && IS_WPCOM ) {
97 require_lib( 'wpcom-get-user-followed-blogs' );
98 return get_user_followed_blogs( get_current_user_id(), $ignore_user_blogs );
99 }
100
101 $body = Client::wpcom_json_api_request_as_user(
102 sprintf( '/me/following%s', $ignore_user_blogs ? '?ignore_user_blogs=true' : '' ),
103 '2',
104 array(
105 'method' => 'GET',
106 'headers' => array(
107 'Content-Type' => 'application/json',
108 'X-Forwarded-For' => ( new Visitor() )->get_ip( true ),
109 ),
110 )
111 );
112
113 if ( is_wp_error( $body ) ) {
114 return $body;
115 }
116
117 return json_decode( wp_remote_retrieve_body( $body ) );
118 }
119
120 /**
121 * Gets recommended sites for user
122 *
123 * @param WP_REST_Request $request Full details about the request.
124 * @return array|WP_Error list of following recommendations, WP_Error otherwise
125 */
126 public function get_recommendations( $request ) {
127 $number_of_recommendations = $request->get_param( 'number' );
128
129 if ( defined( 'IS_WPCOM' ) && IS_WPCOM ) {
130 require_lib( 'wpcom-get-user-followed-blogs' );
131 return get_user_following_recommendations( get_current_user_id(), $number_of_recommendations );
132 }
133
134 $body = Client::wpcom_json_api_request_as_user(
135 sprintf( '/me/following/recommendations?number=%d', $number_of_recommendations ),
136 '2',
137 array(
138 'method' => 'GET',
139 'headers' => array(
140 'Content-Type' => 'application/json',
141 'X-Forwarded-For' => ( new Visitor() )->get_ip( true ),
142 ),
143 )
144 );
145
146 if ( is_wp_error( $body ) ) {
147 return $body;
148 }
149
150 return json_decode( wp_remote_retrieve_body( $body ) );
151 }
152 }
153
154 wpcom_rest_api_v2_load_plugin( 'WPCOM_REST_API_V2_Endpoint_Following' );
155