File: /var/www/html/wpyourdayfloraldesign/wp-content/themes/vamtam-fiore/vamtam/classes/video-player.php
<?php
/**
* Renders an HTML5 video player or an iframe for embedded videos.
*
* @package vamtam/fiore
*/
/**
* class VamtamVideoPlayer
*/
class VamtamVideoPlayer {
private $is_embedded = false;
private $src_mp4 = '';
private $src_webm = '';
private $muted = true;
private $fallback_src = '';
private $video_zoom = 1.5;
private $player = '';
public function __construct( $is_embedded, $src_mp4, $src_webm, $muted, $fallback_src, $video_zoom ) {
$this->is_embedded = $is_embedded;
$this->src_mp4 = $src_mp4;
$this->src_webm = $src_webm;
$this->muted = $muted;
$this->fallback_src = $fallback_src;
$this->video_zoom = $video_zoom;
$this->init();
}
private function youtube_valid_vid_id( $url ) {
$p = '/^(?:https?:\/\/)?(?:www\.)?(?:youtu\.be\/|youtube\.com\/(?:embed\/|v\/|watch\?v=|watch\?.+&v=))((\w|-){11})(?:\S+)?$/';
$res = preg_match( $p, $url, $matches );
if ( ! $res ) {
return false;
}
return $matches;
}
private function vimeo_valid_vid_id( $url ) {
$p = '/(http|https)?:\/\/(www\.)?vimeo.com\/(?:channels\/(?:\w+\/)?|groups\/([^\/]*)\/videos\/|)(\d+)(?:|\/\?)/';
$res = preg_match( $p, $url, $matches );
if ( ! $res ) {
return false;
}
return $matches;
}
private function get_iframe_player() {
$src = $this->src_mp4;
$is_valid_src = ! empty( $src ) && is_string( $src ) && ( $this->youtube_valid_vid_id( $src ) || $this->vimeo_valid_vid_id( $src ) );
$fallback = '<img
src="' . esc_url( $this->fallback_src ) .
'" title="Invalid video URL."
alt="Invalid video URL."
style="width: 100%; height: 100%;"
>';
$should_show_fallback = ! empty( $this->fallback_src ) ? $fallback : '';
$classes = 'vt-embed-vp-wrap';
$is_valid_src && $classes .= ' has-vid';
$html =
'<div class="' . esc_attr( $classes ) . '"'
. ( $is_valid_src ? ' style="transform: scale(' . $this->video_zoom . ');"' : '' ) . '>'
. ( $is_valid_src ? $this->create_iframe_player() : $should_show_fallback ) .
'</div>';
return $html;
}
private function create_iframe_player() {
$src = $this->src_mp4;
$video_id;
$is_youtube = $this->youtube_valid_vid_id( $src );
if ( $is_youtube ) {
$video_id = $is_youtube[1];
} elseif ( $this->vimeo_valid_vid_id( $src ) ) {
$video_id = $this->vimeo_valid_vid_id( $src )[4];
} else {
return '';
}
$embed = $is_youtube
? 'https://www.youtube.com/embed/' . $video_id . '?controls=0&showinfo=0&loop=1&playlist=' . $video_id . '&rel=0&start=0&mute=' . ( $this->muted ? '1' : '0' ) . '&disablekb=1&enablejsapi=1'
: 'https://player.vimeo.com/video/' . $video_id . '?title=0&portrait=0&muted=' . ( $this->muted ? '1' : '0' ) . '&autopause=0&loop=1&background=0&byline=0&speed=0';
$html = '<iframe
title="Video Player"
src="' . esc_url( $embed ) .
'"frameBorder="0"
allowFullScreen="1"
></iframe>';
return $html;
}
private function get_html5_video_player() {
$html = '<video class="vt-vm-vid"' . ( $this->muted ? ' muted ' : '' ) . ' loop poster=' . esc_url( $this->fallback_src ) . '>
<source src="' . esc_url( $this->src_mp4 ) . '" type="video/mp4">
<source src="' . esc_url( $this->src_webm ) . '" type="video/webm">
<img src="' . esc_url( $this->fallback_src ) . '" title="Your browser does not support the video tag" alt="Your browser does not support the video tag">
</video>';
return $html;
}
public function init() {
$html = '<div class="vt-video-player-wrap">'
. ( $this->is_embedded ? $this->get_iframe_player() : $this->get_html5_video_player() ) .
'</div>';
$this->player = $html;
}
public function get_player() {
return $this->player;
}
}