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 / _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 9 months ago class-wpcom-rest-api-v2-endpoint-admin-bar.php 3 months ago class-wpcom-rest-api-v2-endpoint-admin-color.php 9 months ago class-wpcom-rest-api-v2-endpoint-admin-menu.php 1 month ago class-wpcom-rest-api-v2-endpoint-agent-guidelines-ai.php 3 weeks ago class-wpcom-rest-api-v2-endpoint-ai.php 1 month ago class-wpcom-rest-api-v2-endpoint-app-media.php 9 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 2 months ago class-wpcom-rest-api-v2-endpoint-blog-stats.php 9 months ago class-wpcom-rest-api-v2-endpoint-email-preview.php 3 months ago class-wpcom-rest-api-v2-endpoint-external-media.php 9 months ago class-wpcom-rest-api-v2-endpoint-following.php 9 months ago class-wpcom-rest-api-v2-endpoint-goodreads.php 9 months ago class-wpcom-rest-api-v2-endpoint-google-docs.php 9 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 9 months ago class-wpcom-rest-api-v2-endpoint-mcp-settings.php 1 month ago class-wpcom-rest-api-v2-endpoint-newsletter-categories-list.php 9 months ago class-wpcom-rest-api-v2-endpoint-newsletter-categories-subscriptions-count.php 9 months ago class-wpcom-rest-api-v2-endpoint-newsletter-categories-subscriptions.php 3 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 9 months ago class-wpcom-rest-api-v2-endpoint-related-posts.php 9 months ago class-wpcom-rest-api-v2-endpoint-resolve-redirect.php 9 months ago class-wpcom-rest-api-v2-endpoint-search.php 1 month ago class-wpcom-rest-api-v2-endpoint-send-email-preview.php 3 weeks ago class-wpcom-rest-api-v2-endpoint-subscribers-list.php 1 month ago class-wpcom-rest-api-v2-endpoint-template-loader.php 9 months ago class-wpcom-rest-api-v2-endpoint-top-posts.php 3 months ago class-wpcom-rest-api-v2-endpoint-transient.php 9 months ago class-wpcom-rest-api-v3-endpoint-blogging-prompts.php 9 months ago class-wpcom-rest-api-v3-endpoint-jitm.php 9 months ago gutenberg-available-extensions.php 9 months ago hello.php 9 months ago memberships.php 2 months ago publicize-connection-test-results.php 9 months ago service-api-keys.php 2 months ago sites-posts-featured-media-url.php 9 months ago subscribers.php 9 months ago
class-wpcom-rest-api-v2-endpoint-podcast-player.php
175 lines
1 <?php
2 /**
3 * Podcast Player API
4 *
5 * @package automattic/jetpack
6 * @since 8.4.0
7 */
8
9 if ( ! defined( 'ABSPATH' ) ) {
10 exit( 0 );
11 }
12
13 /**
14 * Fetch podcast feeds and parse data for the Podcast Player block.
15 *
16 * @since 8.4.0
17 */
18 class WPCOM_REST_API_V2_Endpoint_Podcast_Player extends WP_REST_Controller {
19 /**
20 * Constructor.
21 */
22 public function __construct() {
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 if ( ! class_exists( 'Jetpack_Podcast_Helper' ) ) {
98 require_once JETPACK__PLUGIN_DIR . '/_inc/lib/class-jetpack-podcast-helper.php';
99 }
100
101 return rest_ensure_response( Jetpack_Podcast_Helper::get_tracks_quantity() );
102 }
103
104 /**
105 * Retrieves data needed to display a podcast player from RSS feed.
106 *
107 * @param WP_REST_Request $request The REST API request data.
108 * @return WP_REST_Response The REST API response.
109 */
110 public function get_player_data( $request ) {
111 if ( ! class_exists( 'Jetpack_Podcast_Helper' ) ) {
112 require_once JETPACK__PLUGIN_DIR . '/_inc/lib/class-jetpack-podcast-helper.php';
113 }
114
115 $helper = new Jetpack_Podcast_Helper( $request['url'] );
116
117 $args = array();
118
119 if ( isset( $request['guids'] ) ) {
120 $args['guids'] = $request['guids'];
121 }
122
123 if ( isset( $request['episode-options'] ) && $request['episode-options'] ) {
124 $args['episode-options'] = true;
125 }
126
127 $player_data = $helper->get_player_data( $args );
128
129 if ( is_wp_error( $player_data ) ) {
130 return rest_ensure_response( $player_data );
131 }
132
133 $player_data = $this->prepare_for_response( $player_data, $request );
134 return rest_ensure_response( $player_data );
135 }
136
137 /**
138 * Filters out data based on ?_fields= request parameter
139 *
140 * @param array $player_data Data for the player.
141 * @param WP_REST_Request $request The request.
142 * @return array filtered $player_data
143 */
144 public function prepare_for_response( $player_data, $request ) {
145 if ( ! is_callable( array( $this, 'get_fields_for_response' ) ) ) {
146 return $player_data;
147 }
148
149 $fields = $this->get_fields_for_response( $request );
150
151 $response_data = array();
152 foreach ( $player_data as $field => $value ) {
153 if ( in_array( $field, $fields, true ) ) {
154 $response_data[ $field ] = $value;
155 }
156 }
157
158 return $response_data;
159 }
160
161 /**
162 * Retrieves the response schema, conforming to JSON Schema.
163 *
164 * @return array
165 */
166 public function get_item_schema() {
167 if ( ! class_exists( 'Jetpack_Podcast_Helper' ) ) {
168 require_once JETPACK__PLUGIN_DIR . '/_inc/lib/class-jetpack-podcast-helper.php';
169 }
170
171 return Jetpack_Podcast_Helper::get_player_data_schema();
172 }
173 }
174 wpcom_rest_api_v2_load_plugin( 'WPCOM_REST_API_V2_Endpoint_Podcast_Player' );
175