PluginProbe
Elementor Website Builder – more than just a page builder / 3.13.2
Elementor Website Builder – more than just a page builder v3.13.2
4.3.0-beta2 4.3.0-beta1 4.2.4 4.2.3 4.2.2 4.2.1 4.2.0 4.1.5 4.2.0-beta2 4.2.0-dev2 4.2.0-beta1 4.1.4 4.1.3 4.1.2 4.1.1 4.1.0 4.1.0-beta3 4.1.0-dev3 4.0.9 4.1.0-beta2 4.1.0-dev2 4.0.8 4.1.0-beta1 4.1.0-dev1 4.0.7 All 451 releases
← All changes | includes/embed.php +14 -60 4.2.0-dev23.13.2 View file →
@@ -9,9 +9,9 @@
9 9 * Elementor embed.
10 10 *
11 11 * Elementor embed handler class is responsible for Elementor embed functionality.
12 12 * The class holds the supported providers with their embed patters, and handles
13 - * their custom properties to create custom HTML with the embedded content.
13 + * their custom properties to create custom HTML with the embeded content.
14 14 *
15 15 * @since 1.5.0
16 16 */
17 17 class Embed {
@@ -16,25 +16,8 @@
16 16 */
17 17 class Embed {
18 18
19 19 /**
20 - * Embeddable background video providers.
21 - *
22 - * Holds the list of providers whose background video is rendered as an embedded
23 - * iframe player (.elementor-background-video-embed) rather than a hosted <video>
24 - * element. This is intentionally a SUBSET of the providers recognized by
25 - * get_video_properties() — the frontend background-video handler only mounts
26 - * YouTube/Vimeo players, so other providers must fall through to hosted rendering.
27 - *
28 - * @access private
29 - * @static
30 - *
31 - * @var array Embeddable background video provider slugs.
32 - */
33 - private static $video_embed_providers = [ 'youtube', 'vimeo' ];
34 -
35 -
36 - /**
37 20 * Provider match masks.
38 21 *
39 22 * Holds a list of supported providers with their URL structure in a regex format.
40 23 *
@@ -44,15 +27,11 @@
44 27 *
45 28 * @var array Provider URL structure regex.
46 29 */
47 30 private static $provider_match_masks = [
48 - 'youtube' => '/^.*(?:youtu\.be\/|youtube(?:-nocookie)?\.com\/(?:(?:watch)?\?(?:.*&)?vi?=|(?:embed|v|vi|user|shorts)\/))([^\?&\"\'>]+)/',
31 + 'youtube' => '/^.*(?:youtu\.be\/|youtube(?:-nocookie)?\.com\/(?:(?:watch)?\?(?:.*&)?vi?=|(?:embed|v|vi|user)\/))([^\?&\"\'>]+)/',
49 32 'vimeo' => '/^.*vimeo\.com\/(?:[a-z]*\/)*([‌​0-9]{6,11})[?]?.*/',
50 33 'dailymotion' => '/^.*dailymotion.com\/(?:video|hub)\/([^_]+)[^#]*(#video=([^_&]+))?/',
51 - 'videopress' => [
52 - '/^(?:http(?:s)?:\/\/)?videos\.files\.wordpress\.com\/([a-zA-Z\d]{8,})\//i',
53 - '/^(?:http(?:s)?:\/\/)?(?:www\.)?video(?:\.word)?press\.com\/(?:v|embed)\/([a-zA-Z\d]{8,})(.+)?/i',
54 - ],
55 34 ];
56 35
57 36 /**
58 37 * Embed patterns.
@@ -68,9 +47,8 @@
68 47 private static $embed_patterns = [
69 48 'youtube' => 'https://www.youtube{NO_COOKIE}.com/embed/{VIDEO_ID}?feature=oembed',
70 49 'vimeo' => 'https://player.vimeo.com/video/{VIDEO_ID}#t={TIME}',
71 50 'dailymotion' => 'https://dailymotion.com/embed/video/{VIDEO_ID}',
72 - 'videopress' => 'https://videopress.com/embed/{VIDEO_ID}',
73 51 ];
74 52
75 53 /**
76 54 * Get video properties.
@@ -86,19 +64,15 @@
86 64 * @return null|array The video properties, or null.
87 65 */
88 66 public static function get_video_properties( $video_url ) {
89 67 foreach ( self::$provider_match_masks as $provider => $match_mask ) {
90 - if ( ! is_array( $match_mask ) ) {
91 - $match_mask = [ $match_mask ];
92 - }
68 + preg_match( $match_mask, $video_url, $matches );
93 69
94 - foreach ( $match_mask as $mask ) {
95 - if ( preg_match( $mask, $video_url, $matches ) ) {
96 - return [
97 - 'provider' => $provider,
98 - 'video_id' => $matches[1],
99 - ];
100 - }
70 + if ( $matches ) {
71 + return [
72 + 'provider' => $provider,
73 + 'video_id' => $matches[1],
74 + ];
101 75 }
102 76 }
103 77
104 78 return null;
@@ -104,24 +78,8 @@
104 78 return null;
105 79 }
106 80
107 81 /**
108 - * Is embeddable background video.
109 - *
110 - * Whether a given video URL belongs to a provider that the frontend
111 - * background-video handler renders as an embedded iframe player.
112 - *
113 - * @param string $video_url Video URL.
114 - *
115 - * @return bool
116 - **/
117 - public static function is_embed_video( $video_url ) {
118 - $video_properties = self::get_video_properties( $video_url );
119 -
120 - return null !== $video_properties && in_array( $video_properties['provider'], self::$video_embed_providers, true );
121 - }
122 -
123 - /**
124 82 * Get embed URL.
125 83 *
126 84 * Retrieve the embed URL for a given video.
127 85 *
@@ -211,9 +169,8 @@
211 169
212 170 $default_frame_attributes = [
213 171 'class' => 'elementor-video-iframe',
214 172 'allowfullscreen',
215 - 'allow' => 'clipboard-write',
216 173 'title' => sprintf(
217 174 /* translators: %s: Video provider */
218 175 __( '%s Video Player', 'elementor' ),
219 176 $video_properties['provider']
@@ -223,18 +180,14 @@
223 180 $video_embed_url = self::get_embed_url( $video_url, $embed_url_params, $options );
224 181 if ( ! $video_embed_url ) {
225 182 return null;
226 183 }
227 - if ( ! isset( $options['lazy_load'] ) || ! $options['lazy_load'] ) {
184 + if ( ! $options['lazy_load'] ) {
228 185 $default_frame_attributes['src'] = $video_embed_url;
229 186 } else {
230 187 $default_frame_attributes['data-lazy-load'] = $video_embed_url;
231 188 }
232 189
233 - if ( isset( $embed_url_params['autoplay'] ) ) {
234 - $default_frame_attributes['allow'] = 'autoplay';
235 - }
236 -
237 190 $frame_attributes = array_merge( $default_frame_attributes, $frame_attributes );
238 191
239 192 $attributes_for_print = [];
240 193
@@ -259,10 +212,10 @@
259 212 /**
260 213 * Get oembed data from the cache.
261 214 * if not exists in the cache it will fetch from provider and then save to the cache.
262 215 *
263 - * @param string $oembed_url
264 - * @param string $cached_post_id
216 + * @param $oembed_url
217 + * @param $cached_post_id
265 218 *
266 219 * @return array|null
267 220 */
268 221 public static function get_oembed_data( $oembed_url, $cached_post_id ) {
@@ -290,9 +243,10 @@
290 243
291 244 /**
292 245 * Fetch oembed data from oembed provider.
293 246 *
294 - * @param string $oembed_url
247 + * @param $oembed_url
248 + *
295 249 * @return array|null
296 250 */
297 251 public static function fetch_oembed_data( $oembed_url ) {
298 252 $oembed_data = _wp_oembed_get_object()->get_data( $oembed_url );
@@ -307,9 +261,9 @@
307 261 ];
308 262 }
309 263
310 264 /**
311 - * @param string $oembed_url
265 + * @param $oembed_url
312 266 * @param null|string|int $cached_post_id
313 267 *
314 268 * @return string|null
315 269 */