post_id > 0 && 'aiovg_videos' == $this->post_type ) {
if ( ! $this->has_access && ! $this->is_trailer ) {
return $this->get_player_restricted_message();
}
}
$videos = $this->get_videos();
// Raw embedcode that contains script tags
if ( isset( $videos['embedcode'] ) ) {
return $this->get_player_raw_embed();
}
// Iframe embedcode
if ( isset( $videos['iframe'] ) ) {
return $this->get_player_lite_embed();
}
// Videojs player
return $this->get_player_videojs();
}
/**
* Get the videojs player HTML.
*
* @since 3.5.0
* @access private
* @return string Player HTML.
*/
public function get_player_videojs() {
$player_settings = $this->get_player_settings();
$privacy_settings = $this->get_privacy_settings();
$logo_settings = $this->get_logo_settings();
$trailer_settings = $this->get_trailer_settings();
$email_capture_settings = $this->get_email_capture_settings();
$videos = $this->get_videos();
$poster = $this->get_poster();
$params = $this->get_params();
$settings = array(
'post_id' => (int) $this->post_id,
'post_type' => sanitize_text_field( $this->post_type ),
'cookie_consent' => 0,
'cc_load_policy' => (int) $player_settings['cc_load_policy'],
'hotkeys' => (int) $player_settings['hotkeys'],
'statistics' => (int) $player_settings['statistics'],
'player' => array(
'controlBar' => array(),
'liveui' => true,
'textTrackSettings' => false,
'playbackRates' => array( 0.5, 0.75, 1, 1.5, 2 ),
'techCanOverridePoster' => true,
'suppressNotSupportedError' => true
)
);
// Video Sources
$formats = array( 'mp4', 'webm', 'ogv', 'hls', 'dash', 'youtube', 'vimeo' );
$sources = array();
foreach ( $formats as $format ) {
if ( empty( $videos[ $format ] ) ) {
continue;
}
$mime_type = "video/{$format}";
$label = '';
switch ( $format ) {
case 'mp4':
$extension = aiovg_get_file_ext( $videos[ $format ] );
if ( ! in_array( $extension, array( 'webm', 'ogv' ) ) ) {
$extension = 'mp4';
}
$mime_type = "video/{$extension}";
if ( ! empty( $videos['quality_level'] ) ) {
$label = $videos['quality_level'];
}
break;
case 'hls':
$mime_type = 'application/x-mpegurl';
break;
case 'dash':
$mime_type = 'application/dash+xml';
break;
}
$sources[ $format ] = array(
'type' => $mime_type,
'src' => $videos[ $format ]
);
if ( ! empty( $label ) ) {
$sources[ $format ]['label'] = $label;
}
}
if ( isset( $videos['sources'] ) ) {
foreach ( $videos['sources'] as $source ) {
if ( ! empty( $source['quality'] ) && ! empty( $source['src'] ) ) {
$extension = aiovg_get_file_ext( $source['src'] );
if ( ! in_array( $extension, array( 'webm', 'ogv' ) ) ) {
$extension = 'mp4';
}
$label = $source['quality'];
$sources[ $label ] = array(
'type' => "video/{$extension}",
'src' => $source['src'],
'label' => $label
);
}
}
}
$sources = apply_filters( 'aiovg_player_sources', $sources, $params ); // Backward compatibility to 3.3.0
$sources = apply_filters( 'aiovg_videojs_player_sources', $sources, $params );
// Video Tracks
$has_tracks = ! empty( $player_settings['tracks'] ) || ! empty( $settings['cc_load_policy'] );
$tracks = array();
if ( $has_tracks ) {
$tracks = $this->get_tracks();
$has_srt_found = 0;
foreach ( $tracks as $index => $track ) {
$ext = pathinfo( $track['src'], PATHINFO_EXTENSION );
if ( 'srt' == strtolower( $ext ) ) {
$has_srt_found = 1;
break;
}
}
if ( $has_srt_found ) {
$settings['tracks'] = $tracks;
$tracks = array();
}
}
$tracks = apply_filters( 'aiovg_player_tracks', $tracks, $params ); // Backward compatibility to 3.3.0
$tracks = apply_filters( 'aiovg_videojs_player_tracks', $tracks, $params );
// Video Chapters
if ( ! empty( $player_settings['chapters'] ) ) {
$chapters = $this->get_chapters();
if ( ! empty( $chapters ) ) {
$settings['chapters'] = $chapters;
}
}
// Video Attributes
$attributes = array(
'id' => 'aiovg-player-' . (int) $this->player_uid,
'class' => 'video-js vjs-fill vjs-theme-' . sanitize_text_field( $player_settings['theme'] ),
'style' => 'width: 100%; height: 100%;',
'controls' => '',
'preload' => esc_attr( $player_settings['preload'] )
);
if ( ! empty( $player_settings['autoplay'] ) ) {
$settings['player']['autoplay'] = true;
}
if ( ! empty( $player_settings['loop'] ) ) {
$attributes['loop'] = '';
}
if ( ! empty( $player_settings['muted'] ) ) {
$attributes['muted'] = '';
}
if ( ! empty( $player_settings['playsinline'] ) ) {
$attributes['playsinline'] = '';
}
if ( ! empty( $poster ) ) {
$attributes['poster'] = esc_url( $poster );
}
if ( ! empty( $logo_settings['copyright_text'] ) ) {
$attributes['controlsList'] = 'nodownload';
$attributes['oncontextmenu'] = 'return false;';
}
// Player Settings
$controls = array(
'playpause' => 'PlayToggle',
'current' => 'CurrentTimeDisplay',
'progress' => 'ProgressControl',
'duration' => 'DurationDisplay',
'spacer' => 'CustomControlSpacer',
'tracks' => 'CaptionsButton',
'speed' => 'PlaybackRateMenuButton',
'quality' => 'QualitySelector',
'volume' => 'VolumePanel',
'pip' => 'PictureInPictureToggle',
'fullscreen' => 'FullscreenToggle'
);
foreach ( $controls as $index => $control ) {
$enabled = ( isset( $player_settings[ $index ] ) && ! empty( $player_settings[ $index ] ) ) ? 1 : 0;
if ( 'spacer' == $index ) {
$enabled = 1;
}
if ( $enabled && 'pip' == $index ) {
if ( isset( $sources['youtube'] ) || isset( $sources['vimeo'] ) ) {
$enabled = 0;
}
}
if ( ! $enabled ) {
unset( $controls[ $index ] );
}
}
if ( isset( $sources['hls'] ) || isset( $sources['dash'] ) ) {
if ( isset( $controls['progress'] ) ) {
$controls = aiovg_insert_array_after( 'progress', $controls, array(
'liveui' => 'SeekToLive'
));
}
}
if ( isset( $controls['current'] ) && isset( $controls['duration'] ) ) {
if ( 'custom' == $player_settings['theme'] || ! isset( $controls['progress'] ) ) {
$controls = aiovg_insert_array_after( 'current', $controls, array(
'timedivider' => 'TimeDivider'
));
}
}
if ( isset( $controls['tracks'] ) ) {
$controls = aiovg_insert_array_after( 'tracks', $controls, array(
'audio' => 'AudioTrackButton'
));
}
$settings['player']['controlBar']['children'] = array_values( $controls );
if ( ! isset( $controls['progress'] ) ) {
$attributes['class'] .= ' vjs-no-progress-control';
}
if ( empty( $controls ) || ( 1 == count( $controls ) && isset( $controls['spacer'] ) ) ) {
$attributes['class'] .= ' vjs-no-control-bar';
}
$attributes = apply_filters( 'aiovg_player_attributes', $attributes, $params ); // Backward compatibility to 3.3.0
$attributes = apply_filters( 'aiovg_videojs_player_attributes', $attributes, $params );
if ( ! empty( $player_settings['share'] ) ) {
$settings['share'] = 1;
}
if ( ! empty( $player_settings['embed'] ) ) {
$settings['embed'] = 1;
}
if ( ! empty( $player_settings['download'] ) && $download_url = $this->get_download_url() ) {
$settings['download'] = array(
'url' => esc_url( $download_url )
);
}
if ( ! empty( $logo_settings['show_logo'] ) ) {
$settings['logo'] = array(
'image' => esc_url( $logo_settings['logo_image'] ),
'link' => esc_url( $logo_settings['logo_link'] ),
'position' => sanitize_text_field( $logo_settings['logo_position'] ),
'margin' => (int) $logo_settings['logo_margin']
);
}
if ( ! empty( $logo_settings['copyright_text'] ) ) {
$settings['contextmenu'] = array(
'content' => wp_strip_all_tags( $logo_settings['copyright_text'] )
);
}
if ( $this->is_trailer ) {
$settings['trailer'] = array(
'label' => wp_strip_all_tags( $trailer_settings['label'] ),
'url' => esc_url( $trailer_settings['url'] )
);
}
if ( ! empty( $privacy_settings['show_consent'] ) ) {
if ( isset( $sources['youtube'] ) || isset( $sources['vimeo'] ) ) {
$settings['cookie_consent'] = 1;
}
}
if ( ! empty( $email_capture_settings['enable_email_capture'] ) ) {
$settings['email_capture'] = 1;
}
if ( isset( $sources['youtube'] ) ) { // YouTube
$settings['player']['techOrder'] = array( 'youtube' );
$settings['player']['youtube'] = array(
'iv_load_policy' => 3,
'playsinline' => ( ! empty( $player_settings['playsinline'] ) ? 1 : 0 )
);
parse_str( $sources['youtube']['src'], $queries );
if ( isset( $queries['start'] ) ) {
$settings['start'] = (int) $queries['start'];
}
if ( isset( $queries['t'] ) ) {
$settings['start'] = (int) $queries['t'];
}
if ( isset( $queries['end'] ) ) {
$settings['end'] = (int) $queries['end'];
}
// Hide YouTube Logo
if ( ! empty( $player_settings['hide_youtube_logo'] ) ) {
$attributes['class'] .= ' vjs-hide-youtube-logo';
}
}
if ( isset( $sources['vimeo'] ) ) { // Vimeo
$settings['player']['techOrder'] = array( 'vimeo2' );
$settings['player']['vimeo2'] = array(
'playsinline' => ( ! empty( $player_settings['playsinline'] ) ? 1 : 0 )
);
if ( strpos( $sources['vimeo']['src'], 'player.vimeo.com' ) !== false ) {
$video_id = aiovg_get_vimeo_id_from_url( $sources['vimeo']['src'] );
$sources['vimeo']['src'] = 'https://vimeo.com/' . $video_id;
}
}
$settings = apply_filters( 'aiovg_player_settings', $settings, $params ); // Backward compatibility to 3.3.0
$settings = apply_filters( 'aiovg_videojs_player_settings', $settings, $params );
// Trailers should not send statistics and should have limited controls to encourage users to watch the full video.
if ( $this->is_trailer ) {
$tracks = array();
$settings['statistics'] = 0;
unset( $settings['tracks'] );
unset( $settings['chapters'] );
unset( $settings['download'] );
}
// Include Dependencies
wp_enqueue_style(
AIOVG_PLUGIN_SLUG . '-videojs',
AIOVG_PLUGIN_URL . 'vendor/videojs/video-js.min.css',
array(),
'8.18.1',
'all'
);
if ( in_array( 'QualitySelector', $settings['player']['controlBar']['children'] ) ) {
if ( isset( $sources['mp4'] ) || isset( $sources['webm'] ) || isset( $sources['ogv'] ) ) {
wp_enqueue_style(
AIOVG_PLUGIN_SLUG . '-quality-selector',
AIOVG_PLUGIN_URL . 'vendor/videojs/plugins/quality-selector/quality-selector.min.css',
array(),
'1.3.1',
'all'
);
}
if ( isset( $sources['hls'] ) || isset( $sources['dash'] ) ) {
wp_enqueue_style(
AIOVG_PLUGIN_SLUG . '-videojs-contrib-quality-menu',
AIOVG_PLUGIN_URL . 'vendor/videojs/plugins/contrib-quality-menu/videojs-contrib-quality-menu.min.css',
array(),
'1.0.3',
'all'
);
}
}
if ( isset( $settings['share'] ) || isset( $settings['embed'] ) || isset( $settings['download'] ) || isset( $settings['logo'] ) || isset( $settings['trailer'] ) ) {
wp_enqueue_style(
AIOVG_PLUGIN_SLUG . '-overlay',
AIOVG_PLUGIN_URL . 'vendor/videojs/plugins/overlay/videojs-overlay.min.css',
array(),
'3.1.0',
'all'
);
}
if ( isset( $settings['share'] ) ) {
wp_enqueue_style( AIOVG_PLUGIN_SLUG . '-icons' );
}
wp_dequeue_style( AIOVG_PLUGIN_SLUG . '-player' );
wp_enqueue_style(
AIOVG_PLUGIN_SLUG . '-player',
AIOVG_PLUGIN_URL . 'public/assets/css/videojs.min.css',
array(),
AIOVG_PLUGIN_VERSION,
'all'
);
wp_enqueue_script(
AIOVG_PLUGIN_SLUG . '-videojs',
AIOVG_PLUGIN_URL . 'vendor/videojs/video.min.js',
array(),
'8.18.1',
array( 'strategy' => 'defer' )
);
if ( in_array( 'QualitySelector', $settings['player']['controlBar']['children'] ) ) {
if ( isset( $sources['mp4'] ) || isset( $sources['webm'] ) || isset( $sources['ogv'] ) ) {
wp_enqueue_script(
AIOVG_PLUGIN_SLUG . '-quality-selector',
AIOVG_PLUGIN_URL . 'vendor/videojs/plugins/quality-selector/silvermine-videojs-quality-selector.min.js',
array( AIOVG_PLUGIN_SLUG . '-videojs' ),
'1.3.1',
array( 'strategy' => 'defer' )
);
}
if ( isset( $sources['hls'] ) || isset( $sources['dash'] ) ) {
wp_enqueue_script(
AIOVG_PLUGIN_SLUG . '-videojs-contrib-quality-menu',
AIOVG_PLUGIN_URL . 'vendor/videojs/plugins/contrib-quality-menu/videojs-contrib-quality-menu.min.js',
array( AIOVG_PLUGIN_SLUG . '-videojs' ),
'1.0.3',
array( 'strategy' => 'defer' )
);
}
}
if ( isset( $sources['youtube'] ) ) {
wp_enqueue_script(
AIOVG_PLUGIN_SLUG . '-youtube',
AIOVG_PLUGIN_URL . 'vendor/videojs/plugins/youtube/Youtube.min.js',
array( AIOVG_PLUGIN_SLUG . '-videojs' ),
'3.1.0',
array( 'strategy' => 'defer' )
);
}
if ( isset( $settings['start'] ) || isset( $settings['end'] ) ) {
wp_enqueue_script(
AIOVG_PLUGIN_SLUG . '-offset',
AIOVG_PLUGIN_URL . 'vendor/videojs/plugins/offset/videojs-offset.min.js',
array( AIOVG_PLUGIN_SLUG . '-videojs' ),
'2.1.3',
array( 'strategy' => 'defer' )
);
}
if ( isset( $sources['vimeo'] ) ) {
wp_enqueue_script(
AIOVG_PLUGIN_SLUG . '-vimeo',
AIOVG_PLUGIN_URL . 'vendor/videojs/plugins/vimeo/Vimeo.min.js',
array( AIOVG_PLUGIN_SLUG . '-videojs' ),
'3.1.0',
array( 'strategy' => 'defer' )
);
}
if ( isset( $settings['share'] ) || isset( $settings['embed'] ) || isset( $settings['download'] ) || isset( $settings['logo'] ) || isset( $settings['trailer'] ) ) {
wp_enqueue_script(
AIOVG_PLUGIN_SLUG . '-overlay',
AIOVG_PLUGIN_URL . 'vendor/videojs/plugins/overlay/videojs-overlay.min.js',
array( AIOVG_PLUGIN_SLUG . '-videojs' ),
'3.1.0',
array( 'strategy' => 'defer' )
);
}
if ( ! empty( $settings['hotkeys'] ) ) {
wp_enqueue_script(
AIOVG_PLUGIN_SLUG . '-hotkeys',
AIOVG_PLUGIN_URL . 'vendor/videojs/plugins/hotkeys/videojs.hotkeys.min.js',
array( AIOVG_PLUGIN_SLUG . '-videojs' ),
'0.2.30',
array( 'strategy' => 'defer' )
);
}
$_params = $params;
$_params['settings'] = $settings;
$_params['attributes'] = $attributes;
$_params['sources'] = $sources;
$_params['tracks'] = $tracks;
do_action( 'aiovg_player_scripts', $_params ); // Backward compatibility to 3.3.0
do_action( 'aiovg_videojs_player_scripts', $settings, $attributes, $sources, $tracks );
wp_enqueue_script( AIOVG_PLUGIN_SLUG . '-player' );
// Output
$player_html = sprintf( '