PluginProbe
Jetpack – WP Security, Backup, Speed, & Growth / 16.3
Jetpack – WP Security, Backup, Speed, & Growth v16.3
16.3 16.3-beta 16.3-a.5 16.3-a.7 16.3-a.3 16.3-a.1 16.2 16.2-beta 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 All 508 releases
jetpack / jetpack_vendor / automattic / jetpack-videopress / src / class-jwt-token-bridge.php

class-jwt-token-bridge.php in Jetpack – WP Security, Backup, Speed, & Growth 16.3, at jetpack_vendor/automattic/jetpack-videopress/src/class-jwt-token-bridge.php

107 lines 2.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * VideoPress Jwt_Token_Bridge
4 *
5 * @package automattic/jetpack-videopress
6 */
7
8 namespace Automattic\Jetpack\VideoPress;
9
10 /**
11 * VideoPress Jwt_Token_Bridge class.
12 */
13 class Jwt_Token_Bridge {
14
15 /**
16 * The handle used to enqueue the script
17 *
18 * @var string
19 */
20 const SCRIPT_HANDLE = 'media-video-jwt-bridge';
21
22 /**
23 * Initializer
24 *
25 * This method should be called only once by the Initializer class. Do not call this method again.
26 */
27 public static function init() {
28 if ( ! Status::is_active() ) {
29 return;
30 }
31
32 // Expose the VideoPress token to the Block Editor context.
33 add_action( 'enqueue_block_editor_assets', array( __CLASS__, 'enqueue_jwt_token_bridge' ), 1 );
34
35 // Expose the VideoPress token to the WPAdmin context.
36 add_action( 'admin_enqueue_scripts', array( __CLASS__, 'enqueue_jwt_token_bridge' ), 1 );
37
38 // Expose the VideoPress token to the block editor canvas. In iframed editors the
39 // canvas is a separate document that only receives assets enqueued during
40 // enqueue_block_assets, and an embedded player posts its token request to its
41 // direct parent — the canvas — so the bridge must be listening there for private
42 // videos to preview (e.g. the Video Playlist block's editor preview).
43 add_action( 'enqueue_block_assets', array( __CLASS__, 'enqueue_jwt_token_bridge_for_editor_canvas' ), 1 );
44 }
45
46 /**
47 * Enqueues the jwt bridge script for the block editor canvas.
48 *
49 * Front-end loads are excluded: there the bridge is enqueued per-render only when a
50 * VideoPress block is actually on the page.
51 */
52 public static function enqueue_jwt_token_bridge_for_editor_canvas() {
53 if ( ! is_admin() ) {
54 return;
55 }
56
57 self::enqueue_jwt_token_bridge();
58 }
59
60 /**
61 * Gets the bridge script URL depending on the environment we are in
62 *
63 * @return string
64 */
65 public static function get_bridge_url() {
66 return plugins_url( '../build/lib/token-bridge.js', __FILE__ );
67 }
68
69 /**
70 * Enqueues the jwt bridge script.
71 */
72 public static function enqueue_jwt_token_bridge() {
73 global $post;
74 $post_id = isset( $post->ID ) ? absint( $post->ID ) : 0;
75
76 $bridge_url = self::get_bridge_url();
77
78 self::enqueue_script();
79
80 wp_localize_script(
81 self::SCRIPT_HANDLE,
82 'videopressAjax',
83 array(
84 'ajaxUrl' => admin_url( 'admin-ajax.php' ),
85 'bridgeUrl' => $bridge_url,
86 'post_id' => $post_id,
87 )
88 );
89 }
90
91 /**
92 * Enqueues only the JS script
93 *
94 * @param string $handle The script handle to identify the script.
95 * @return bool True if the script was successfully localized, false otherwise.
96 */
97 public static function enqueue_script( $handle = self::SCRIPT_HANDLE ) {
98 return wp_enqueue_script(
99 $handle,
100 self::get_bridge_url(),
101 array(),
102 Package_Version::PACKAGE_VERSION,
103 false
104 );
105 }
106 }
107