PluginProbe ʕ •ᴥ•ʔ
EmbedPress – PDF Embedder, Embed PDF viewer, YouTube Videos, 3D FlipBook, Social feeds & more / 4.2.4
EmbedPress – PDF Embedder, Embed PDF viewer, YouTube Videos, 3D FlipBook, Social feeds & more v4.2.4
4.5.6 4.5.5 4.5.4 4.5.3 4.5.2 trunk 1.0.0 1.1.0 1.1.1 1.1.2 1.1.3 1.2.0 1.3.0 1.3.1 1.4.0 1.4.1 1.4.2 1.4.3 1.4.4 1.5.0 1.6.0 1.6.1 1.6.2 1.6.3 1.7.0 1.7.1 1.7.2 1.7.3 1.7.4 1.7.5 2.0.0 2.0.1 2.0.2 2.0.3 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.2.0 2.2.1 2.2.2 2.3.0 2.3.1 2.3.2 2.3.3 2.4.0 2.4.1 2.5.0 2.5.1 2.5.2 2.5.3 2.5.4 2.5.5 2.6.0 2.6.1 2.6.2 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.7.6 2.7.7 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.1.0 3.1.1 3.1.2 3.1.3 3.2.0 3.2.1 3.3.0 3.3.1 3.3.2 3.3.3 3.3.4 3.3.5 3.3.6 3.3.7 3.4.0 3.4.1 3.4.2 3.4.3 3.5.0 3.5.1 3.5.2 3.5.3 3.6.0 3.6.1 3.6.2 3.6.3 3.6.4 3.6.5 3.6.6 3.6.7 3.6.8 3.7.0 3.7.1 3.7.2 3.7.3 3.8.0 3.8.1 3.8.2 3.8.3 3.8.4 3.8.5 3.9.0 3.9.1 3.9.10 3.9.11 3.9.12 3.9.13 3.9.14 3.9.15 3.9.16 3.9.17 3.9.2 3.9.3 3.9.4 3.9.5 3.9.6 3.9.7 3.9.8 3.9.9 4.0.0 4.0.1 4.0.10 4.0.11 4.0.12 4.0.13 4.0.14 4.0.2 4.0.3 4.0.4 4.0.5 4.0.6 4.0.7 4.0.8 4.0.9 4.1.0 4.1.1 4.1.10 4.1.2 4.1.3 4.1.4 4.1.5 4.1.6 4.1.7 4.1.8 4.1.9 4.2.0 4.2.1 4.2.2 4.2.3 4.2.4 4.2.5 4.2.6 4.2.7 4.2.8 4.2.9 4.3.0 4.3.1 4.4.0 4.4.1 4.4.10 4.4.11 4.4.2 4.4.3 4.4.4 4.4.5 4.4.6 4.4.7 4.4.8 4.4.9 4.5.0 4.5.1
embedpress / EmbedPress / Includes / Classes / Elementor_Enhancer.php
embedpress / EmbedPress / Includes / Classes Last commit date
Elementor_Enhancer.php 1 year ago EmbedPress_Core_Installer.php 6 years ago EmbedPress_Notice.php 2 years ago EmbedPress_Plugin_Usage_Tracker.php 1 year ago Extend_CustomPlayer_Controls.php 1 year ago Extend_Elementor_Controls.php 1 year ago Feature_Enhancer.php 1 year ago Helper.php 1 year ago
Elementor_Enhancer.php
485 lines
1 <?php
2
3 namespace EmbedPress\Includes\Classes;
4
5 use Elementor\Group_Control_Image_Size;
6 use Elementor\Utils;
7 use SplMinHeap;
8 use EmbedPress\Includes\Classes\Helper;
9
10 class Elementor_Enhancer {
11
12 public static function youtube( $embed, $setting ) {
13 if ( isset( $setting['embedpress_pro_embeded_source'] ) && 'youtube' === $setting['embedpress_pro_embeded_source'] && isset( $embed->embed ) && preg_match( '/src=\"(.+?)\"/', $embed->embed, $match ) ) {
14
15 $url_full = $match[1];
16 $query = parse_url($url_full, PHP_URL_QUERY);
17 if (!empty($query)) {
18 parse_str($query, $params);
19 } else {
20 $params = [];
21 }
22
23 $params['controls'] = $setting['embedpress_pro_youtube_display_controls'];
24 $params['iv_load_policy'] = $setting['embedpress_pro_youtube_display_video_annotations'];
25 $params['fs'] = ( $setting['embedpress_pro_youtube_enable_fullscreen_button'] === 'yes' ) ? 1 : 0;
26 $params['rel'] = ( $setting['embedpress_pro_youtube_display_related_videos'] === 'yes' ) ? 1 : 0;
27 $params['end'] = $setting['embedpress_pro_youtube_end_time'];
28 $params['playsinline'] = 1;
29 if ( $setting['embedpress_pro_youtube_auto_play'] === 'yes' ) {
30 $params['autoplay'] = 1;
31 }
32 $params['start'] = $setting['embedpress_pro_video_start_time'];
33
34 $params['color'] = $setting['embedpress_pro_youtube_progress_bar_color'];
35
36 $params = apply_filters('embedpress/elementor_enhancer_youtube', $params, $setting);
37
38 preg_match( '/(.+)?\?/', $url_full, $url );
39 if ( empty( $url) ) {
40 return $embed;
41 }
42 $url = $url[1];
43
44 // Reassemble the url with the new variables.
45 $url_modified = $url . '?';
46 foreach ( $params as $paramName => $paramValue ) {
47 $url_modified .= $paramName . '=' . $paramValue . '&';
48 }
49 // Replaces the old url with the new one.
50 $embed->embed = str_replace( $url_full, rtrim( $url_modified, '&' ), $embed->embed );
51
52 $embed = apply_filters('embedpress/elementor_enhancer_youtube_cta', $embed, $setting);
53
54 }
55
56 return $embed;
57 }
58
59 public static function apply_cta_markup( $embed, $settings, $provider_name = '' ) {
60
61 if ( empty( $settings["embedpress_pro_{$provider_name}_logo"] ) || empty( $settings["embedpress_pro_{$provider_name}_logo"]['url'] ) ) {
62 return $embed;
63 }
64 $img = Group_Control_Image_Size::get_attachment_image_html( $settings, "embedpress_pro_{$provider_name}_logo" );
65 if ( empty( $img ) ) {
66 return $embed;
67 }
68
69 $cta = '';
70 $url = '';
71 $target = '';
72 $x = ! empty( $settings["embedpress_pro_{$provider_name}_logo_xpos"] ) && ! empty( $settings["embedpress_pro_{$provider_name}_logo_xpos"]['unit'] ) ? $settings["embedpress_pro_{$provider_name}_logo_xpos"]['size'] . $settings["embedpress_pro_{$provider_name}_logo_xpos"]['unit'] : '10%';
73
74 $y = ! empty( $settings["embedpress_pro_{$provider_name}_logo_ypos"] ) && ! empty( $settings["embedpress_pro_{$provider_name}_logo_ypos"]['unit'] ) ? $settings["embedpress_pro_{$provider_name}_logo_ypos"]['size'] . $settings["embedpress_pro_{$provider_name}_logo_ypos"]['unit'] : '10%';
75 $cssClass = isset( $embed->url ) ? '.ose-uid-' . md5( $embed->url ) : ".ose-{$provider_name}";
76 ob_start();
77 ?>
78 <style type="text/css">
79 .ep-embed-content-wraper .watermark {
80 text-align: left;
81 position: relative;
82 }
83 .ep-embed-content-wraper .watermark {
84 border: 0;
85 position: absolute;
86 bottom: 10%;
87 right: 5%;
88 max-width: 150px;
89 max-height: 75px;
90 opacity: 0.35!important;
91 z-index: 5;
92 -o-transition: opacity 0.5s ease-in-out;
93 -moz-transition: opacity 0.5s ease-in-out;
94 -webkit-transition: opacity 0.5s ease-in-out;
95 transition: opacity 0.5s ease-in-out;
96 }
97
98 <?php echo esc_html($cssClass); ?> .watermark {
99 bottom: <?php echo esc_html($y); ?>;
100 right: <?php echo esc_html($x); ?>;
101 }
102
103 .ep-embed-content-wraper .watermark:hover {
104 opacity: 1!important;
105 }
106 </style>
107 <?php
108 $style = ob_get_clean();
109
110 if ( ! class_exists( '\simple_html_dom' ) ) {
111 include_once EMBEDPRESS_PATH_CORE . 'simple_html_dom.php';
112 }
113
114 if ( ! empty( $settings["embedpress_pro_{$provider_name}_cta"] ) && ! empty( $settings["embedpress_pro_{$provider_name}_cta"]['url'] ) ) {
115 $url = $settings["embedpress_pro_{$provider_name}_cta"]['url'];
116 }
117
118 if ( $url ) {
119 $atts = self::get_link_attributes( $settings["embedpress_pro_{$provider_name}_cta"] );
120 $attributes = '';
121 foreach ( $atts as $att => $value ) {
122 $attributes .= $att . '="' . esc_attr( $value ) . '" ';
123 }
124 $cta .= sprintf( '<a %s>', trim( $attributes ) );
125 }
126
127
128 $imgDom = str_get_html( $img );
129 $imgDom = $imgDom->find( 'img', 0 );
130 $imgDom->setAttribute( 'class', 'watermark' );
131 $imgDom->removeAttribute( 'style' );
132 $imgDom->setAttribute( 'width', 'auto' );
133 $imgDom->setAttribute( 'height', 'auto' );
134 ob_start();
135 echo $imgDom;
136 $cta .= ob_get_clean();
137 $imgDom->clear();
138 unset( $img, $imgDom );
139
140 if ( $url ) {
141 $cta .= '</a>';
142 }
143 $dom = str_get_html( $embed->embed );
144 $wrapDiv = $dom->find( "div.ose-{$provider_name}", 0 );
145 if ( ! empty( $wrapDiv ) && is_object( $wrapDiv ) ) {
146 $wrapDiv->innertext .= $cta;
147 }
148
149 ob_start();
150 echo $wrapDiv;
151 $markup = ob_get_clean();
152 $dom->clear();
153 unset( $dom, $wrapDiv );
154
155 $embed->embed = $style . $markup;
156
157 return $embed;
158 }
159
160 public static function get_link_attributes( $url_control ) {
161 $attributes = [];
162
163 if ( ! empty( $url_control['url'] ) ) {
164 $allowed_protocols = array_merge( wp_allowed_protocols(), [
165 'skype',
166 'viber',
167 ] );
168
169 $attributes['href'] = esc_url( $url_control['url'], $allowed_protocols );
170 }
171
172 if ( ! empty( $url_control['is_external'] ) ) {
173 $attributes['target'] = '_blank';
174 }
175
176 if ( ! empty( $url_control['nofollow'] ) ) {
177 $attributes['rel'] = 'nofollow';
178 }
179
180 if ( ! empty( $url_control['custom_attributes'] ) ) {
181 // Custom URL attributes should come as a string of comma-delimited key|value pairs
182 $attributes = array_merge( $attributes, Utils::parse_custom_attributes( $url_control['custom_attributes'] ) );
183 }
184
185 return $attributes;
186 }
187
188 public static function vimeo( $embed, $setting ) {
189
190 if ( ! isset( $embed->provider_name ) || strtoupper( $embed->provider_name ) !== 'VIMEO' || ! isset( $embed->embed ) || $setting['embedpress_pro_embeded_source'] !== 'vimeo' ) {
191 return $embed;
192 }
193 preg_match( '/src=\"(.+?)\"/', $embed->embed, $match );
194 $url_full = $match[1];
195 $params = [
196 'color' => str_replace('#', '', isset($setting['embedpress_pro_vimeo_color']) ? $setting['embedpress_pro_vimeo_color'] : ''),
197 'title' => $setting['embedpress_pro_vimeo_display_title'] === 'yes' ? 1 : 0,
198 'byline' => $setting['embedpress_pro_vimeo_display_author'] === 'yes' ? 1 : 0,
199 'portrait' => $setting['embedpress_pro_vimeo_avatar'] === 'yes' ? 1 : 0,
200 'autopause' => 0,
201 ];
202 if ( $setting['embedpress_pro_vimeo_auto_play'] === 'yes' ) {
203 $params['autoplay'] = 1;
204 }
205
206 $params = apply_filters('embedpress/elementor_enhancer_vimeo', $params, $setting);
207
208
209 $url_modified = str_replace("dnt=1&", "", $url_full);
210
211 foreach ( $params as $param => $value ) {
212 $url_modified = add_query_arg( $param, $value, $url_modified );
213 }
214
215
216 $url_modified .= '#t=' . $setting['embedpress_pro_video_start_time'];
217 // Replaces the old url with the new one.
218 $embed->embed = str_replace( $url_full, $url_modified, $embed->embed );
219
220 $embed = apply_filters('embedpress/elementor_enhancer_vimeo_cta', $embed, $setting);
221
222 return $embed;
223 }
224
225 public static function wistia( $embed, $setting ) {
226 if ( ! isset( $embed->provider_name ) || strtoupper( $embed->provider_name ) !== 'WISTIA, INC.' || ! isset( $embed->embed ) || $setting['embedpress_pro_embeded_source'] !== 'wistia' ) {
227 return $embed;
228 }
229 preg_match( '/src=\"(.+?)\"/', $embed->embed, $match );
230
231 $url_full = $match[1];
232
233 // Parse the url to retrieve all its info like variables etc.
234 $query = parse_url( $embed->url, PHP_URL_QUERY );
235 $url = str_replace( '?' . $query, '', $url_full );
236
237 if ($query !== null) {
238 parse_str($query, $params);
239 }
240
241 // Set the class in the attributes
242 $embed->attributes->class = str_replace( '{provider_alias}', 'wistia', $embed->attributes->class );
243 $embed->embed = str_replace( 'ose-wistia, inc.', 'ose-wistia', $embed->embed );
244
245 // Embed Options
246 $embedOptions = new \stdClass;
247 $embedOptions->videoFoam = false;
248 $embedOptions->fullscreenButton = ( $setting['embedpress_pro_wistia_fullscreen_button'] === 'yes' );
249 $embedOptions->smallPlayButton = ( $setting['embedpress_pro_wistia_small_play_button'] === 'yes' );
250 $embedOptions->autoPlay = ( $setting['embedpress_pro_wistia_auto_play'] === 'yes' );
251 $embedOptions->playerColor = $setting['embedpress_pro_wistia_color'];
252 $embedOptions->playbar = ( $setting['embedpress_pro_wistia_playbar'] === 'yes' );
253 if($setting['embedpress_pro_video_start_time']){
254 $embedOptions->time = $setting['embedpress_pro_video_start_time'];
255 }
256
257 $embedOptions = apply_filters('embedpress/elementor_enhancer_wistia', $embedOptions, $setting);
258
259
260 // Plugins
261 $pluginsBaseURL = plugins_url( '../assets/js/wistia/min', dirname( __DIR__ ) . '/embedpress-Wistia.php' );
262
263 $pluginList = [];
264
265
266 $embedOptions = apply_filters('embedpress/elementor_enhancer_wistia_captions', $embedOptions, $setting, $pluginList);
267 $pluginList = apply_filters('embedpress/elementor_enhancer_wistia_pluginlist', $embedOptions, $setting, $pluginList);
268
269
270 $embedOptions->plugin = $pluginList;
271 $embedOptions = json_encode( $embedOptions );
272
273 // Get the video ID
274 $videoId = self::get_wistia_video_from_url( $embed->url );
275 $shortVideoId = substr( $videoId, 0, 3 );
276
277 // Responsive?
278
279 $class = [
280 'wistia_embed',
281 'wistia_async_' . $videoId,
282 ];
283
284 $attribs = [
285 sprintf( 'id="wistia_%s"', $videoId ),
286 sprintf( 'class="%s"', join( ' ', $class ) ),
287 sprintf( 'style="width:%spx; height:%spx;"', $embed->attributes->{'data-width'}, $embed->attributes->{'data-height'} ),
288 ];
289
290 $labels = [
291 'watch_from_beginning' => __( 'Watch from the beginning', 'embedpress-pro' ),
292 'skip_to_where_you_left_off' => __( 'Skip to where you left off', 'embedpress-pro' ),
293 'you_have_watched_it_before' => __( 'It looks like you\'ve watched<br />part of this video before!', 'embedpress-pro' ),
294 ];
295 $labels = json_encode( $labels );
296
297 preg_match( '/ose-uid-([a-z0-9]*)/', $embed->embed, $matches );
298 $uid = $matches[1];
299
300 $html = "<div class=\"embedpress-wrapper ose-wistia ose-uid-{$uid} responsive\">";
301 $html .= '<script src="https://fast.wistia.com/assets/external/E-v1.js" async></script>';
302 $html .= "<script>window.pp_embed_wistia_labels = {$labels};</script>\n";
303 $html .= "<script>window._wq = window._wq || []; _wq.push({\"{$shortVideoId}\": {$embedOptions}});</script>\n";
304 $html .= '<div ' . join( ' ', $attribs ) . "></div>\n";
305 $html .= '</div>';
306 $embed->embed = $html;
307
308 $embed = apply_filters('embedpress/elementor_enhancer_wistia_cta', $embed, $setting);
309
310 return $embed;
311 }
312
313 /**
314 * Get the Video ID from the URL
315 *
316 * @param string $url
317 *
318 * @return string
319 */
320 public static function get_wistia_video_from_url( $url ) {
321 // https://fast.wistia.com/embed/medias/xf1edjzn92.jsonp
322 // https://ostraining-1.wistia.com/medias/xf1edjzn92
323 preg_match( '#\/medias\\\?\/([a-z0-9]+)\.?#i', $url, $matches );
324
325 $id = false;
326 if ( isset( $matches[1] ) ) {
327 $id = $matches[1];
328 }
329
330 return $id;
331 }
332
333 public static function soundcloud( $embed, $setting ) {
334
335 if ( ! isset( $embed->provider_name ) || strtoupper( $embed->provider_name ) !== 'SOUNDCLOUD' || ! isset( $embed->embed ) || $setting['embedpress_pro_embeded_source'] !== 'soundcloud' ) {
336 return $embed;
337 }
338 preg_match( '/src=\"(.+?)\"/', $embed->embed, $match );
339 $url_full = $match[1];
340 $params = [
341 'color' => str_replace( '#', '', $setting['embedpress_pro_soundcloud_color'] ),
342 'visual' => $setting['embedpress_pro_soundcloud_visual'] === 'yes' ? 'true' : 'false',
343 'auto_play' => $setting['embedpress_pro_soundcloud_autoplay'] === 'yes' ? 'true' : 'false',
344 'sharing' => $setting['embedpress_pro_soundcloud_share_button'] === 'yes' ? 'true' : 'false',
345 'show_comments' => $setting['embedpress_pro_soundcloud_comments'] === 'yes' ? 'true' : 'false',
346 'show_artwork' => $setting['embedpress_pro_soundcloud_artwork'] === 'yes' ? 'true' : 'false',
347 'show_playcount' => $setting['embedpress_pro_soundcloud_play_count'] === 'yes' ? 'true' : 'false',
348 'show_user' => $setting['embedpress_pro_soundcloud_user_name'] === 'yes' ? 'true' : 'false',
349 'buying' => 'false',
350 'download' => 'false',
351 ];
352
353 $params = apply_filters('embedpress/elementor_enhancer_soundcloud', $params, $setting);
354
355 $url_modified = $url_full;
356 foreach ( $params as $param => $value ) {
357 $url_modified = add_query_arg( $param, $value, $url_modified );
358 }
359
360 // Replaces the old url with the new one.
361 $embed->embed = str_replace( $url_full, $url_modified, $embed->embed );
362 if ( 'false' === $params['visual'] ) {
363 $embed->embed = str_replace( 'height="400"', 'height="200 !important"', $embed->embed );
364 }
365
366 return $embed;
367 }
368
369 public static function dailymotion( $embed, $setting ) {
370 if ( ! isset( $embed->provider_name ) || strtoupper( $embed->provider_name ) !== 'DAILYMOTION' || ! isset( $embed->embed ) || $setting['embedpress_pro_embeded_source'] !== 'dailymotion' ) {
371 return $embed;
372 }
373
374 preg_match( '/src=\"(.+?)\"/', $embed->embed, $match );
375
376 if (isset($match[1])) {
377 $url_full = $match[1];
378 } else {
379 $url_full = null;
380 }
381
382 $params = [
383 'ui-highlight' => str_replace( '#', '', $setting['embedpress_pro_dailymotion_control_color'] ),
384 'start' => isset( $setting['embedpress_pro_video_start_time'] ) ? (int) $setting['embedpress_pro_video_start_time'] : 0,
385 'mute' => $setting['embedpress_pro_dailymotion_mute'] === 'yes' ? 1 : 0,
386 'autoplay' => $setting['embedpress_pro_dailymotion_autoplay'] === 'yes' ? 1 : 0,
387 'controls' => $setting['embedpress_pro_dailymotion_player_control'] === 'yes' ? 1 : 0,
388 'ui-start-screen-info' => $setting['embedpress_pro_dailymotion_video_info'] === 'yes' ? 1 : 0,
389 'endscreen-enable' => 0,
390 ];
391
392 if ( $setting['embedpress_pro_dailymotion_play_on_mobile'] === 'yes' ) {
393 $params['playsinline'] = 1;
394 }
395
396 $params = apply_filters('embedpress/elementor_enhancer_dailymotion', $params, $setting);
397
398 $url_modified = $url_full;
399 foreach ( $params as $param => $value ) {
400 $url_modified = add_query_arg( $param, $value, $url_modified );
401 }
402 $embed->embed = str_replace( $url_full, $url_modified, $embed->embed );
403
404 $embed = apply_filters('embedpress/elementor_enhancer_dailymotion_cta', $embed, $setting);
405
406 return $embed;
407 }
408
409 public static function twitch( $embed_content, $settings ) {
410 if ( ! isset( $embed_content->embed ) || $settings['embedpress_pro_embeded_source'] !== 'twitch' ) {
411 return $embed_content;
412 }
413 if (is_object($embed_content)) {
414 $embed_content_array = (array) $embed_content;
415 $e = current($embed_content_array);
416 } else {
417 $e = current($embed_content); // Assuming it's already an array
418 }
419
420 if ( ! isset( $e['provider_name'] ) || strtoupper( $e['provider_name'] ) !== 'TWITCH' ) {
421 return $embed_content;
422 }
423 $time = '0h0m0s';
424 $type = isset( $e['type'] ) ? $e['type'] : '';
425 $content_id = isset( $e['content_id'] ) ? $e['content_id'] : '';
426 $channel = 'channel' === $type ? $content_id : '';
427 $video = 'video' === $type ? $content_id : '';
428 $full_screen = ( 'yes' === $settings['embedpress_pro_fs'] ) ? 'true' : 'false';
429 $autoplay = ( 'yes' === $settings['embedpress_pro_twitch_autoplay'] ) ? 'true' : 'false';
430 $layout = 'video';
431 $width = isset($settings['width']['size']) ? (int) $settings['width']['size'] : 600; // Default to 0 if not set
432 $height = isset($settings['height']['size']) ? (int) $settings['height']['size'] : 340; // Default to 0
433
434 if ( ! empty( $settings['embedpress_pro_video_start_time'] ) ) {
435 $ta = explode( ':', gmdate( "G:i:s", $settings['embedpress_pro_video_start_time'] ) );
436 $h = $ta[0] . 'h';
437 $m = ( $ta[1] * 1 ) . 'm';
438 $s = ( $ta[2] * 1 ) . 's';
439 $time = $h . $m . $s;
440 }
441 $muted = ( 'yes' === $settings['embedpress_pro_twitch_mute'] ) ? 'true' : 'false';
442 $theme = !empty($settings['embedpress_pro_twitch_theme']) ? esc_attr($settings['embedpress_pro_twitch_theme']) : 'dark';
443
444
445 $layout = apply_filters('embedpress/elementor_enhancer_twitch', 'video', $settings);
446
447
448 $url = "https://embed.twitch.tv?autoplay={$autoplay}&channel={$channel}&height={$height}&layout={$layout}&migration=true&muted={$muted}&theme={$theme}&time={$time}&video={$video}&width={$width}&allowfullscreen={$full_screen}";
449
450 $pars_url = wp_parse_url( get_site_url() );
451 $url = ! empty( $pars_url['host'] ) ? $url . '&parent=' . $pars_url['host'] : $url;
452
453 preg_match( '/src=\"(.+?)\"/', $embed_content->embed, $match );
454 $url_full = $match[1];
455 $embed_content->embed = str_replace( $url_full, $url, $embed_content->embed );
456
457 $embed_content = apply_filters('embedpress/elementor_enhancer_twitch_cta', $embed_content, $settings);
458
459
460 return $embed_content;
461 }
462
463 public static function spotify( $embed, $setting ) {
464 if ( ! isset( $embed->provider_name ) || strtolower( $embed->provider_name ) !== 'spotify' || ! isset( $embed->embed ) ) {
465 return $embed;
466 }
467 preg_match( '/src=\"(.+?)\"/', $embed->embed, $match );
468 $url_full = $match[1];
469 $modified_url = str_replace( 'playlist-v2', 'playlist', $url_full );
470 if ( $setting['embedpress_pro_embeded_source'] == 'spotify' ) {
471 // apply elementor related mod
472 if ( isset( $setting['spotify_theme'] ) ) {
473 if ( strpos( $modified_url, '?' ) !== false ) {
474 $modified_url .= '&theme=' . sanitize_text_field( $setting['spotify_theme'] );
475 } else {
476 $modified_url .= '?theme=' . sanitize_text_field( $setting['spotify_theme'] );
477 }
478 }
479 }
480
481 $embed->embed = str_replace( $url_full, $modified_url, $embed->embed );
482
483 return $embed;
484 }
485 }