PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 13.0.2
Jetpack – WP Security, Backup, Speed, & Growth v13.0.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 / class-wpcom-rest-api-v2-endpoint-podcast-player.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 2 years ago class-wpcom-rest-api-v2-endpoint-ai.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-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 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-podcast-player.php
163 lines
1 <?php
2 /**
3 * Podcast Player API
4 *
5 * @package automattic/jetpack
6 * @since 8.4.0
7 */
8
9 /**
10 * Fetch podcast feeds and parse data for the Podcast Player block.
11 *
12 * @since 8.4.0
13 */
14 class WPCOM_REST_API_V2_Endpoint_Podcast_Player extends WP_REST_Controller {
15 /**
16 * Constructor.
17 */
18 public function __construct() {
19 if ( ! class_exists( 'Jetpack_Podcast_Helper' ) ) {
20 require_once JETPACK__PLUGIN_DIR . '/_inc/lib/class-jetpack-podcast-helper.php';
21 }
22
23 $this->namespace = 'wpcom/v2';
24 $this->rest_base = 'podcast-player';
25 // This endpoint *does not* need to connect directly to Jetpack sites.
26 add_action( 'rest_api_init', array( $this, 'register_routes' ) );
27 }
28
29 /**
30 * Register the route.
31 */
32 public function register_routes() {
33 // GET /sites/<blog_id>/podcast-player - Returns feed data.
34 register_rest_route(
35 $this->namespace,
36 '/' . $this->rest_base,
37 array(
38 array(
39 'methods' => WP_REST_Server::READABLE,
40 'callback' => array( $this, 'get_player_data' ),
41 'permission_callback' => function () {
42 return current_user_can( 'edit_posts' );
43 },
44 'args' => array(
45 'url' => array(
46 'description' => __( 'The Podcast RSS feed URL.', 'jetpack' ),
47 'type' => 'string',
48 'required' => 'true',
49 'validate_callback' => function ( $param ) {
50 return wp_http_validate_url( $param );
51 },
52 ),
53 'guids' => array(
54 'description' => __( 'A list of unique identifiers for fetching specific podcast episodes.', 'jetpack' ),
55 'type' => 'array',
56 'required' => 'false',
57 'validate_callback' => function ( $guids ) {
58 return is_array( $guids );
59 },
60 'sanitize_callback' => function ( $guids ) {
61 return array_map( 'sanitize_text_field', $guids );
62 },
63 ),
64 'episode-options' => array(
65 'description' => __( 'Whether we should return the episodes list for use in the selection UI', 'jetpack' ),
66 'type' => 'boolean',
67 'required' => 'false',
68 ),
69 ),
70 'schema' => array( $this, 'get_public_item_schema' ),
71 ),
72 )
73 );
74
75 // GET /sites/<blog_id>/podcast-player/track-quantity - Returns number of tracks.
76 register_rest_route(
77 $this->namespace,
78 '/' . $this->rest_base . '/track-quantity',
79 array(
80 array(
81 'methods' => WP_REST_Server::READABLE,
82 'callback' => array( $this, 'get_tracks_quantity' ),
83 'permission_callback' => function () {
84 return current_user_can( 'edit_posts' );
85 },
86 ),
87 )
88 );
89 }
90
91 /**
92 * Retrieves tracks quantity
93 *
94 * @return Integer number of tracks.
95 * */
96 public function get_tracks_quantity() {
97 return rest_ensure_response( Jetpack_Podcast_Helper::get_tracks_quantity() );
98 }
99
100 /**
101 * Retrieves data needed to display a podcast player from RSS feed.
102 *
103 * @param WP_REST_Request $request The REST API request data.
104 * @return WP_REST_Response The REST API response.
105 */
106 public function get_player_data( $request ) {
107 $helper = new Jetpack_Podcast_Helper( $request['url'] );
108
109 $args = array();
110
111 if ( isset( $request['guids'] ) ) {
112 $args['guids'] = $request['guids'];
113 }
114
115 if ( isset( $request['episode-options'] ) && $request['episode-options'] ) {
116 $args['episode-options'] = true;
117 }
118
119 $player_data = $helper->get_player_data( $args );
120
121 if ( is_wp_error( $player_data ) ) {
122 return rest_ensure_response( $player_data );
123 }
124
125 $player_data = $this->prepare_for_response( $player_data, $request );
126 return rest_ensure_response( $player_data );
127 }
128
129 /**
130 * Filters out data based on ?_fields= request parameter
131 *
132 * @param array $player_data Data for the player.
133 * @param WP_REST_Request $request The request.
134 * @return array filtered $player_data
135 */
136 public function prepare_for_response( $player_data, $request ) {
137 if ( ! is_callable( array( $this, 'get_fields_for_response' ) ) ) {
138 return $player_data;
139 }
140
141 $fields = $this->get_fields_for_response( $request );
142
143 $response_data = array();
144 foreach ( $player_data as $field => $value ) {
145 if ( in_array( $field, $fields, true ) ) {
146 $response_data[ $field ] = $value;
147 }
148 }
149
150 return $response_data;
151 }
152
153 /**
154 * Retrieves the response schema, conforming to JSON Schema.
155 *
156 * @return array
157 */
158 public function get_item_schema() {
159 return Jetpack_Podcast_Helper::get_player_data_schema();
160 }
161 }
162 wpcom_rest_api_v2_load_plugin( 'WPCOM_REST_API_V2_Endpoint_Podcast_Player' );
163