PluginProbe
WpStream – Live Streaming, Video on Demand, Pay Per View / 4.11.1
WpStream – Live Streaming, Video on Demand, Pay Per View v4.11.1
4.14.1 4.14.0 4.13.2 4.13.1 4.13 4.12.5 4.12.4 4.12.3 4.12.2 4.12.1 4.12 4.4.4 4.4.5 4.4.6 4.4.7 4.4.8 4.4.9 4.5 4.5.1 4.5.11 4.5.11.1 4.5.11.2 4.5.11.4 4.5.11.5 4.5.11.6 All 181 releases
← All changes | includes/class-wpstream-player.php +265 -652 4.12.24.11.1 View file →
@@ -13,19 +13,11 @@
13 13 * @author cretu
14 14 */
15 15 class Wpstream_Player{
16 16 public $main;
17 -
18 - /**
19 - * @var Wpstream_Playback_Session
20 - */
21 - public $playback_session;
22 -
17 +
23 18 public function __construct($plugin_main) {
24 19 $this->main = $plugin_main;
25 -
26 - require_once dirname( __FILE__ ) . '/player/class-wpstream-playback-session.php';
27 - $this->playback_session = new Wpstream_Playback_Session();
28 20
29 21 add_filter( 'the_content',array($this, 'wpstream_filter_the_title') );
30 22 add_action( 'woocommerce_before_single_product', array($this,'wpstream_user_logged_in_product_already_bought') );
31 23
@@ -243,9 +235,9 @@
243 235 echo '<div class="wpstream_notice" style="background:#e16767;">'.esc_html($message).'</div>';
244 236 echo '</div></div>';
245 237 }elseif( get_post_type($product_id) == 'wpstream_product' ){
246 238 echo '<div class="wpstream_player_wrapper wpstream_player_shortcode"><div class="wpstream_player_container">';
247 - $this->wpstream_live_event_player($product_id);
239 + $this->wpstream_live_event_player($product_id);
248 240 echo '</div></div>';
249 241 } else if( get_post_type($product_id) == 'wpstream_product_vod' ){
250 242 echo '<div class="wpstream_player_wrapper wpstream_player_shortcode"><div class="wpstream_player_container">';
251 243 $this->wpstream_video_on_demand_player($product_id);
@@ -332,114 +324,8 @@
332 324 }
333 325 }
334 326 return $url;
335 327 }
336 -
337 - /**
338 - * Site origin (scheme://host:port) for the new player `embedAncestor` query param.
339 - * The player includes this value in the embed-key hash; mint keys with the same string.
340 - *
341 - * @return string
342 - */
343 - private function wpstream_get_site_origin_for_embed() {
344 - $parts = wp_parse_url( home_url() );
345 - if ( empty( $parts['host'] ) ) {
346 - return '';
347 - }
348 - $scheme = isset( $parts['scheme'] ) ? $parts['scheme'] . '://' : 'https://';
349 - $host = $parts['host'];
350 - $port = isset( $parts['port'] ) ? ':' . $parts['port'] : '';
351 - return $scheme . $host . $port;
352 - }
353 -
354 - /**
355 - * Keep this in sync with player/src/config/env.js fallback.
356 - *
357 - * @return string
358 - */
359 - private function wpstream_get_player_embed_key_salt() {
360 - $default_salt = 'EYjb84vNTXE85TfR';
361 - $configured = trim( (string) get_option( 'wpstream_player_embed_key_salt', '' ) );
362 - $base_salt = '' !== $configured ? $configured : $default_salt;
363 -
364 - return (string) apply_filters( 'wpstream_player_embed_key_salt', $base_salt );
365 - }
366 -
367 - /**
368 - * Masked salt metadata for debugging embed-key mismatches.
369 - *
370 - * @return array<string,mixed>
371 - */
372 - private function wpstream_get_player_embed_key_salt_debug_meta() {
373 - $default_salt = 'EYjb84vNTXE85TfR';
374 - $configured = trim( (string) get_option( 'wpstream_player_embed_key_salt', '' ) );
375 - $base_salt = '' !== $configured ? $configured : $default_salt;
376 - $final_salt = (string) apply_filters( 'wpstream_player_embed_key_salt', $base_salt );
377 - $len = strlen( $final_salt );
378 - $prefix = $len > 0 ? substr( $final_salt, 0, min( 2, $len ) ) : '';
379 - $suffix = $len > 2 ? substr( $final_salt, -2 ) : '';
380 -
381 - return array(
382 - 'source' => '' !== $configured ? 'option_or_filter' : 'default_or_filter',
383 - 'length' => $len,
384 - 'sha256_12' => substr( hash( 'sha256', $final_salt ), 0, 12 ),
385 - 'maskedPreview' => $prefix . ( $len > 0 ? '***' : '' ) . $suffix,
386 - );
387 - }
388 -
389 - /**
390 - * Mirror player/src/security/embed-key.js hash generation.
391 - *
392 - * @param string $video Media path used by /player/vod?video=...
393 - * @param string $validate_playback_session_url Optional session verify URL.
394 - * @param string $embed_ancestor Optional frame ancestor origin.
395 - * @param string $encrypt_raw Optional encrypt toggle (yes/true/1).
396 - * @return string
397 - */
398 - private function wpstream_generate_player_embed_key( $video, $validate_playback_session_url = '', $embed_ancestor = '', $encrypt_raw = '' ) {
399 - $video = trim( (string) $video );
400 - if ( '' === $video ) {
401 - return '';
402 - }
403 -
404 - $hash_input = $video . ' ' . $this->wpstream_get_player_embed_key_salt();
405 - $validate_playback_session_url = trim( (string) $validate_playback_session_url );
406 - if ( '' !== $validate_playback_session_url ) {
407 - $hash_input = $validate_playback_session_url . ' ' . $hash_input;
408 - }
409 -
410 - $embed_ancestor = trim( (string) $embed_ancestor );
411 - if ( '' !== $embed_ancestor ) {
412 - $hash_input = $embed_ancestor . ' ' . $hash_input;
413 - }
414 -
415 - $encrypt_raw = strtolower( trim( (string) $encrypt_raw ) );
416 - if ( in_array( $encrypt_raw, array( 'yes', 'true', '1' ), true ) ) {
417 - $hash_input = 'crypt ' . $hash_input;
418 - }
419 -
420 - $binary_hash = md5( $hash_input, true );
421 - $base64 = base64_encode( $binary_hash );
422 -
423 - return rtrim( strtr( $base64, '+/', '-_' ), '=' );
424 - }
425 -
426 - function wpstream_get_live_connect_uri($event_status, $playback_url_key = 'hls_playback_url') {
427 - if (isset($event_status['stats_url']) && trim($event_status['stats_url']) !== '') {
428 - return trim($event_status['stats_url']);
429 - }
430 -
431 - if (
432 - isset($event_status[$playback_url_key]) &&
433 - trim($event_status[$playback_url_key]) !== '' &&
434 - strpos($event_status[$playback_url_key], 'live.streamer.wpstream.net') !== false
435 - ) {
436 - $live_conect_array = explode('live.streamer.wpstream.net', $event_status[$playback_url_key]);
437 - return $this->remove_http($live_conect_array[0] . 'live.streamer.wpstream.net');
438 - }
439 -
440 - return '';
441 - }
442 328
443 329 /**
444 330 * Get event settings
445 331 *
@@ -449,10 +335,9 @@
449 335 function wpestream_return_event_settings($product_id){
450 336
451 337 $local_event_options = get_post_meta( $product_id, 'local_event_options', true);
452 338 $use_global_event_options = get_post_meta($product_id, 'use_global_event_options',true);
453 - $is_local_event_options_enabled = isset( $local_event_options ) &&
454 - ( ! isset( $use_global_event_options ) || (int) $use_global_event_options === 0 );
339 + $is_local_event_options_enabled = is_array( $local_event_options ) || intval( $use_global_event_options ) === 1;
455 340
456 341 if( !$is_local_event_options_enabled ) {
457 342 $local_event_options = get_option('wpstream_user_streaming_global_channel_options') ;
458 343 }
@@ -472,10 +357,10 @@
472 357
473 358 function wpstream_live_event_player($channel_id,$poster_show='',$use_chat=''){
474 359 wp_enqueue_script('video.min');
475 360 wp_enqueue_script('wpstream-player');
476 - wp_enqueue_script( 'wpstream-player-controls' );
477 361
362 +
478 363 $player_theme = $this->wpstream_get_player_theme( $channel_id );
479 364 $now = time().rand(0,1000000);
480 365 $overlay_video_div_id = "random_id_".$now;
481 366 // print '<div id="'.esc_attr($overlay_video_div_id).'" class="vjs-title-overlay wpstream-video-title-overlay">'.esc_html__('Playing:','wpstream').' '.get_the_title($channel_id).'</div>';
@@ -507,11 +392,14 @@
507 392
508 393 update_post_meta($channel_id,'stream_name',$event_status['stream_name']);
509 394 update_post_meta($channel_id,'hls_key_retrieval_url',$event_status['hls_key_retrieval_url']);
510 395 delete_transient( 'free_event_streamName_'.$event_status['stream_name']);
396 +
397 + $live_conect_array = explode('live.streamer.wpstream.net',$hls_playback_url);
398 + $live_conect_views = $live_conect_array[0].'live.streamer.wpstream.net';
399 + $live_conect_views = $this->remove_http($live_conect_views);
511 400
512 401 }
513 - $live_conect_views = $this->wpstream_get_live_connect_uri($event_status, 'hls_playback_url');
514 402 if(isset($event_status['chat_url'])){
515 403 $chat_url = $event_status['chat_url'];
516 404 }
517 405
@@ -517,103 +405,91 @@
517 405
518 406 }else{
519 407 // event not live
520 408 }
521 -
522 - $trailer_attachment_id = intval( get_post_meta( $channel_id, 'video_trailer', true ) );
523 - $video_trailer = '';
524 - $has_trailer_class = '';
525 - if ( $trailer_attachment_id != 0 ) {
526 - $video_trailer = wp_get_attachment_url( $trailer_attachment_id );
527 - $attachment_metadata = wp_get_attachment_metadata( $trailer_attachment_id );
528 - if ( isset ( $attachment_metadata['mime_type'] ) ) {
529 - $video_trailer_type = $attachment_metadata['mime_type'];
530 - }
531 - $poster_data = ''; // cancel poster for theme
532 - $has_trailer_class = 'wpstream_theme_player_has_trailer';
533 - }
534 409
535 410 if(isset($event_settings['autoplay']) && intval($event_settings['autoplay'])==0){
536 411 $autoplay=false;
537 412 }
538 413
539 - $bootstrap_is_muted = ( isset( $event_settings['mute'] ) && intval( $event_settings['mute'] ) === 1 );
540 - $bootstrap_trailer_attachment_id = intval( get_post_meta( $channel_id, 'video_trailer', true ) );
541 - $bootstrap_trailer_url = '';
542 - if ( $bootstrap_trailer_attachment_id !== 0 ) {
543 - $bootstrap_trailer_url = wp_get_attachment_url( $bootstrap_trailer_attachment_id );
544 - }
545 - $live_content_uri = isset( $hls_playback_url ) ? trim( $hls_playback_url ) : '';
546 - $live_stats_uri = isset( $live_conect_views ) ? trim( $live_conect_views ) : '';
547 - $live_chat_uri = isset( $chat_url ) ? trim( $chat_url ) : '';
548 - $play_trailer_button_element_id = 'wpstream_live_video_play_trailer_btn_' . $now;
549 - $mute_trailer_button_element_id = 'wpstream_live_video_mute_trailer_btn_' . $now;
550 - $unmute_trailer_button_element_id = 'wpstream_live_video_unmute_trailer_btn_' . $now;
551 414
552 415
553 -
554 416 $player_nonce = wp_create_nonce( 'wpstream_player_check_status_nonce' );
417 + echo '<div class="wpstream_live_player_wrapper function_wpstream_live_event_player" data-now="'.$now.'" data-me="'.esc_attr($usernamestream).'" data-product-id="'.$channel_id.'" id="wpstream_live_player_wrapper'.$now.'" data-nonce="' . $player_nonce . '" > ';
418 +
419 + $show_viewer_count = (
420 + ( isset($event_settings['view_count']) && intval($event_settings['view_count']) == 1 )
421 + || !isset($event_settings['view_count'])
422 + );
555 423
556 - $live_channel_embed_url = get_post_meta( $channel_id, 'embedUrl', true );
424 + echo '<div id="wpestream_live_counting" class="wpestream_live_counting" data-showviewercount="' . ($show_viewer_count ? '1' : '0') . '"></div>';
557 425
558 - // if embedUrl is set, we are using the new player
559 - if ( !$live_channel_embed_url ) {
560 - echo '<div class="wpstream_live_player_wrapper function_wpstream_live_event_player" data-now="' . $now . '" data-me="' . esc_attr( $usernamestream ) . '" data-product-id="' . $channel_id . '" id="wpstream_live_player_wrapper' . $now . '" data-nonce="' . $player_nonce . '" data-wpstream-bootstrap="live" data-instance-id="wpstream-live-' . esc_attr( $now ) . '" data-video-element-id="' . esc_attr( $now ) . '" data-title-overlay-element-id="' . esc_attr( $overlay_video_div_id ) . '" data-content-url="' . esc_attr( $live_content_uri ) . '" data-stats-uri="' . esc_attr( $live_stats_uri ) . '" data-chat-url="' . esc_attr( $live_chat_uri ) . '" data-trailer-url="' . esc_attr( $bootstrap_trailer_url ) . '" data-autoplay="' . ( $autoplay ? '1' : '0' ) . '" data-muted="' . ( $bootstrap_is_muted ? '1' : '0' ) . '" data-play-trailer-button-element-id="' . esc_attr( $play_trailer_button_element_id ) . '" data-mute-trailer-button-element-id="' . esc_attr( $mute_trailer_button_element_id ) . '" data-unmute-trailer-button-element-id="' . esc_attr( $unmute_trailer_button_element_id ) . '" > ';
426 + $show_wpstream_not_live_mess=' style="display:none;" ';
427 + if(trim($hls_playback_url) ==''){
561 428
562 - $show_viewer_count = (
563 - ( isset( $event_settings['view_count'] ) && intval( $event_settings['view_count'] ) == 1 )
564 - || ! isset( $event_settings['view_count'] )
565 - );
566 -
567 - echo '<div id="wpestream_live_counting" class="wpestream_live_counting" data-showviewercount="' . ( $show_viewer_count ? '1' : '0' ) . '"></div>';
568 -
569 - $show_wpstream_not_live_mess = ' style="display:none;" ';
570 - if ( trim( $hls_playback_url ) == '' ) {
571 -
572 - $show_wpstream_not_live_mess = '';
573 - }
574 -
575 - $message_show = esc_html( get_option( 'wpstream_you_are_not_live', 'We are not live at this moment' ) );
576 -
577 - if ( function_exists( 'wpstream_theme_not_live_section' ) ) {
578 - print wpstream_theme_not_live_section( $channel_id );
579 - } else {
580 - print '<div class="wpstream_not_live_mess" ' . $show_wpstream_not_live_mess . ' style="display: none">
429 + $show_wpstream_not_live_mess='';
430 + }
431 +
432 + $message_show= esc_html( get_option('wpstream_you_are_not_live','We are not live at this moment')) ;
433 +
434 + if( function_exists('wpstream_theme_not_live_section' ) ) {
435 + print wpstream_theme_not_live_section( $channel_id );
436 + } else {
437 + print '<div class="wpstream_not_live_mess" '.$show_wpstream_not_live_mess.' style="display: none">
581 438 <div class="wpstream_not_live_mess_back"></div>
582 - <div class="wpstream_not_live_mess_mess">' . esc_html( $message_show ) . '</div>
439 + <div class="wpstream_not_live_mess_mess">'.esc_html($message_show).'</div>
583 440 </div>';
584 - }
441 + }
442 +
443 +
444 + $poster_data='';
445 + if(isset($thumb[0])){
446 + $poster_data=' poster="'.$thumb[0].'" ';
447 + }
448 + if($poster_show=='no'){
449 + $poster_data='';
450 + }
585 451
452 + $is_muted=false;
453 + if( isset($event_settings['mute']) && intval($event_settings['mute'])==1){
454 + $is_muted=true;
455 + }
456 + // override $is_muted and $autoplay here - for testing
457 + // $autoplay = true;
458 + // $is_muted = false;
586 459
587 - $poster_data = '';
588 - if ( isset( $thumb[0] ) ) {
589 - $poster_data = ' poster="' . $thumb[0] . '" ';
590 - }
591 - if ( $poster_show == 'no' ) {
592 - $poster_data = '';
593 - }
460 + $autoplay_str = $autoplay ? 'autoplay' : '';
461 + $is_muted_str = $is_muted ? 'muted' : '';
462 +
463 + $video_trailer = '';
464 + $trailer_attachment_id = intval (get_post_meta( $channel_id, 'video_trailer', true ));
465 + $video_trailer = '';
466 + $video_trailer_type = '';
467 + $has_trailer_class = '';
468 + if($trailer_attachment_id!=0) {
469 + $video_trailer = wp_get_attachment_url( $trailer_attachment_id );
470 + $attachment_metadata = wp_get_attachment_metadata($trailer_attachment_id);
471 + if( isset ($attachment_metadata['mime_type']) ) {
472 + $video_trailer_type = $attachment_metadata['mime_type'];
473 + }
474 + $poster_data=''; // cancel poster for theme
475 + $has_trailer_class='wpstream_theme_player_has_trailer';
476 + }
594 477
595 - $is_muted = false;
596 - if ( isset( $event_settings['mute'] ) && intval( $event_settings['mute'] ) == 1 ) {
597 - $is_muted = true;
598 - }
599 - // override $is_muted and $autoplay here - for testing
600 - // $autoplay = true;
601 - // $is_muted = false;
478 + // override trailer url here - for testing
479 + // $video_trailer = '';
480 + // $video_trailer = '/wp-content/uploads/2023/10/production-ID_4608975.mp4';
481 + // $video_trailer = '/wp-content/uploads/2023/10/ultrawide.mp4';
602 482
603 - $autoplay_str = $autoplay ? 'autoplay' : '';
604 - $is_muted_str = $is_muted ? 'muted' : '';
605 483
606 - // override trailer url here - for testing
607 - // $video_trailer = '';
608 - // $video_trailer = '/wp-content/uploads/2023/10/production-ID_4608975.mp4';
609 - // $video_trailer = '/wp-content/uploads/2023/10/ultrawide.mp4';
610 484
611 -
612 - $player_logo_position_data = $this->wpstream_get_player_logo_data( $channel_id );
613 - $player_logo_position = $player_logo_position_data['player_logo_position'];
614 - $player_logo_position_class = $player_logo_position_data['player_logo_position_class'];
615 - $player_logo_horizontal_position = $player_logo_position_data['player_logo_horizontal_position'];
485 + $player_logo_position = get_option('wpstream_player_logo_position');
486 + $player_logo_position_class = '';
487 + $player_logo_horizontal_position = '';
488 + if( $player_logo_position && $player_logo_position != '' ){
489 + $player_logo_position_class = 'logo-' . explode( '-', $player_logo_position )[0];
490 + $player_logo_horizontal_position = 'logo-' . explode( '-', $player_logo_position )[1];
491 + }
616 492 // echo'
617 493 // <div class="wpstream-video-container">
618 494 // <div id="wpstream-pre-load-spinner" class="wpstream-pre-load-spinner"></div>
619 495 // <video id="wpstream-video'.$now.'" '.$poster_data.' class="video-js vjs-default-skin vjs-fluid vjs-wpstream ' . esc_attr($has_trailer_class) . ' ' . $player_theme . ' ' . $player_logo_position_class . ' ' . $player_logo_horizontal_position . '" playsinline="true" '.$is_muted_str." ".$autoplay_str.'>
@@ -619,243 +495,73 @@
619 495 // <video id="wpstream-video'.$now.'" '.$poster_data.' class="video-js vjs-default-skin vjs-fluid vjs-wpstream ' . esc_attr($has_trailer_class) . ' ' . $player_theme . ' ' . $player_logo_position_class . ' ' . $player_logo_horizontal_position . '" playsinline="true" '.$is_muted_str." ".$autoplay_str.'>
620 496 // </video>
621 497 // </div>';
622 498 echo '<div class="wpstream-pre-load-spinner"></div>';
623 - echo '
624 - <video id="wpstream-video' . $now . '" ' . $poster_data . ' class="video-js vjs-default-skin vjs-fluid vjs-wpstream ' . esc_attr( $has_trailer_class ) . ' ' . $player_theme . ' ' . $player_logo_position_class . ' ' . $player_logo_horizontal_position . '" playsinline="true" ' . $is_muted_str . " " . $autoplay_str . '>
625 -
499 + echo'
500 + <video id="wpstream-video'.$now.'" '.$poster_data.' class="video-js vjs-default-skin vjs-fluid vjs-wpstream ' . esc_attr($has_trailer_class) . ' ' . $player_theme . ' ' . $player_logo_position_class . ' ' . $player_logo_horizontal_position . '" playsinline="true" '.$is_muted_str." ".$autoplay_str.'>
501 +
626 502 </video>';
627 - if ( $video_trailer ) {
628 - print '<div class="wpstream_theme_trailer_wrapper">';
629 - print '<div id="' . esc_attr( $play_trailer_button_element_id ) . '" style="display: none;" class="wpstream_video_on_demand_play_trailer">
503 + if ($video_trailer){
504 + print '<div class="wpstream_theme_trailer_wrapper">';
505 + print '<div id="wpstream_live_video_play_trailer_btn_' . $now . '" style="display: none;" class="wpstream_video_on_demand_play_trailer">
630 506 <svg width="30" height="24" viewBox="0 0 30 24" fill="none" xmlns="http://www.w3.org/2000/svg">
631 507 <path fill-rule="evenodd" clip-rule="evenodd" d="M26.6667 1.5H3.33337C2.50495 1.5 1.83337 2.17157 1.83337 3V21C1.83337 21.8284 2.50495 22.5 3.33338 22.5H26.6667C27.4951 22.5 28.1667 21.8284 28.1667 21V3C28.1667 2.17157 27.4951 1.5 26.6667 1.5ZM3.33337 0C1.67652 0 0.333374 1.34315 0.333374 3V21C0.333374 22.6569 1.67652 24 3.33338 24H26.6667C28.3236 24 29.6667 22.6569 29.6667 21V3C29.6667 1.34315 28.3236 0 26.6667 0H3.33337ZM4.83337 4C4.55723 4 4.33337 4.22386 4.33337 4.5V6.16667C4.33337 6.44281 4.55723 6.66667 4.83337 6.66667H6.50004C6.77618 6.66667 7.00004 6.44281 7.00004 6.16667V4.5C7.00004 4.22386 6.77618 4 6.50004 4H4.83337ZM23.5 4C23.2239 4 23 4.22386 23 4.5V6.16667C23 6.44281 23.2239 6.66667 23.5 6.66667H25.1667C25.4428 6.66667 25.6667 6.44281 25.6667 6.16667V4.5C25.6667 4.22386 25.4428 4 25.1667 4H23.5ZM4.33337 11.167C4.33337 10.8909 4.55723 10.667 4.83337 10.667H6.50004C6.77618 10.667 7.00004 10.8909 7.00004 11.167V12.8337C7.00004 13.1098 6.77618 13.3337 6.50004 13.3337H4.83337C4.55723 13.3337 4.33337 13.1098 4.33337 12.8337V11.167ZM23.5001 10.667C23.224 10.667 23.0001 10.8909 23.0001 11.167V12.8337C23.0001 13.1098 23.224 13.3337 23.5001 13.3337H25.1668C25.4429 13.3337 25.6668 13.1098 25.6668 12.8337V11.167C25.6668 10.8909 25.4429 10.667 25.1668 10.667H23.5001ZM4.33337 17.833C4.33337 17.5569 4.55723 17.333 4.83337 17.333H6.50004C6.77618 17.333 7.00004 17.5569 7.00004 17.833V19.4997C7.00004 19.7758 6.77618 19.9997 6.50004 19.9997H4.83337C4.55723 19.9997 4.33337 19.7758 4.33337 19.4997V17.833ZM23.5001 17.333C23.224 17.333 23.0001 17.5569 23.0001 17.833V19.4997C23.0001 19.7758 23.224 19.9997 23.5001 19.9997H25.1668C25.4429 19.9997 25.6668 19.7758 25.6668 19.4997V17.833C25.6668 17.5569 25.4429 17.333 25.1668 17.333H23.5001ZM19.0677 13.0997L13.4077 16.5087C13.0434 16.7281 12.6092 16.7094 12.2661 16.5091C11.9218 16.3081 11.6666 15.9224 11.6666 15.4086V8.59072C11.6666 8.07698 11.9218 7.69125 12.2661 7.49026C12.6092 7.28999 13.0434 7.27126 13.4077 7.49064L19.0677 10.8996C19.8663 11.3805 19.8663 12.6188 19.0677 13.0997Z"/>
632 508 </svg>
633 - ' . esc_html__( 'Play Trailer', 'wpstream' ) . '</div>';
634 - print '<div id="' . esc_attr( $mute_trailer_button_element_id ) . '" style="display: none;" class="wpstream_video_on_demand_mute_trailer">
509 + '.esc_html__('Play Trailer', 'wpstream').'</div>';
510 + print '<div id="wpstream_live_video_mute_trailer_btn_' . $now . '" style="display: none;" class="wpstream_video_on_demand_mute_trailer">
635 511 <svg width="37" height="36" viewBox="0 0 37 36" fill="none" xmlns="http://www.w3.org/2000/svg">
636 512 <path fill-rule="evenodd" clip-rule="evenodd" d="M1.32143 10.0789H8.69499L18.8964 0L21.1428 0.921053V35.1316L18.8964 36L8.69499 25.8684H1.32143L0 24.5526V11.3947L1.32143 10.0789ZM10.175 23.6842L18.5 31.9474V4.10526L10.175 12.3158L9.24999 12.7105H2.64286V23.2368H9.24999L10.175 23.6842ZM37 17.9737C37.0069 22.2216 35.5329 26.3401 32.8295 29.6263L30.9478 27.7579C33.1613 24.9734 34.3629 21.5249 34.3571 17.9737C34.3571 14.2895 33.0885 10.8974 30.9637 8.21053L32.8454 6.34211C35.5382 9.62494 37.0062 13.735 37 17.9737ZM31.7143 17.9737C31.7193 20.8255 30.7895 23.6011 29.0661 25.8789L27.1738 23.9947C28.4127 22.2295 29.0752 20.1272 29.0714 17.9737C29.0751 15.8287 28.4174 13.7344 27.1871 11.9737L29.0793 10.0895C30.7338 12.2868 31.7143 15.0158 31.7143 17.9737ZM26.4286 17.9737C26.4286 19.4842 26.0057 20.8947 25.2657 22.0947L23.3126 20.1526C23.6249 19.4729 23.7876 18.7345 23.7899 17.9869C23.7922 17.2394 23.634 16.5001 23.3258 15.8184L25.2789 13.8737C26.0083 15.0684 26.4286 16.4737 26.4286 17.9737Z" fill="white"/>
637 513 </svg>
638 514
639 515 </div>';
640 - print '<div id="' . esc_attr( $unmute_trailer_button_element_id ) . '" style="display: none;" class="wpstream_video_on_demand_unmute_trailer">
516 + print '<div id="wpstream_live_video_unmute_trailer_btn_' . $now . '" style="display: none;" class="wpstream_video_on_demand_unmute_trailer">
641 517 <svg width="33" height="32" viewBox="0 0 33 32" fill="none" xmlns="http://www.w3.org/2000/svg">
642 518 <path fill-rule="evenodd" clip-rule="evenodd" d="M1.15625 8.85688H7.60813L16.5344 0L18.5 0.809375V30.8719L16.5344 31.635L7.60813 22.7319H1.15625L0 21.5756V10.0131L1.15625 8.85688ZM8.90313 20.8125L16.1875 28.0738V3.6075L8.90313 10.8225L8.09375 11.1694H2.3125V20.4194H8.09375L8.90313 20.8125ZM30.5967 11.3127L32.2316 12.9477L28.2287 16.9506L32.2316 20.9559L30.5967 22.5908L26.5938 18.5856L22.5885 22.5908L20.9536 20.9559L24.9588 16.9506L20.9513 12.95L22.5862 11.3151L26.5938 15.3157L30.5967 11.3127Z" fill="white"/>
643 519 </svg>
644 520 </div>';
645 - print '</div>';
646 - }
647 - print '</div>';
521 + print '</div>';
522 + }
523 + print '<script type="text/javascript">
524 + //<![CDATA[
525 + jQuery(document).ready(function(){
526 + wpstream_player_initialize({
527 + titleOverlayElementId:"'.$overlay_video_div_id.'",
528 + videoElementId: "'.$now.'",
529 + trailerUrl: "'.$video_trailer.'",
530 + contentUrl: "'.$hls_playback_url.'",
531 + statsUri: "'.$live_conect_views.'",
532 + autoplay: '.var_export($autoplay, true).',
533 + muted: '.var_export($is_muted, true).',
534 + playTrailerButtonElementId: "wpstream_live_video_play_trailer_btn_'.$now.'",
535 + muteTrailerButtonElementId: "wpstream_live_video_mute_trailer_btn_'.$now.'",
536 + unmuteTrailerButtonElementId: "wpstream_live_video_unmute_trailer_btn_'.$now.'",
537 + });
538 + });
539 + //]]>
540 + </script>';
541 + print '</div>';
542 +
543 +
544 + if(trim($hls_playback_url) ==''){
545 + // $show_wpstream_not_live_mess='';
546 + }else{
547 + print '<script type="text/javascript">
548 + //<![CDATA[
549 + jQuery(document).ready(function(){
550 + var player_wrapper = jQuery(".wpstream_live_player_wrapper");
551 + wpstream_read_websocket_info("'.$channel_id.'","wpstream_live_player_wrapper'.$now.'", player_wrapper ,"'.$chat_url.'", "'.$hls_playback_url.'");
552 + });
553 + //]]>
554 + </script>';
555 + }
556 +
557 +
558 + if($use_chat=="yes"){
559 + $this->wpstream_connect_to_chat($channel_id);
560 + }
561 +
562 + usleep (10000);
648 563
649 -
650 - // Live player bootstrap is handled by wpstream-player-bootstrap.js.
651 -
652 -
653 - if ( $use_chat == "yes" ) {
654 - $this->wpstream_connect_to_chat( $channel_id );
655 - }
656 -
657 - usleep( 10000 );
658 - } else {
659 - $live_channel_frame_base = WPSTREAM_PLAYER . "/player/live?";
660 - $channel_id = get_post_meta( $channel_id, 'channelId', true );
661 -
662 - $local_event_options = get_option( 'wpstream_user_streaming_global_channel_options' );
663 - $wpstream_session_encryption = false;
664 - $wpstream_live_channel_lock_to_website = false;
665 - $wpstream_live_channel_autoplay = false;
666 -
667 - if ( isset( $local_event_options['ses_encrypt'] ) && intval( $local_event_options['ses_encrypt'] ) == 1 ) {
668 - $wpstream_session_encryption = true;
669 - }
670 - if ( isset( $local_event_options['domain_lock'] ) && intval( $local_event_options['domain_lock'] ) == 1 ) {
671 - $wpstream_live_channel_lock_to_website = true;
672 - }
673 - if ( isset( $local_event_options['autoplay'] ) && intval( $local_event_options['autoplay'] ) == 1 ) {
674 - $wpstream_live_channel_autoplay = true;
675 - }
676 -
677 - $live_channel_validate_url = '';
678 - if ( $wpstream_session_encryption ) {
679 - $live_channel_validate_url = esc_url_raw(
680 - apply_filters(
681 - 'wpstream_live_channel_validate_playback_session_url',
682 - $this->playback_session->wpstream_get_default_vod_validate_playback_session_url(),
683 - $channel_id
684 - )
685 - );
686 - wp_localize_script(
687 - 'wpstream-player-controls',
688 - 'wpstreamLiveIframeSessionApi',
689 - array(
690 - 'requirePlaybackSession' => true,
691 - 'nonce' => wp_create_nonce( 'wpstream_playback_session_issue' ),
692 - 'productId' => (int) $channel_id,
693 - 'ajaxUrl' => admin_url( 'admin-ajax.php' ),
694 - 'wpstream_player_state_stopped_msg' => esc_html__( get_option( 'wpstream_you_are_not_live', 'We are not live at this moment' ), 'wpstream' ),
695 - 'wpstream_player_state_init_msg' => esc_html__( 'The live stream has not yet started', 'wpstream' ),
696 - 'wpstream_player_state_startup_msg' => esc_html__( 'The live stream is starting...', 'wpstream' ),
697 - 'wpstream_player_state_paused_msg' => esc_html__( 'The live stream is paused', 'wpstream' ),
698 - 'wpstream_player_state_ended_msg' => esc_html__( 'The live stream has ended', 'wpstream' ),
699 - 'wpstream_player_state_error_msg' => esc_html__( 'Something went wrong', 'wpstream' ),
700 - 'isThemeActive' => get_template() == 'hello-wpstream',
701 - )
702 - );
703 - }
704 -
705 - $local_event_options = get_option( 'wpstream_user_streaming_global_channel_options' );
706 - $wpstream_love_channel_lock_to_website = 0;
707 - if ( isset( $local_event_options['domain_lock'] ) && intval( $local_event_options['domain_lock'] ) == 1 ) {
708 - $wpstream_love_channel_lock_to_website = 1;
709 - }
710 - $wpstream_live_channel_encrypt = 0;
711 - if ( isset( $local_event_options['encrypt'] ) && intval( $local_event_options['encrypt'] ) == 1 ) {
712 - $wpstream_live_channel_encrypt = 1;
713 - }
714 - $wpstream_live_channel_encrypt = 0;
715 - if ( isset( $local_event_options['ses_encrypt'] ) && intval( $local_event_options['ses_encrypt'] ) == 1 ) {
716 - $wpstream_live_channel_encrypt = 1;
717 - }
718 - $wpstream_live_channel_abr = 0;
719 - if ( isset( $local_event_options['adaptive_bitrate'] ) && intval( $local_event_options['adaptive_bitrate'] ) == 1 ) {
720 - $wpstream_live_channel_abr = 1;
721 - }
722 - $wpstream_live_channel_muted = 0;
723 - if ( isset( $local_event_options['mute'] ) && intval( $local_event_options['mute'] ) == 1 ) {
724 - $wpstream_live_channel_muted = 1;
725 - }
726 -
727 - $live_channel_embed_ancestor = '';
728 - if ( $wpstream_love_channel_lock_to_website ) {
729 - $live_channel_embed_ancestor = esc_url_raw(
730 - apply_filters(
731 - 'wpstream_vod_embed_ancestor',
732 - $this->wpstream_get_site_origin_for_embed(),
733 - $channel_id
734 - )
735 - );
736 - }
737 -
738 - $wpstream_live_channel_embed_key = $this->wpstream_generate_player_embed_key(
739 - $channel_id,
740 - $live_channel_validate_url,
741 - $live_channel_embed_ancestor,
742 - $wpstream_live_channel_encrypt ? 'yes' : ''
743 - );
744 - if ( '' === $wpstream_live_channel_embed_key ) {
745 - $vod_iframe_embed_key = (string) get_post_meta( $channel_id, 'embed_key', true );
746 - }
747 - $wpstream_live_channel_trailer_embed_key = $this->wpstream_generate_player_embed_key(
748 - $video_trailer,
749 - $live_channel_validate_url,
750 - $live_channel_embed_ancestor,
751 - $wpstream_live_channel_encrypt ? 'yes' : ''
752 - );
753 -
754 - $wpstream_player_iframe_skin_slug = '';
755 - if ( preg_match( '/^vjs-theme-(city|fantasy|forest|sea)$/', $player_theme, $vod_iframe_skin_m ) ) {
756 - $wpstream_player_iframe_skin_slug = $vod_iframe_skin_m[1];
757 - }
758 - $wpstream_show_viewer_count = (
759 - ( isset( $event_settings['view_count'] ) && intval( $event_settings['view_count'] ) == 1 )
760 - || ! isset( $event_settings['view_count'] )
761 - );
762 -
763 - $wpstream_poster_image = get_the_post_thumbnail_url( $channel_id, 'full' );
764 -
765 - $wpstream_live_channel_validate_url = '';
766 - if ( $wpstream_session_encryption ) {
767 - $wpstream_live_channel_validate_url = esc_url_raw( apply_filters( 'wpstream_vod_validate_playback_session_url', $this->playback_session->wpstream_get_default_vod_validate_playback_session_url(), $channel_id ) );
768 - wp_localize_script(
769 - 'wpstream-player-controls',
770 - 'wpstreamVodIframeSessionApi',
771 - array(
772 - 'requirePlaybackSession' => true,
773 - 'nonce' => wp_create_nonce( 'wpstream_playback_session_issue' ),
774 - 'productId' => (int) $channel_id,
775 - 'ajaxUrl' => admin_url( 'admin-ajax.php' ),
776 - )
777 - );
778 - }
779 -
780 - $live_channel_embed_ancestor = '';
781 - if ( $wpstream_live_channel_lock_to_website ) {
782 - $live_channel_embed_ancestor = esc_url_raw(
783 - apply_filters(
784 - 'wpstream_vod_embed_ancestor',
785 - $this->wpstream_get_site_origin_for_embed(),
786 - $channel_id
787 - )
788 - );
789 - }
790 -
791 - $wpstream_player_logo_data = $this->wpstream_get_player_logo_data( $channel_id );
792 - $wpstream_player_logo_image = $wpstream_player_logo_data['player_logo_src'];
793 -
794 - $live_channel_query_args = array_filter(
795 - array(
796 - 'channel' => $channel_id,
797 - 'posterImage' => $wpstream_poster_image,
798 - 'embedKey' => $wpstream_live_channel_embed_key,
799 - 'autoplay' => $wpstream_live_channel_autoplay ? true : '',
800 - 'startMuted' => (bool) $wpstream_live_channel_muted,
801 - 'viewerCountBadge' => $wpstream_show_viewer_count ? true : '',
802 - 'encrypt' => $wpstream_live_channel_encrypt ? true : '',
803 - 'abr' => $wpstream_live_channel_abr ? true : '',
804 - 'validatePlaybackSessionUrl' => $wpstream_live_channel_validate_url,
805 - 'embedAncestor' => $live_channel_embed_ancestor,
806 - 'skin' => $wpstream_player_iframe_skin_slug,
807 - 'logoImage' => $wpstream_player_logo_image,
808 - 'logoPosition' => $wpstream_player_logo_image ? $wpstream_player_logo_data['player_logo_position'] : '',
809 - 'logoOpacity' => $wpstream_player_logo_image ? $wpstream_player_logo_data['player_logo_opacity'] : '',
810 - 'isThemeActive' => get_template() == 'hello-wpstream',
811 - ),
812 - static function ( $v ) {
813 - return $v !== null && $v !== '';
814 - }
815 - );
816 -
817 - $live_channel_trailer_iframe_query_args = array_filter(
818 - array(
819 - 'video' => $video_trailer,
820 - 'embedKey' => $wpstream_live_channel_trailer_embed_key,
821 - 'skin' => $wpstream_player_iframe_skin_slug,
822 - 'startMuted' => (bool) $wpstream_live_channel_muted,
823 - 'encrypt' => $wpstream_live_channel_encrypt ? true : '',
824 - 'validatePlaybackSessionUrl' => $wpstream_live_channel_validate_url,
825 - 'embedAncestor' => $live_channel_embed_ancestor,
826 - ),
827 - static function ( $v ) {
828 - return $v !== null && $v !== '';
829 - }
830 - );
831 -
832 - echo '<div class="wpstream_player_iframe_wrap">';
833 - echo '<iframe id="playerFrame"
834 - class="wpstream_live_channel_iframe"
835 - title="' . esc_attr__( 'Embedded content', 'wpstream' ) . '"
836 - src="' . esc_url( add_query_arg( $live_channel_query_args, $live_channel_frame_base ) ) . '"
837 - data-wpstream-frame-role="content"
838 - allowfullscreen
839 - allow="autoplay; fullscreen">
840 - </iframe>';
841 - if ( $trailer_attachment_id && get_template() === 'hello-wpstream' ) {
842 - echo '<iframe id="playerFrameTrailer"
843 - class="wpstream_live_channel_iframe wpstream_live_channel_iframe_trailer"
844 - title="' . esc_attr__( 'Embedded trailer content', 'wpstream' ) . '"
845 - src="' . esc_url( add_query_arg( $live_channel_trailer_iframe_query_args, WPSTREAM_PLAYER . "/player/vod?" ) ) . '"
846 - data-wpstream-frame-role="trailer"
847 - allowfullscreen
848 - allow="autoplay; fullscreen"
849 - style="display:none;"
850 - aria-hidden="true"
851 - tabindex="-1">
852 - </iframe>';
853 - }
854 - echo '</div>';
855 -
856 - }
857 -
858 564 }
859 565
860 566
861 567
@@ -888,11 +594,14 @@
888 594 if(isset($event_status['status']) && $event_status['status']=='active'){
889 595 //live event
890 596 if(isset($event_status['sldp_playback_url'])){
891 597 $hls_playback_url = $event_status['sldp_playback_url'];
598 +
599 + $live_conect_array = explode('live.streamer.wpstream.net',$hls_playback_url);
600 + $live_conect_views = $live_conect_array[0].'live.streamer.wpstream.net';
601 + $live_conect_views = $this->remove_http($live_conect_views);
892 602
893 603 }
894 - $live_conect_views = $this->wpstream_get_live_connect_uri($event_status, 'sldp_playback_url');
895 604 if(isset($event_status['chat_url'])){
896 605 $chat_url =$event_status['chat_url'];
897 606 }
898 607
@@ -902,18 +611,9 @@
902 611
903 612
904 613
905 614
906 - $low_latency_is_muted = ( isset($event_settings['mute']) && intval($event_settings['mute']) == 1 );
907 - $low_latency_autoplay = true;
908 - if ( isset($event_settings['autoplay']) && intval($event_settings['autoplay']) == 0 ) {
909 - $low_latency_autoplay = false;
910 - }
911 - $low_latency_content_uri = isset( $hls_playback_url ) ? trim( $hls_playback_url ) : '';
912 - $low_latency_chat_uri = isset( $chat_url ) ? trim( $chat_url ) : '';
913 - $low_latency_stats_uri = isset( $live_conect_views ) ? trim( $live_conect_views ) : '';
914 -
915 - echo '<div class="wpstream_live_player_wrapper function_wpstream_live_event_player_low_latency wpstream_low_latency" data-now="'.$now.'" data-me="'.esc_attr($usernamestream).'" data-product-id="'.$channel_id.'" id="wpstream_live_player_wrapper'.$now.'" data-instance-id="wpstream-live-low-latency-'.esc_attr( $now ).'" data-wpstream-bootstrap="live-low-latency" data-event-id="'.esc_attr( $channel_id ).'" data-video-element-id="wpstream-video'.esc_attr( $now ).'" data-content-url="'.esc_attr( $low_latency_content_uri ).'" data-chat-url="'.esc_attr( $low_latency_chat_uri ).'" data-stats-uri="'.esc_attr( $low_latency_stats_uri ).'" data-autoplay="'. ( $low_latency_autoplay ? '1' : '0' ) .'" data-muted="'. ( $low_latency_is_muted ? '1' : '0' ) .'" > ';
615 + echo '<div class="wpstream_live_player_wrapper function_wpstream_live_event_player_low_latency wpstream_low_latency" data-now="'.$now.'" data-me="'.esc_attr($usernamestream).'" data-product-id="'.$channel_id.'" id="wpstream_live_player_wrapper'.$now.'" > ';
916 616
917 617
918 618 if( ( isset($event_settings['view_count'] ) && intval($event_settings['view_count'])==1 ) || !isset($event_settings['view_count']) ){
919 619 echo '<div id="wpestream_live_counting" class="wpestream_live_counting"></div>';
@@ -934,15 +634,15 @@
934 634 }
935 635
936 636
937 637 $is_muted='';
938 - if( $low_latency_is_muted ){
638 + if( isset($event_settings['mute']) && intval($event_settings['mute'])==1){
939 639 $is_muted=' muted ';
940 640 }
941 641
942 642
943 643 $autoplay='autoplay';
944 - if( !$low_latency_autoplay ){
644 + if(isset($event_settings['autoplay']) && intval($event_settings['autoplay'])==0){
945 645 $autoplay='';
946 646 }
947 647
948 648 echo'
@@ -948,11 +648,33 @@
948 648 echo'
949 649 <div iccd="player" id="wpstream-video'.$now.'" '.$poster_data.' '.$is_muted.' class="" >
950 650 </div>';
951 651
952 - // Low-latency player bootstrap is handled by wpstream-player-bootstrap.js.
652 + print '<script type="text/javascript">
653 + //<![CDATA[
654 + jQuery(document).ready(function(){
655 + var low_latencyid="wpstream-video'.$now.'";
656 + document.addEventListener("DOMContentLoaded", initPlayer(low_latencyid, "'.$hls_playback_url.'","'.$is_muted.'","'.$autoplay.'" ) ); ';
657 + print'});
658 + //]]>
659 + </script>';
660 +
953 661
954 662
663 + if(trim($hls_playback_url) ==''){
664 + // $show_wpstream_not_live_mess='';
665 + }else{
666 + print '<script type="text/javascript">
667 + //<![CDATA[
668 + jQuery(document).ready(function(){
669 + var player_wrapper = jQuery(".wpstream_live_player_wrapper");
670 + wpstream_read_websocket_info("'.$channel_id.'","wpstream_live_player_wrapper'.$now.'", player_wrapper ,"'.$chat_url.'", "'.$hls_playback_url.'");
671 + });
672 + //]]>
673 + </script>';
674 + }
675 +
676 +
955 677 if($use_chat=="yes"){
956 678 $this->wpstream_connect_to_chat($channel_id);
957 679 }
958 680
@@ -1018,9 +740,8 @@
1018 740 'corsOrigin' => $corsorigin,
1019 741 'encryptHls' => $encrypt,
1020 742 'hlsKeysUrlPrefix' => $hlsKeysUrlPrefix,
1021 743 'debugDrm' => $debugDrm,
1022 - 'embed' => true,
1023 744 );
1024 745
1025 746
1026 747 $curl_response = $this->main->wpstream_live_connection->wpstream_baker_do_curl_base($url,$curl_post_fields);
@@ -1035,17 +756,9 @@
1035 756 }else{
1036 757 delete_post_meta($product_id,'hlsDecryptionKey');
1037 758 delete_post_meta($product_id,'hlsDecryptionKeyIndex');
1038 759 }
1039 -
1040 - if ( isset( $curl_response_decoded['video'] ) &&
1041 - isset( $curl_response_decoded['embedKey'] ) &&
1042 - isset( $curl_response_decoded['embedUrl'] )
1043 - ) {
1044 - update_post_meta( $product_id, 'wpstream_vod_video_data', trim( (string) $curl_response_decoded['video'] ) );
1045 - update_post_meta( $product_id, 'wpstream_vod_embed_key', trim( (string) $curl_response_decoded['embedKey'] ) );
1046 - update_post_meta( $product_id, 'wpstream_vod_embed_url', trim( (string) $curl_response_decoded['embedUrl'] ) );
1047 - }
760 +
1048 761 }else{
1049 762 return '';
1050 763 }
1051 764
@@ -1072,35 +785,8 @@
1072 785
1073 786 }
1074 787 }
1075 788
1076 - /*
1077 - * Return data about the logo
1078 - */
1079 - private function wpstream_get_player_logo_data( $product_id ): array {
1080 - $player_logo_position = get_option( 'wpstream_player_logo_position', 'top-right' );
1081 - $player_logo_position_class = '';
1082 - $player_logo_horizontal_position = '';
1083 - if ( $player_logo_position && $player_logo_position != '' ) {
1084 - $player_logo_position_parts = explode( '-', $player_logo_position );
1085 - if ( isset( $player_logo_position_parts[0], $player_logo_position_parts[1] ) ) {
1086 - $player_logo_position_class = 'logo-' . $player_logo_position_parts[0];
1087 - $player_logo_horizontal_position = 'logo-' . $player_logo_position_parts[1];
1088 - }
1089 - }
1090 -
1091 - $player_logo_src = $this->wpstream_get_video_player_logo( $product_id );
1092 - $player_logo_opacity = intval( esc_html( get_option('wpstream_player_logo_opacity','100') ) ) / 100;
1093 -
1094 - return array(
1095 - 'player_logo_src' => $player_logo_src,
1096 - 'player_logo_position' => $player_logo_position,
1097 - 'player_logo_position_class' => $player_logo_position_class,
1098 - 'player_logo_horizontal_position' => $player_logo_horizontal_position,
1099 - 'player_logo_opacity' => $player_logo_opacity,
1100 - );
1101 - }
1102 -
1103 789
1104 790
1105 791 /**
1106 792 * VODPlayer uri details
@@ -1117,11 +803,9 @@
1117 803 * 3 - free video -not encrypted
1118 804 */
1119 805
1120 806 $post_type = get_post_type($product_id);
1121 - $free_video_type = intval( get_post_meta($product_id, 'wpstream_product_type', true));
1122 - $video_path_final = '';
1123 - $video_type = '';
807 + $free_video_type = intval( get_post_meta($product_id, 'wpstream_product_type', true));
1124 808 if( ( $post_type =='wpstream_product_vod' && $free_video_type==2 ) || get_post_type($product_id)=='product' ){
1125 809
1126 810 /*
1127 811 * IF vide is encrypted- readed from vod,streaner
@@ -1164,18 +848,13 @@
1164 848 * @author cretu
1165 849 */
1166 850
1167 851 public function wpstream_video_on_demand_player($product_id){
1168 - wp_enqueue_script('video.min');
852 + wp_enqueue_script('video.min');
1169 853 wp_enqueue_script('wpstream-player');
1170 854
1171 - $hello_wpstream_theme_active = get_template() == 'hello-wpstream';
1172 - if ( $hello_wpstream_theme_active ) {
1173 - wp_enqueue_script( 'wpstream-player-controls' );
1174 - }
855 + $player_theme = $this->wpstream_get_player_theme();
1175 856
1176 - $player_theme = $this->wpstream_get_player_theme( $product_id );
1177 -
1178 857 $uri_details = $this->wpstream_video_on_demand_player_uri_request($product_id);
1179 858 $video_path_final = $uri_details['video_path_final'];
1180 859 $wpstream_data_setup = $uri_details['wpstream_data_setup'];
1181 860 $video_type = $uri_details['video_type'];
@@ -1253,162 +932,19 @@
1253 932 $poster_data=''; // cancel poster for theme
1254 933 $has_trailer_class='wpstream_theme_player_has_trailer';
1255 934 }
1256 935
1257 - $player_logo_data = $this->wpstream_get_player_logo_data( $product_id );
1258 - $player_logo_image = $player_logo_data['player_logo_src'];
1259 - $player_logo_position = $player_logo_data['player_logo_position'];
1260 - $player_logo_position_class = $player_logo_data['player_logo_position_class'];
1261 - $player_logo_horizontal_position = $player_logo_data['player_logo_horizontal_position'];
1262 - $player_logo_opacity = $player_logo_data['player_logo_opacity'];
936 + $player_logo_position = get_option('wpstream_player_logo_position');
937 + $player_logo_position_class = '';
938 + $player_logo_horizontal_position = '';
939 + if( $player_logo_position && $player_logo_position!='' ){
940 + $player_logo_position_class = 'logo-' . explode( '-', $player_logo_position )[0];
941 + $player_logo_horizontal_position = 'logo-' . explode( '-', $player_logo_position )[1];
942 + }
1263 943
1264 944 $captionsUrl = get_post_meta( $product_id, 'wpstream_closed_captions_file', true );
1265 - $play_trailer_button_element_id = $trailer_attachment_id != 0 ? 'wpstream_video_on_demand_play_trailer_btn_' . $now : '';
1266 - $mute_trailer_button_element_id = $trailer_attachment_id != 0 ? 'wpstream_video_on_demand_mute_trailer_btn_' . $now : '';
1267 - $unmute_trailer_button_element_id = $trailer_attachment_id != 0 ? 'wpstream_video_on_demand_unmute_trailer_btn_' . $now : '';
1268 - $play_video_button_element_id = $trailer_attachment_id != 0 ? 'wpstream_video_on_demand_play_video_btn_' . $now : '';
1269 945
1270 - $wpstream_vod_encrypt = intval( get_option( 'wpstream_vod_encrypt', '' ) );
1271 - $wpstream_vod_lock_to_website = intval( get_option( 'wpstream_vod_domain_lock', '' ) );
1272 -
1273 - $wpstream_session_encryption = 0;
1274 - $local_event_options = get_option('wpstream_user_streaming_global_channel_options') ;
1275 - if(isset($local_event_options['ses_encrypt']) && intval($local_event_options['ses_encrypt'])==1 ) {
1276 - $wpstream_session_encryption = 1;
1277 - }
1278 -
1279 - /**
1280 - * Presence bootstrap expects validatePlaybackSessionUrl as an absolute HTTP(S) URL that returns JSON { success: true } when the playback session is valid — not the literals "true"/"false".
1281 - * Embed keys must be minted with the same inputs as the iframe query (video, validatePlaybackSessionUrl, embedAncestor, encrypt) per player embed-key.js.
1282 - *
1283 - * @see WPStream player embed-key.js and session-validation.js (verifyPlaybackSessionUrl).
1284 - */
1285 - $vod_validate_url = '';
1286 - if ( $wpstream_session_encryption ) {
1287 - $vod_validate_url = esc_url_raw( apply_filters( 'wpstream_vod_validate_playback_session_url', $this->playback_session->wpstream_get_default_vod_validate_playback_session_url(), $product_id ) );
1288 - wp_localize_script(
1289 - 'wpstream-player-controls',
1290 - 'wpstreamVodIframeSessionApi',
1291 - array(
1292 - 'requirePlaybackSession' => true,
1293 - 'nonce' => wp_create_nonce( 'wpstream_playback_session_issue' ),
1294 - 'productId' => (int) $product_id,
1295 - 'ajaxUrl' => admin_url( 'admin-ajax.php' ),
1296 - )
1297 - );
1298 - }
1299 -
1300 - $vod_embed_ancestor = '';
1301 - if ( $wpstream_vod_lock_to_website ) {
1302 - $vod_embed_ancestor = esc_url_raw(
1303 - apply_filters(
1304 - 'wpstream_vod_embed_ancestor',
1305 - $this->wpstream_get_site_origin_for_embed(),
1306 - $product_id
1307 - )
1308 - );
1309 - }
1310 -
1311 - // if there's "wpstream_vod_embed_url" set, it means that we use the new player
1312 - $wpstream_vod_embed_url = get_post_meta( $product_id, 'wpstream_vod_embed_url', true );
1313 -
1314 - $vod_iframe_base = WPSTREAM_PLAYER . "/player/vod?";
1315 - $vod_iframe_video_raw = (string) get_post_meta( $product_id, 'wpstream_vod_video_data', true );
1316 - $vod_iframe_video = trim( $vod_iframe_video_raw );
1317 - if ( strlen( $vod_iframe_video ) >= 2 ) {
1318 - $first_char = $vod_iframe_video[0];
1319 - $last_char = substr( $vod_iframe_video, -1 );
1320 - $is_wrapped_in_double_quotes = '"' === $first_char && '"' === $last_char;
1321 - $is_wrapped_in_single_quotes = "'" === $first_char && "'" === $last_char;
1322 - if ( $is_wrapped_in_double_quotes || $is_wrapped_in_single_quotes ) {
1323 - $vod_iframe_video = substr( $vod_iframe_video, 1, -1 );
1324 - }
1325 - }
1326 - $vod_iframe_embed_key = $this->wpstream_generate_player_embed_key(
1327 - $vod_iframe_video,
1328 - $vod_validate_url,
1329 - $vod_embed_ancestor,
1330 - $wpstream_vod_encrypt ? 'yes' : ''
1331 - );
1332 - if ( '' === $vod_iframe_embed_key ) {
1333 - $vod_iframe_embed_key = (string) get_post_meta( $product_id, 'wpstream_vod_embed_key', true );
1334 - }
1335 - $vod_iframe_trailer_embed_key = $this->wpstream_generate_player_embed_key(
1336 - $video_trailer,
1337 - $vod_validate_url,
1338 - $vod_embed_ancestor,
1339 - $wpstream_vod_encrypt ? 'yes' : ''
1340 - );
1341 -
1342 - $vod_poster_image = get_the_post_thumbnail_url( $product_id, 'full' );
1343 - $current_active_theme = wp_get_theme();
1344 -
1345 - $vod_iframe_skin_slug = '';
1346 - if ( preg_match( '/^vjs-theme-(city|fantasy|forest|sea)$/', $player_theme, $vod_iframe_skin_m ) ) {
1347 - $vod_iframe_skin_slug = $vod_iframe_skin_m[1];
1348 - }
1349 -
1350 - $vod_iframe_query_args = array_filter(
1351 - array(
1352 - 'video' => $vod_iframe_video,
1353 - 'posterImage' => $vod_poster_image,
1354 - 'embedKey' => $vod_iframe_embed_key,
1355 - 'startMuted' => $muted ? '1' : '',
1356 - 'skin' => $vod_iframe_skin_slug,
1357 - 'encrypt' => $wpstream_vod_encrypt ? 'yes' : '',
1358 - 'validatePlaybackSessionUrl' => $vod_validate_url,
1359 - 'embedAncestor' => $vod_embed_ancestor,
1360 - 'logoImage' => $player_logo_image,
1361 - 'logoPosition' => $player_logo_image ? $player_logo_position : '',
1362 - 'logoOpacity' => $player_logo_image ? $player_logo_opacity : '',
1363 - 'isThemeActive' => $current_active_theme->get('Name') === 'Hello WPStream',
1364 - ),
1365 - static function ( $v ) {
1366 - return $v !== null && $v !== '';
1367 - }
1368 - );
1369 -
1370 - $vod_trailer_iframe_query_args = array_filter(
1371 - array(
1372 - 'video' => $video_trailer,
1373 - 'embedKey' => $vod_iframe_trailer_embed_key,
1374 - 'skin' => $vod_iframe_skin_slug,
1375 - 'startMuted' => $muted ? '1' : '',
1376 - 'encrypt' => $wpstream_vod_encrypt ? 'yes' : '',
1377 - 'validatePlaybackSessionUrl' => $vod_validate_url,
1378 - 'embedAncestor' => $vod_embed_ancestor,
1379 - ),
1380 - static function ( $v ) {
1381 - return $v !== null && $v !== '';
1382 - }
1383 - );
1384 -
1385 - if ( $wpstream_vod_embed_url ) {
1386 - echo '<div class="wpstream_player_iframe_wrap">';
1387 - echo '<iframe id="playerFrame"
1388 - class="wpstream_video_on_demand_iframe"
1389 - title="' . esc_attr__( 'Embedded content', 'wpstream' ) . '"
1390 - src="' . esc_url( add_query_arg( $vod_iframe_query_args, $vod_iframe_base ) ) . '"
1391 - data-wpstream-frame-role="content"
1392 - allowfullscreen
1393 - allow="autoplay; fullscreen">
1394 - </iframe>';
1395 - if ( $trailer_attachment_id != 0 && $hello_wpstream_theme_active ) {
1396 - echo '<iframe id="playerFrameTrailer"
1397 - class="wpstream_video_on_demand_iframe wpstream_video_on_demand_iframe_trailer"
1398 - title="' . esc_attr__( 'Embedded trailer content', 'wpstream' ) . '"
1399 - src="' . esc_url( add_query_arg( $vod_trailer_iframe_query_args, $vod_iframe_base ) ) . '"
1400 - data-wpstream-frame-role="trailer"
1401 - allowfullscreen
1402 - allow="autoplay; fullscreen"
1403 - style="display:none;"
1404 - aria-hidden="true"
1405 - tabindex="-1">
1406 - </iframe>';
1407 - }
1408 - echo '</div>';
1409 - } else {
1410 - echo '<video id="wpstream-video-vod-'.$now.'" class="'.esc_attr($has_trailer_class).' video-js vjs-default-skin vjs-fluid kuk wpstream_video_on_demand vjs-wpstream ' . $player_theme .' ' . $player_logo_position_class . ' ' . $player_logo_horizontal_position . '" data-me="'.esc_attr($usernamestream).'" data-product-id="'.$product_id.'" data-wpstream-bootstrap="vod" data-instance-id="wpstream-vod-'.esc_attr( $now ).'" data-video-element-id="wpstream-video-vod-'.esc_attr( $now ).'" data-title-overlay-element-id="'.esc_attr( $overlay_video_div_id ).'" data-video-url="'.esc_attr( $video_path_final ).'" data-trailer-url="'.esc_attr( $video_trailer ).'" data-autoplay="'. ( $autoplay ? '1' : '0' ) .'" data-muted="'. ( $muted ? '1' : '0' ) .'" data-captions-url="'.esc_attr( $captionsUrl ).'" data-play-trailer-button-element-id="'.esc_attr( $play_trailer_button_element_id ).'" data-mute-trailer-button-element-id="'.esc_attr( $mute_trailer_button_element_id ).'" data-unmute-trailer-button-element-id="'.esc_attr( $unmute_trailer_button_element_id ).'" data-play-video-button-element-id="'.esc_attr( $play_video_button_element_id ).'" data-player-logo-image="'.esc_attr( $player_logo_image ).'" data-player-logo-position="'.esc_attr( $player_logo_position ).'" data-player-logo-opacity="'.esc_attr( $player_logo_opacity ).'" data-player-logo-width="100" data-player-logo-height="auto" data-player-logo-padding="10" playsinline preload="auto"
946 + echo '<video id="wpstream-video-vod-'.$now.'" class="'.esc_attr($has_trailer_class).' video-js vjs-default-skin vjs-fluid kuk wpstream_video_on_demand vjs-wpstream ' . $player_theme .' ' . $player_logo_position_class . ' ' . $player_logo_horizontal_position . '" data-me="'.esc_attr($usernamestream).'" data-product-id="'.$product_id.'" playsinline preload="auto"
1411 947 '. $poster_data.' '.$wpstream_data_setup.'>
1412 948 <p class="vjs-no-js">
1413 949 To view this video please enable JavaScript, and consider upgrading to a web browser that
1414 950 <a href="http://videojs.com/html5-video-support/" target="_blank">supports HTML5 video</a>
@@ -1414,17 +950,17 @@
1414 950 <a href="http://videojs.com/html5-video-support/" target="_blank">supports HTML5 video</a>
1415 951 </p>
1416 952 </video>';
1417 953
1418 - if($trailer_attachment_id !=0){
1419 - print '<div class="wpstream_theme_trailer_wrapper">';
1420 - print '<div id="'.esc_attr( $play_trailer_button_element_id ).'" class="wpstream_video_on_demand_play_trailer">
954 + if($trailer_attachment_id !=0){
955 + print '<div class="wpstream_theme_trailer_wrapper">';
956 + print '<div id="wpstream_video_on_demand_play_trailer_btn_' . $now . '" class="wpstream_video_on_demand_play_trailer">
1421 957 <svg width="30" height="24" viewBox="0 0 30 24" fill="none" xmlns="http://www.w3.org/2000/svg">
1422 958 <path fill-rule="evenodd" clip-rule="evenodd" d="M26.6667 1.5H3.33337C2.50495 1.5 1.83337 2.17157 1.83337 3V21C1.83337 21.8284 2.50495 22.5 3.33338 22.5H26.6667C27.4951 22.5 28.1667 21.8284 28.1667 21V3C28.1667 2.17157 27.4951 1.5 26.6667 1.5ZM3.33337 0C1.67652 0 0.333374 1.34315 0.333374 3V21C0.333374 22.6569 1.67652 24 3.33338 24H26.6667C28.3236 24 29.6667 22.6569 29.6667 21V3C29.6667 1.34315 28.3236 0 26.6667 0H3.33337ZM4.83337 4C4.55723 4 4.33337 4.22386 4.33337 4.5V6.16667C4.33337 6.44281 4.55723 6.66667 4.83337 6.66667H6.50004C6.77618 6.66667 7.00004 6.44281 7.00004 6.16667V4.5C7.00004 4.22386 6.77618 4 6.50004 4H4.83337ZM23.5 4C23.2239 4 23 4.22386 23 4.5V6.16667C23 6.44281 23.2239 6.66667 23.5 6.66667H25.1667C25.4428 6.66667 25.6667 6.44281 25.6667 6.16667V4.5C25.6667 4.22386 25.4428 4 25.1667 4H23.5ZM4.33337 11.167C4.33337 10.8909 4.55723 10.667 4.83337 10.667H6.50004C6.77618 10.667 7.00004 10.8909 7.00004 11.167V12.8337C7.00004 13.1098 6.77618 13.3337 6.50004 13.3337H4.83337C4.55723 13.3337 4.33337 13.1098 4.33337 12.8337V11.167ZM23.5001 10.667C23.224 10.667 23.0001 10.8909 23.0001 11.167V12.8337C23.0001 13.1098 23.224 13.3337 23.5001 13.3337H25.1668C25.4429 13.3337 25.6668 13.1098 25.6668 12.8337V11.167C25.6668 10.8909 25.4429 10.667 25.1668 10.667H23.5001ZM4.33337 17.833C4.33337 17.5569 4.55723 17.333 4.83337 17.333H6.50004C6.77618 17.333 7.00004 17.5569 7.00004 17.833V19.4997C7.00004 19.7758 6.77618 19.9997 6.50004 19.9997H4.83337C4.55723 19.9997 4.33337 19.7758 4.33337 19.4997V17.833ZM23.5001 17.333C23.224 17.333 23.0001 17.5569 23.0001 17.833V19.4997C23.0001 19.7758 23.224 19.9997 23.5001 19.9997H25.1668C25.4429 19.9997 25.6668 19.7758 25.6668 19.4997V17.833C25.6668 17.5569 25.4429 17.333 25.1668 17.333H23.5001ZM19.0677 13.0997L13.4077 16.5087C13.0434 16.7281 12.6092 16.7094 12.2661 16.5091C11.9218 16.3081 11.6666 15.9224 11.6666 15.4086V8.59072C11.6666 8.07698 11.9218 7.69125 12.2661 7.49026C12.6092 7.28999 13.0434 7.27126 13.4077 7.49064L19.0677 10.8996C19.8663 11.3805 19.8663 12.6188 19.0677 13.0997Z"/>
1423 959 </svg>
1424 960 '.esc_html__('Play Trailer','wpstream').'</div>';
1425 961
1426 - print '<div class="wpstream_video_on_demand_play_video_wrapper" id="'.esc_attr( $play_video_button_element_id ).'" >
962 + print '<div class="wpstream_video_on_demand_play_video_wrapper" id="wpstream_video_on_demand_play_video_btn_' . $now . '" >
1427 963 <div class="wpstream_video_on_demand_play_video">
1428 964 <svg width="29" height="30" viewBox="0 0 29 30" fill="none" xmlns="http://www.w3.org/2000/svg">
1429 965 <path fill-rule="evenodd" clip-rule="evenodd" d="M6.1808 28.9035L26.274 18.1652C29.1087 16.6503 29.1087 12.7497 26.274 11.2348L6.1808 0.496557C4.88769 -0.194506 3.34623 -0.1355 2.1283 0.495357C0.906043 1.12846 1.0095e-06 2.34351 9.38766e-07 3.96179L0 25.4382C-7.07369e-08 27.0565 0.906042 28.2715 2.1283 28.9046C3.34622 29.5355 4.88769 29.5945 6.1808 28.9035ZM24.8221 13.8026C25.5742 14.2045 25.5742 15.1955 24.8221 15.5974L4.72891 26.3356C3.94628 26.7539 3.01386 26.2165 3.01386 25.4382L3.01386 3.96179C3.01386 3.18347 3.94628 2.6461 4.72891 3.06436L24.8221 13.8026Z" fill="#F1F1F1"/>
1430 966 </svg>
@@ -1433,23 +969,77 @@
1433 969 </div>';
1434 970
1435 971
1436 972
1437 - print '<div id="'.esc_attr( $mute_trailer_button_element_id ).'" class="wpstream_video_on_demand_mute_trailer">
973 + print '<div id="wpstream_video_on_demand_mute_trailer_btn_' . $now . '" class="wpstream_video_on_demand_mute_trailer">
1438 974
1439 975 <svg width="37" height="36" viewBox="0 0 37 36" fill="none" xmlns="http://www.w3.org/2000/svg">
1440 976 <path fill-rule="evenodd" clip-rule="evenodd" d="M1.32143 10.0789H8.69499L18.8964 0L21.1428 0.921053V35.1316L18.8964 36L8.69499 25.8684H1.32143L0 24.5526V11.3947L1.32143 10.0789ZM10.175 23.6842L18.5 31.9474V4.10526L10.175 12.3158L9.24999 12.7105H2.64286V23.2368H9.24999L10.175 23.6842ZM37 17.9737C37.0069 22.2216 35.5329 26.3401 32.8295 29.6263L30.9478 27.7579C33.1613 24.9734 34.3629 21.5249 34.3571 17.9737C34.3571 14.2895 33.0885 10.8974 30.9637 8.21053L32.8454 6.34211C35.5382 9.62494 37.0062 13.735 37 17.9737ZM31.7143 17.9737C31.7193 20.8255 30.7895 23.6011 29.0661 25.8789L27.1738 23.9947C28.4127 22.2295 29.0752 20.1272 29.0714 17.9737C29.0751 15.8287 28.4174 13.7344 27.1871 11.9737L29.0793 10.0895C30.7338 12.2868 31.7143 15.0158 31.7143 17.9737ZM26.4286 17.9737C26.4286 19.4842 26.0057 20.8947 25.2657 22.0947L23.3126 20.1526C23.6249 19.4729 23.7876 18.7345 23.7899 17.9869C23.7922 17.2394 23.634 16.5001 23.3258 15.8184L25.2789 13.8737C26.0083 15.0684 26.4286 16.4737 26.4286 17.9737Z" fill="white"/>
1441 977 </svg>
1442 978 </div>';
1443 - print '<div id="'.esc_attr( $unmute_trailer_button_element_id ).'" class="wpstream_video_on_demand_unmute_trailer">
979 + print '<div id="wpstream_video_on_demand_unmute_trailer_btn_' . $now . '" class="wpstream_video_on_demand_unmute_trailer">
1444 980 <svg width="33" height="32" viewBox="0 0 33 32" fill="none" xmlns="http://www.w3.org/2000/svg">
1445 981 <path fill-rule="evenodd" clip-rule="evenodd" d="M1.15625 8.85688H7.60813L16.5344 0L18.5 0.809375V30.8719L16.5344 31.635L7.60813 22.7319H1.15625L0 21.5756V10.0131L1.15625 8.85688ZM8.90313 20.8125L16.1875 28.0738V3.6075L8.90313 10.8225L8.09375 11.1694H2.3125V20.4194H8.09375L8.90313 20.8125ZM30.5967 11.3127L32.2316 12.9477L28.2287 16.9506L32.2316 20.9559L30.5967 22.5908L26.5938 18.5856L22.5885 22.5908L20.9536 20.9559L24.9588 16.9506L20.9513 12.95L22.5862 11.3151L26.5938 15.3157L30.5967 11.3127Z" fill="white"/>
1446 982 </svg>
1447 983
1448 984 </div>';
1449 - print '</div>';
1450 - }
1451 - }
985 + print '<script type="text/javascript">
986 + //<![CDATA[
987 + jQuery(document).ready(function(){
988 + console.log("wpstream_video_on_demand_player 886");
989 + wpstream_player_initialize_vod({
990 + titleOverlayElementId:"'.$overlay_video_div_id.'",
991 + videoElementId: "wpstream-video-vod-'.$now.'",
992 + trailerUrl: "'.$video_trailer.'",
993 + videoUrl: "'.$video_path_final.'",
994 + autoplay: '.var_export($autoplay, true).',
995 + muted: '.var_export($muted, true).',
996 + captionsUrl: "' . esc_js( $captionsUrl ) . '",
997 + playTrailerButtonElementId: "wpstream_video_on_demand_play_trailer_btn_'.$now.'",
998 + muteTrailerButtonElementId: "wpstream_video_on_demand_mute_trailer_btn_'.$now.'",
999 + unmuteTrailerButtonElementId: "wpstream_video_on_demand_unmute_trailer_btn_'.$now.'",
1000 + playVideoButtonElementId: "wpstream_video_on_demand_play_video_btn_'.$now.'",
1001 + playerLogoSettings: {
1002 + image: "'. $this->wpstream_get_video_player_logo( $product_id ) . '",
1003 + position: "' . esc_html( get_option('wpstream_player_logo_position','top-right') ) . '",
1004 + opacity: ' . ( intval ( esc_html( get_option('wpstream_player_logo_opacity','100') ) ) / 100 ) . ',
1005 + width: 100,
1006 + height: "auto",
1007 + padding: 10,
1008 + },
1009 + });
1010 + });
1011 + //]]>
1012 + </script>';
1013 + print '</div>';
1014 + }
1015 + else {
1016 + print '<script type="text/javascript">
1017 + //<![CDATA[
1018 + jQuery(document).ready(function(){
1019 +
1020 + console.log("wpstream_video_on_demand_player 907");
1021 +
1022 + wpstream_player_initialize_vod({
1023 + titleOverlayElementId:"'.$overlay_video_div_id.'",
1024 + videoElementId: "wpstream-video-vod-'.$now.'",
1025 + videoUrl: "'.$video_path_final.'",
1026 + autoplay: '.var_export($autoplay, true).',
1027 + muted: '.var_export($muted, true).',
1028 + captionsUrl: "' . esc_js( $captionsUrl ) . '",
1029 + playerLogoSettings: {
1030 + image: "'. $this->wpstream_get_video_player_logo( $product_id ) . '",
1031 + position: "' . esc_html( get_option('wpstream_player_logo_position','top-right') ) . '",
1032 + opacity: ' . ( intval ( esc_html( get_option('wpstream_player_logo_opacity','100') ) ) / 100 ) . ',
1033 + width: 100,
1034 + height: "auto",
1035 + padding: 10,
1036 + }
1037 + });
1038 + });
1039 + //]]>
1040 + </script>';
1041 + }
1452 1042 }else{
1453 1043 print '<div class="wpstream_insuficent_res">'.esc_html__('Insufficient resources to stream this title','wpstream').'</div>';
1454 1044 }
1455 1045
@@ -1465,8 +1055,9 @@
1465 1055 public function wpstream_video_on_demand_player_only_trailer($product_id){
1466 1056 wp_enqueue_script('video.min');
1467 1057 wp_enqueue_script('wpstream-player');
1468 1058
1059 +
1469 1060 $player_theme = $this->wpstream_get_player_theme();
1470 1061 $now = time().rand(0,1000000);
1471 1062 $overlay_video_div_id = "random_id_".$now;
1472 1063 $this->wpstream_render_vod_title_overlay(
@@ -1498,10 +1089,10 @@
1498 1089
1499 1090 }
1500 1091
1501 1092
1502 - $autoplay = false;
1503 - $muted = false;
1093 + $autoplay = false;
1094 + $muted = false;
1504 1095
1505 1096 if( intval ( get_option('wpstream_vod_start_muted','') ) === 1){
1506 1097 $muted = true;
1507 1098 }
@@ -1507,16 +1098,12 @@
1507 1098 }
1508 1099 if( intval ( get_option('wpstream_vod_autoplay','') ) === 1 ){
1509 1100 $autoplay = true;
1510 1101 }
1511 - $video_path_final='';
1512 - $has_trailer_class='wpstream_theme_player_has_trailer';
1513 - $captions_url = get_post_meta( $product_id, 'wpstream_closed_captions_file', true );
1514 - $play_trailer_button_element_id = $trailer_attachment_id != 0 ? 'wpstream_video_on_demand_play_trailer_btn_' . $now : '';
1515 - $mute_trailer_button_element_id = $trailer_attachment_id != 0 ? 'wpstream_video_on_demand_mute_trailer_btn_' . $now : '';
1516 - $unmute_trailer_button_element_id = $trailer_attachment_id != 0 ? 'wpstream_video_on_demand_unmute_trailer_btn_' . $now : '';
1102 + $video_path_final='';
1103 + $has_trailer_class='wpstream_theme_player_has_trailer';
1517 1104
1518 - echo '<video id="wpstream-video-vod-'.$now.'" class="video-js vjs-default-skin vjs-fluid kuk wpstream_video_on_demand vjs-wpstream '.esc_attr( $has_trailer_class ).' ' . $player_theme . '" data-me="'.esc_attr($usernamestream).'" data-product-id="'.$product_id.'" data-wpstream-bootstrap="vod" data-instance-id="wpstream-vod-trailer-'.esc_attr( $now ).'" data-video-element-id="wpstream-video-vod-'.esc_attr( $now ).'" data-title-overlay-element-id="'.esc_attr( $overlay_video_div_id ).'" data-video-url="" data-trailer-url="'.esc_attr( $video_trailer ).'" data-autoplay="'. ( $autoplay ? '1' : '0' ) .'" data-muted="'. ( $muted ? '1' : '0' ) .'" data-captions-url="'.esc_attr( $captions_url ).'" data-play-trailer-button-element-id="'.esc_attr( $play_trailer_button_element_id ).'" data-mute-trailer-button-element-id="'.esc_attr( $mute_trailer_button_element_id ).'" data-unmute-trailer-button-element-id="'.esc_attr( $unmute_trailer_button_element_id ).'" playsinline preload="auto"
1105 + echo '<video id="wpstream-video-vod-'.$now.'" class="video-js vjs-default-skin vjs-fluid kuk wpstream_video_on_demand vjs-wpstream '.esc_attr( $has_trailer_class ).' ' . $player_theme . '" data-me="'.esc_attr($usernamestream).'" data-product-id="'.$product_id.'" playsinline preload="auto"
1519 1106 >
1520 1107 <p class="vjs-no-js">
1521 1108 To view this video please enable JavaScript, and consider upgrading to a web browser that
1522 1109 <a href="http://videojs.com/html5-video-support/" target="_blank">supports HTML5 video</a>
@@ -1524,15 +1111,15 @@
1524 1111 </video>';
1525 1112
1526 1113 if($trailer_attachment_id !=0){
1527 1114 print '<div class="wpstream_theme_trailer_wrapper">';
1528 - print '<div id="'.esc_attr( $play_trailer_button_element_id ).'" class="wpstream_video_on_demand_play_trailer">
1115 + print '<div id="wpstream_video_on_demand_play_trailer_btn_' . $now . '" class="wpstream_video_on_demand_play_trailer">
1529 1116 <svg width="30" height="24" viewBox="0 0 30 24" fill="none" xmlns="http://www.w3.org/2000/svg">
1530 1117 <path fill-rule="evenodd" clip-rule="evenodd" d="M26.6667 1.5H3.33337C2.50495 1.5 1.83337 2.17157 1.83337 3V21C1.83337 21.8284 2.50495 22.5 3.33338 22.5H26.6667C27.4951 22.5 28.1667 21.8284 28.1667 21V3C28.1667 2.17157 27.4951 1.5 26.6667 1.5ZM3.33337 0C1.67652 0 0.333374 1.34315 0.333374 3V21C0.333374 22.6569 1.67652 24 3.33338 24H26.6667C28.3236 24 29.6667 22.6569 29.6667 21V3C29.6667 1.34315 28.3236 0 26.6667 0H3.33337ZM4.83337 4C4.55723 4 4.33337 4.22386 4.33337 4.5V6.16667C4.33337 6.44281 4.55723 6.66667 4.83337 6.66667H6.50004C6.77618 6.66667 7.00004 6.44281 7.00004 6.16667V4.5C7.00004 4.22386 6.77618 4 6.50004 4H4.83337ZM23.5 4C23.2239 4 23 4.22386 23 4.5V6.16667C23 6.44281 23.2239 6.66667 23.5 6.66667H25.1667C25.4428 6.66667 25.6667 6.44281 25.6667 6.16667V4.5C25.6667 4.22386 25.4428 4 25.1667 4H23.5ZM4.33337 11.167C4.33337 10.8909 4.55723 10.667 4.83337 10.667H6.50004C6.77618 10.667 7.00004 10.8909 7.00004 11.167V12.8337C7.00004 13.1098 6.77618 13.3337 6.50004 13.3337H4.83337C4.55723 13.3337 4.33337 13.1098 4.33337 12.8337V11.167ZM23.5001 10.667C23.224 10.667 23.0001 10.8909 23.0001 11.167V12.8337C23.0001 13.1098 23.224 13.3337 23.5001 13.3337H25.1668C25.4429 13.3337 25.6668 13.1098 25.6668 12.8337V11.167C25.6668 10.8909 25.4429 10.667 25.1668 10.667H23.5001ZM4.33337 17.833C4.33337 17.5569 4.55723 17.333 4.83337 17.333H6.50004C6.77618 17.333 7.00004 17.5569 7.00004 17.833V19.4997C7.00004 19.7758 6.77618 19.9997 6.50004 19.9997H4.83337C4.55723 19.9997 4.33337 19.7758 4.33337 19.4997V17.833ZM23.5001 17.333C23.224 17.333 23.0001 17.5569 23.0001 17.833V19.4997C23.0001 19.7758 23.224 19.9997 23.5001 19.9997H25.1668C25.4429 19.9997 25.6668 19.7758 25.6668 19.4997V17.833C25.6668 17.5569 25.4429 17.333 25.1668 17.333H23.5001ZM19.0677 13.0997L13.4077 16.5087C13.0434 16.7281 12.6092 16.7094 12.2661 16.5091C11.9218 16.3081 11.6666 15.9224 11.6666 15.4086V8.59072C11.6666 8.07698 11.9218 7.69125 12.2661 7.49026C12.6092 7.28999 13.0434 7.27126 13.4077 7.49064L19.0677 10.8996C19.8663 11.3805 19.8663 12.6188 19.0677 13.0997Z"/>
1531 1118 </svg>
1532 1119 '.esc_html__('Play Trailer','wpstream').'
1533 1120 </div>';
1534 - print '<div id="'.esc_attr( $mute_trailer_button_element_id ).'" class="wpstream_video_on_demand_mute_trailer">
1121 + print '<div id="wpstream_video_on_demand_mute_trailer_btn_' . $now . '" class="wpstream_video_on_demand_mute_trailer">
1535 1122 <svg width="37" height="36" viewBox="0 0 37 36" fill="none" xmlns="http://www.w3.org/2000/svg">
1536 1123 <path fill-rule="evenodd" clip-rule="evenodd" d="M1.32143 10.0789H8.69499L18.8964 0L21.1428 0.921053V35.1316L18.8964 36L8.69499 25.8684H1.32143L0 24.5526V11.3947L1.32143 10.0789ZM10.175 23.6842L18.5 31.9474V4.10526L10.175 12.3158L9.24999 12.7105H2.64286V23.2368H9.24999L10.175 23.6842ZM37 17.9737C37.0069 22.2216 35.5329 26.3401 32.8295 29.6263L30.9478 27.7579C33.1613 24.9734 34.3629 21.5249 34.3571 17.9737C34.3571 14.2895 33.0885 10.8974 30.9637 8.21053L32.8454 6.34211C35.5382 9.62494 37.0062 13.735 37 17.9737ZM31.7143 17.9737C31.7193 20.8255 30.7895 23.6011 29.0661 25.8789L27.1738 23.9947C28.4127 22.2295 29.0752 20.1272 29.0714 17.9737C29.0751 15.8287 28.4174 13.7344 27.1871 11.9737L29.0793 10.0895C30.7338 12.2868 31.7143 15.0158 31.7143 17.9737ZM26.4286 17.9737C26.4286 19.4842 26.0057 20.8947 25.2657 22.0947L23.3126 20.1526C23.6249 19.4729 23.7876 18.7345 23.7899 17.9869C23.7922 17.2394 23.634 16.5001 23.3258 15.8184L25.2789 13.8737C26.0083 15.0684 26.4286 16.4737 26.4286 17.9737Z" fill="white"/>
1537 1124 </svg>
1538 1125
@@ -1537,14 +1124,42 @@
1537 1124 </svg>
1538 1125
1539 1126
1540 1127 </div>';
1541 - print '<div id="'.esc_attr( $unmute_trailer_button_element_id ).'" class="wpstream_video_on_demand_unmute_trailer">
1128 + print '<div id="wpstream_video_on_demand_unmute_trailer_btn_' . $now . '" class="wpstream_video_on_demand_unmute_trailer">
1542 1129 <svg width="33" height="32" viewBox="0 0 33 32" fill="none" xmlns="http://www.w3.org/2000/svg">
1543 1130 <path fill-rule="evenodd" clip-rule="evenodd" d="M1.15625 8.85688H7.60813L16.5344 0L18.5 0.809375V30.8719L16.5344 31.635L7.60813 22.7319H1.15625L0 21.5756V10.0131L1.15625 8.85688ZM8.90313 20.8125L16.1875 28.0738V3.6075L8.90313 10.8225L8.09375 11.1694H2.3125V20.4194H8.09375L8.90313 20.8125ZM30.5967 11.3127L32.2316 12.9477L28.2287 16.9506L32.2316 20.9559L30.5967 22.5908L26.5938 18.5856L22.5885 22.5908L20.9536 20.9559L24.9588 16.9506L20.9513 12.95L22.5862 11.3151L26.5938 15.3157L30.5967 11.3127Z" fill="white"/>
1544 1131 </svg>
1545 1132
1546 1133 </div>';
1134 + print '<script type="text/javascript">
1135 + //<![CDATA[
1136 + jQuery(document).ready(function(){
1137 +
1138 + console.log("wpstream_video_on_demand_player trailer 995");
1139 +
1140 + wpstream_player_initialize_vod({
1141 + titleOverlayElementId:"'.$overlay_video_div_id.'",
1142 + videoElementId: "wpstream-video-vod-'.$now.'",
1143 + trailerUrl: "'.$video_trailer.'",
1144 + autoplay: '.var_export($autoplay, true).',
1145 + muted: '.var_export($muted, true).',
1146 + captionsUrl: "' . esc_js( get_post_meta( $product_id, 'wpstream_closed_captions_file', true ) ) . '",
1147 + playTrailerButtonElementId: "wpstream_video_on_demand_play_trailer_btn_'.$now.'",
1148 + muteTrailerButtonElementId: "wpstream_video_on_demand_mute_trailer_btn_'.$now.'",
1149 + unmuteTrailerButtonElementId: "wpstream_video_on_demand_unmute_trailer_btn_'.$now.'",
1150 +// playerLogoSettings: {
1151 +// image: "'. $this->wpstream_get_video_player_logo( get_the_ID() ) . '",
1152 +// position: "' . esc_html( get_option('wpstream_player_logo_position','top-right') ) . '",
1153 +// opacity: ' . ( intval ( esc_html( get_option('wpstream_player_logo_opacity','100') ) ) / 100 ) . ',
1154 +// width: 100,
1155 +// height: "auto",
1156 +// padding: 10,
1157 +// },
1158 + });
1159 + });
1160 + //]]>
1161 + </script>';
1547 1162 print '</div>';
1548 1163 }
1549 1164 else {
1550 1165 //just show the poster or don't show anything; no player needed
@@ -1977,10 +1592,8 @@
1977 1592 $logo = get_option( 'wpstream_player_logo', '' );
1978 1593 if ( ! empty( $logo ) ) {
1979 1594 return $logo;
1980 1595 }
1981 -
1982 - return '';
1983 1596 }
1984 1597
1985 1598 /**
1986 1599 * Get cached pack data or request fresh pack data