aboutsummaryrefslogtreecommitdiffstats
path: root/librevideojs
diff options
context:
space:
mode:
Diffstat (limited to 'librevideojs')
-rw-r--r--librevideojs/libre-panel.php71
-rw-r--r--librevideojs/librevideojs.php252
-rw-r--r--librevideojs/processor.php21
3 files changed, 344 insertions, 0 deletions
diff --git a/librevideojs/libre-panel.php b/librevideojs/libre-panel.php
new file mode 100644
index 0000000..329d22e
--- /dev/null
+++ b/librevideojs/libre-panel.php
@@ -0,0 +1,71 @@
+<?php
+class librevideojs_panel_shortcode{
+ /**
+ * $shortcode_tag
+ * holds the name of the shortcode tag
+ * @var string
+ */
+ public $shortcode_tag = 'librevideojs';
+
+ /**
+ * __construct
+ * class constructor will set the needed filter and action hooks
+ *
+ * @param array $args
+ */
+ function __construct($args = array()){
+ if (is_admin()){
+ add_action('admin_head', array($this, 'admin_head'));
+ add_action('admin_enqueue_scripts', array($this , 'admin_enqueue_scripts'));
+ }
+ }
+
+ /**
+ * admin_head
+ * calls your functions into the correct filters
+ * @return void
+ */
+ function admin_head(){
+ // check user permissions
+ if (!current_user_can('edit_posts') && !current_user_can('edit_pages')){
+ return;
+ }
+
+ // check if WYSIWYG is enabled
+ if ('true' == get_user_option('rich_editing')){
+ add_filter('mce_external_plugins', array($this ,'mce_external_plugins'));
+ add_filter('mce_buttons', array($this, 'mce_buttons'));
+ }
+ }
+
+ /**
+ * mce_external_plugins
+ * Adds our tinymce plugin
+ * @param array $plugin_array
+ * @return array
+ */
+ function mce_external_plugins($plugin_array){
+ $plugin_array[$this->shortcode_tag] = get_bloginfo('template_url') . '/js/mce-button.js';
+ return $plugin_array;
+ }
+
+ /**
+ * mce_buttons
+ * Adds our tinymce button
+ * @param array $buttons
+ * @return array
+ */
+ function mce_buttons($buttons){
+ array_push($buttons, $this->shortcode_tag);
+ return $buttons;
+ }
+
+ /**
+ * admin_enqueue_scripts
+ * Used to enqueue custom styles
+ * @return void
+ */
+ function admin_enqueue_scripts(){
+ wp_enqueue_style('librevideojs_shortcode', get_bloginfo('template_url') . '/css/mce-button.css');
+ }
+}
diff --git a/librevideojs/librevideojs.php b/librevideojs/librevideojs.php
new file mode 100644
index 0000000..cbeb03c
--- /dev/null
+++ b/librevideojs/librevideojs.php
@@ -0,0 +1,252 @@
+<?php
+
+/* Implementación de LibreVideoJS
+==============================================================================================*/
+include_once 'libre-panel.php';
+
+if (!class_exists('LIBREVIDEOJS')){
+
+ class LIBREVIDEOJS{
+
+ var $L_version = '2.0';
+
+ function __construct(){
+ define('L_VERSION', $this->L_version);
+ $this->theme_includes();
+ }
+
+ function theme_includes(){
+ if (!is_admin()) {
+ add_action('wp_enqueue_scripts', 'librevideojs_base');
+ add_shortcode('librevideojs_video', 'LibreVideoJS_embed');
+ //allows shortcode execution in the widget, excerpt and content
+ add_filter('widget_text', 'do_shortcode');
+ add_filter('the_excerpt', 'do_shortcode', 11);
+ add_filter('the_content', 'do_shortcode', 11);
+ }
+ }
+ }
+
+ $GLOBALS['easy_video_player'] = new LIBREVIDEOJS();
+ new librevideojs_panel_shortcode();
+}
+
+function librevideojs_base(){
+ global $post, $theme_url;
+ $theme_url = get_bloginfo('template_url', __FILE__);
+ if ( ( is_author() || is_page() || is_single() ) && strpos($post->post_content, '[librevideojs_video') !== false ){
+ wp_enqueue_style('LibreVideoJS', $theme_url . '/css/librevideojs/teal.min.css', array(), '1.4');
+ wp_enqueue_script('LibreVideoJS', $theme_url . '/js/cliplibrejs.developer.min.js', array(), L_VERSION);
+ wp_enqueue_script('jQuery-Libre', $theme_url . '/js/jquery-3.1.1.min.js', array(), '3.1.1', true);
+ }
+ else {
+ return false;
+ }
+}
+
+function LibreVideoJS_embed($atts, $content=null){
+ extract(shortcode_atts(array(
+ 'url' => '',
+ 'url_calidad' => '',
+ 'code' => '',
+ 'selector' => '',
+ 'width' => '',
+ 'controls' => '',
+ 'preload' => 'auto',
+ 'autoplay' => 'false',
+ 'loop' => '',
+ 'muted' => '',
+ 'poster' => '',
+ 'class' => '',
+ ), $atts));
+
+ if(empty($url)){
+ return __('you need to specify the src of the video file', 'Lidra');
+ }
+
+ // support youtube without DRM
+ require 'processor.php';
+
+ //src
+ if(!empty($url) && strlen($id) === 11 ){
+ $src = '<source src="'. $videoyt .'" type="'. $format .'" />';
+ } else {
+ $src = '<source data-res="'.$url_calidad.'" src="'.$url.'" type="video/'.$code.'"/>';
+ }
+
+ //resolution selector
+ if(!empty($selector)){
+ $resolution = "$selector";
+ }
+ else {
+ $resolution = "$url_calidad";
+ }
+
+ //controls
+ if($controls == "false"){
+ $controls = "";
+ }
+ else{
+ $controls = " controls";
+ }
+
+ //preload
+ if($preload == "metadata"){
+ $preload = ' preload="metadata"';
+ }
+ else if($preload == "none"){
+ $preload = ' preload="none"';
+ }
+ else{
+ $preload = ' preload="auto"';
+ }
+
+ //autoplay
+ if($autoplay == "true"){
+ $autoplay = " autoplay";
+ }
+ else{
+ $autoplay = "";
+ }
+
+ //loop
+ if($loop == "true"){
+ $loop = " loop";
+ }
+ else{
+ $loop = "";
+ }
+
+ //muted
+ if($muted == "true"){
+ $muted = " muted";
+ }
+ else{
+ $muted = "";
+ }
+
+ //Tracks
+ if(!is_null( $content )){
+ $track = do_shortcode($content);
+ }
+ else{
+ $track = "";
+ }
+
+ //Qualities
+ if(!is_null( $content = '' )){
+ $calidades = do_shortcode($content);
+ }
+ else{
+ $calidades = "";
+ }
+
+ //poster
+ if(!empty($poster)){
+ $poster = " poster='$poster'";
+ }
+ $player = "librevideojs" . uniqid();
+
+ //languages
+ $_no_html5 = __('Sorry, this video will not work because your web browser does not support HTML5 video. Please, change or update your browser', 'Lidra');
+
+ $_no_browser = '<p class="librevjs-no-js">' . $_no_html5 . '</p>';
+
+ //force_types
+ $_force_types = 'video/' . $code;
+
+ if ($_force_types === "video/webm") {
+ $_force_types .= "'," . "'video/ogg";
+ }
+ else {
+ $_force_types .= "'," . "'video/webm";
+ }
+
+ //custom style
+ $style = '';
+ if(!empty($width)){
+ $style = <<<EOT
+ <style>
+ $player {
+ max-width:{$width}px;
+ }
+ </style>
+EOT;
+
+ }
+ $output = <<<EOT
+ <div class="LibreVideoJS">
+ <video id="$player" {$controls}{$preload}{$autoplay}{$loop}{$muted}{$poster} data-setup='{}'>
+ {$src}\n\t\t{$calidades}{$track}{$_no_browser}
+ </video>
+ </div>
+ <script>
+ var librestyle = document.getElementById("$player");
+ librestyle.className += " cliplibre-js-responsive-container librevjs-hd cliplibre-js librevjs-libre-mix-skin";
+ cliplibrejs('$player',{plugins:{resolutionSelector:{force_types:['$_force_types'],default_res:"$resolution",}},nativeControlsForTouch:false}).ready(function(){this.hotkeys({volumeStep:0.1,seekStep:5,enableMute:true,enableFullscreen: true,enableNumbers:true}),this.progressTips();});
+ </script>
+ $style
+EOT;
+ return $output;
+}
+
+/*Adding subtitles using... [track]*/
+function track_shortcode($atts, $content=null){
+ extract(shortcode_atts(array(
+ 'kind' => '',
+ 'subt' => '',
+ 'srclang' => '',
+ 'label' => '',
+ 'default' => '',
+ ), $atts));
+
+ if($kind){
+ $kind = " kind='$kind'";
+ }
+
+ if($subt){
+ $subt = " src='$subt'";
+ }
+
+ if($srclang){
+ $srclang = " srclang='$srclang'";
+ }
+
+ if($label){
+ $label = " label='$label'";
+ }
+
+ if($default == "true" || $default == "default"){
+ $default = " default";
+ }
+ else{
+ $default = "";
+ }
+
+ $track = "<track" . $kind . $subt . $srclang . $label . $default . "/>\n\t\t";
+
+ return $track;
+}
+add_shortcode('track', 'track_shortcode');
+
+/*Adding qualities*/
+function calidades_shortcode($atts, $content=null){
+ extract(shortcode_atts(array(
+ 'lvjs_calidad' => '',
+ 'src_video' => '',
+ 'lvjs_code' => '',
+ ), $atts));
+
+ if($lvjs_calidad){
+ $lvjs_calidad = " data-res='$lvjs_calidad'";
+ }
+
+ if($src_video){
+ $src_video = " src='$src_video'";
+ }
+
+ $calidades = "<source" . $lvjs_calidad . $src_video . " type='video/".$lvjs_code."'/>\n\t\t";
+
+ return $calidades;
+}
+add_shortcode('calidades', 'calidades_shortcode');
diff --git a/librevideojs/processor.php b/librevideojs/processor.php
new file mode 100644
index 0000000..555a081
--- /dev/null
+++ b/librevideojs/processor.php
@@ -0,0 +1,21 @@
+<?php
+
+$yturllarge = "www.youtube.com";
+$yturlshort = 'youtu.be/';
+
+if (strpos($url, $yturlshort) !== false || strpos($url, $yturllarge) !== false ){
+ $link = $url;
+ $id = substr($link, -11); //Extract the youtube video ID
+ $format = "video/webm"; //the MIME type of the video. e.g. video/webm, etc.
+ parse_str(file_get_contents("https://youtube.com/get_video_info?video_id=".$id),$info); //decode the data
+ $streams = $info['url_encoded_fmt_stream_map'];
+
+ $streams = explode(',',$streams);
+
+ foreach($streams as $stream){
+ parse_str($stream,$data); //decode the stream
+ if(stripos($data['type'],$format) !== false){ //We've found the right stream with the correct format
+ $videoyt = $data['url']; //the video
+ }
+ }
+}