PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 11.1.1
Jetpack – WP Security, Backup, Speed, & Growth v11.1.1
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 / json-endpoints / class.wpcom-json-api-render-embed-reversal-endpoint.php
jetpack / json-endpoints Last commit date
jetpack 3 years ago class.wpcom-json-api-add-widget-endpoint.php 4 years ago class.wpcom-json-api-autosave-post-v1-1-endpoint.php 5 years ago class.wpcom-json-api-bulk-delete-post-endpoint.php 4 years ago class.wpcom-json-api-bulk-restore-post-endpoint.php 4 years ago class.wpcom-json-api-bulk-update-comments-endpoint.php 4 years ago class.wpcom-json-api-comment-endpoint.php 4 years ago class.wpcom-json-api-delete-media-endpoint.php 4 years ago class.wpcom-json-api-delete-media-v1-1-endpoint.php 4 years ago class.wpcom-json-api-edit-media-v1-2-endpoint.php 4 years ago class.wpcom-json-api-get-autosave-v1-1-endpoint.php 5 years ago class.wpcom-json-api-get-comment-counts-endpoint.php 4 years ago class.wpcom-json-api-get-comment-endpoint.php 4 years ago class.wpcom-json-api-get-comment-history-endpoint.php 4 years ago class.wpcom-json-api-get-comments-tree-endpoint.php 4 years ago class.wpcom-json-api-get-comments-tree-v1-1-endpoint.php 4 years ago class.wpcom-json-api-get-comments-tree-v1-2-endpoint.php 4 years ago class.wpcom-json-api-get-customcss.php 4 years ago class.wpcom-json-api-get-media-endpoint.php 4 years ago class.wpcom-json-api-get-media-v1-1-endpoint.php 4 years ago class.wpcom-json-api-get-media-v1-2-endpoint.php 4 years ago class.wpcom-json-api-get-post-counts-v1-1-endpoint.php 4 years ago class.wpcom-json-api-get-post-endpoint.php 4 years ago class.wpcom-json-api-get-post-v1-1-endpoint.php 4 years ago class.wpcom-json-api-get-site-endpoint.php 4 years ago class.wpcom-json-api-get-site-v1-2-endpoint.php 4 years ago class.wpcom-json-api-get-taxonomies-endpoint.php 4 years ago class.wpcom-json-api-get-taxonomy-endpoint.php 4 years ago class.wpcom-json-api-get-term-endpoint.php 4 years ago class.wpcom-json-api-list-comments-endpoint.php 4 years ago class.wpcom-json-api-list-embeds-endpoint.php 4 years ago class.wpcom-json-api-list-media-endpoint.php 4 years ago class.wpcom-json-api-list-media-v1-1-endpoint.php 4 years ago class.wpcom-json-api-list-media-v1-2-endpoint.php 4 years ago class.wpcom-json-api-list-post-type-taxonomies-endpoint.php 4 years ago class.wpcom-json-api-list-post-types-endpoint.php 4 years ago class.wpcom-json-api-list-posts-endpoint.php 4 years ago class.wpcom-json-api-list-posts-v1-1-endpoint.php 4 years ago class.wpcom-json-api-list-posts-v1-2-endpoint.php 4 years ago class.wpcom-json-api-list-roles-endpoint.php 4 years ago class.wpcom-json-api-list-shortcodes-endpoint.php 4 years ago class.wpcom-json-api-list-terms-endpoint.php 4 years ago class.wpcom-json-api-list-users-endpoint.php 4 years ago class.wpcom-json-api-menus-v1-1-endpoint.php 4 years ago class.wpcom-json-api-post-endpoint.php 3 years ago class.wpcom-json-api-post-v1-1-endpoint.php 3 years ago class.wpcom-json-api-render-embed-endpoint.php 4 years ago class.wpcom-json-api-render-embed-reversal-endpoint.php 4 years ago class.wpcom-json-api-render-endpoint.php 4 years ago class.wpcom-json-api-render-shortcode-endpoint.php 4 years ago class.wpcom-json-api-sharing-buttons-endpoint.php 4 years ago class.wpcom-json-api-site-settings-endpoint.php 3 years ago class.wpcom-json-api-site-settings-v1-2-endpoint.php 4 years ago class.wpcom-json-api-site-settings-v1-3-endpoint.php 4 years ago class.wpcom-json-api-site-settings-v1-4-endpoint.php 4 years ago class.wpcom-json-api-site-user-endpoint.php 4 years ago class.wpcom-json-api-taxonomy-endpoint.php 4 years ago class.wpcom-json-api-update-comment-endpoint.php 4 years ago class.wpcom-json-api-update-customcss.php 4 years ago class.wpcom-json-api-update-media-endpoint.php 4 years ago class.wpcom-json-api-update-media-v1-1-endpoint.php 4 years ago class.wpcom-json-api-update-post-endpoint.php 4 years ago class.wpcom-json-api-update-post-v1-1-endpoint.php 4 years ago class.wpcom-json-api-update-post-v1-2-endpoint.php 4 years ago class.wpcom-json-api-update-site-homepage-endpoint.php 4 years ago class.wpcom-json-api-update-site-logo-endpoint.php 4 years ago class.wpcom-json-api-update-taxonomy-endpoint.php 4 years ago class.wpcom-json-api-update-term-endpoint.php 4 years ago class.wpcom-json-api-update-user-endpoint.php 4 years ago class.wpcom-json-api-upload-media-endpoint.php 4 years ago class.wpcom-json-api-upload-media-v1-1-endpoint.php 4 years ago
class.wpcom-json-api-render-embed-reversal-endpoint.php
138 lines
1 <?php // phpcs:ignore WordPress.Files.FileName.InvalidClassFileName
2
3 new WPCOM_JSON_API_Render_Embed_Reversal_Endpoint(
4 array(
5 'description' => 'Determines if the given embed code can be reversed into a single line embed or a shortcode, and if so returns the embed or shortcode. Note: The current user must have publishing access.',
6 'group' => '__do_not_document',
7 'stat' => 'embeds:reversal',
8 'method' => 'POST',
9 'path' => '/sites/%s/embeds/reversal',
10 'path_labels' => array(
11 '$site' => '(int|string) Site ID or domain',
12 ),
13 'request_format' => array(
14 'maybe_embed' => '(string) The embed code to reverse. Required. Only accepts one at a time.',
15 ),
16 'response_format' => array(
17 'maybe_embed' => '(string) The original embed code that was passed in for rendering.',
18 'reversal_type' => '(string) The type of reversal. Either an embed or a shortcode.',
19 'render_result' => '(html) The rendered HTML result of the embed or shortcode.',
20 'result' => '(string) The reversed content. Either a single line embed or a shortcode.',
21 'scripts' => '(array) An array of JavaScript files needed to render the embed or shortcode. Returned in the format of <code>{ "script-slug" : { "src": "http://example.com/file.js", "extra" : "" } }</code> where extra contains any neccessary extra JS for initializing the source file and src contains the script to load. Omitted if no scripts are neccessary.',
22 'styles' => '(array) An array of CSS files needed to render the embed or shortcode. Returned in the format of <code>{ "style-slug" : { "src": "http://example.com/file.css", "media" : "all" } }</code>. Omitted if no styles are neccessary.',
23 ),
24 'example_request' => 'https://public-api.wordpress.com/rest/v1/sites/82974409/shortcode-reversals/render/',
25 'example_request_data' => array(
26 'headers' => array(
27 'authorization' => 'Bearer YOUR_API_TOKEN',
28 ),
29
30 'body' => array(
31 'maybe_embed' => '<iframe width="480" height="302" src="http://www.ustream.tv/embed/recorded/26370522/highlight/299667?v=3&amp;wmode=direct" scrolling="no" frameborder="0"></iframe>',
32 ),
33 ),
34 )
35 );
36
37 /**
38 * Render embed reversal class.
39 *
40 * /sites/%s/embeds/reversal -> $blog_id
41 */
42 class WPCOM_JSON_API_Render_Embed_Reversal_Endpoint extends WPCOM_JSON_API_Render_Endpoint {
43 /**
44 * API callback.
45 *
46 * @param string $path - the path (unused).
47 * @param int $blog_id - the blog ID.
48 *
49 * @return array|WP_Error
50 */
51 public function callback( $path = '', $blog_id = 0 ) {
52 $blog_id = $this->api->switch_to_blog_and_validate_user( $this->api->get_blog_id( $blog_id ) );
53 if ( is_wp_error( $blog_id ) ) {
54 return $blog_id;
55 }
56
57 if ( ! current_user_can( 'edit_posts' ) ) {
58 return new WP_Error( 'unauthorized', 'Your token must have permission to post on this blog.', 403 );
59 }
60
61 $is_embed = false;
62 $is_shortcode = false;
63
64 $input = $this->input( true );
65 $maybe_embed = trim( $input['maybe_embed'] );
66 if ( empty( $maybe_embed ) ) {
67 return new WP_Error( 'empty_embed', 'Please provide an embed code to process.', 400 );
68 }
69
70 $ksesed_content = trim( wp_strip_all_tags( wp_kses_post( $maybe_embed ), true ) );
71 if ( empty( $ksesed_content ) ) {
72 return new WP_Error( 'invalid_embed', 'Invalid or empty embed provided.', 400 );
73 }
74
75 $shortcode_pattern = get_shortcode_regex();
76 $url_pattern = '/^http(s)?:\/\/[a-z0-9-]+(.[a-z0-9-]+)*(:[0-9]+)?(\/.*)?$/i';
77 preg_match_all( "/$shortcode_pattern/s", $ksesed_content, $shortcode_matches );
78 preg_match_all( "$url_pattern", $ksesed_content, $url_matches );
79
80 if ( empty( $shortcode_matches[0] ) && empty( $url_matches[0] ) ) {
81 return new WP_Error( 'invalid_embed', 'The provided embed is not supported.', 400 );
82 }
83
84 if ( ( count( $shortcode_matches[0] ) + count( $url_matches[0] ) ) > 1 ) {
85 return new WP_Error( 'invalid_embed', 'Only one embed/shortcode reversal can be rendered at a time.', 400 );
86 }
87
88 if ( ! empty( $shortcode_matches[0] ) ) {
89 $is_shortcode = true;
90 } elseif ( ! empty( $url_matches[0] ) ) {
91 $is_embed = true;
92 }
93
94 $render = $this->process_render(
95 array( $this, 'render_shortcode_reversal' ),
96 array(
97 'shortcode_reversal' => $ksesed_content,
98 'is_shortcode' => $is_shortcode,
99 'is_embed' => $is_embed,
100 )
101 );
102
103 // if nothing happened, then the shortcode does not exist.
104 global $wp_embed;
105 if ( empty( $render ) || empty( $render['result'] ) || $ksesed_content === $render['result'] || $wp_embed->maybe_make_link( $maybe_embed ) === $render['result'] ) {
106 return new WP_Error( 'invalid_embed', 'The provided embed is not supported.', 400 );
107 }
108
109 // our output for this endpoint..
110 $return = array();
111 $return['maybe_embed'] = $maybe_embed;
112 $return['result'] = $ksesed_content;
113 $return['reversal_type'] = ( $is_embed ) ? 'embed' : 'shortcode';
114 $return['render_result'] = $render['result'];
115
116 $return = $this->add_assets( $return, $render['loaded_scripts'], $render['loaded_styles'] );
117
118 return $return;
119 }
120
121 /**
122 * Render the shortcode reversal.
123 *
124 * @param array $args - the arguments.
125 *
126 * @return mixed|false
127 */
128 public function render_shortcode_reversal( $args ) {
129 if ( $args['is_shortcode'] ) {
130 return $this->do_shortcode( $args['shortcode_reversal'] );
131 } elseif ( $args['is_embed'] ) {
132 return $this->do_embed( $args['shortcode_reversal'] );
133 }
134 return false;
135 }
136
137 }
138