Seditio Source
Root |
./othercms/elxis_5.3_atlas_rev2452/components/com_content/plugins/youtube/youtube.plugin.php
<?php
/**
* @version        $Id$
* @package        Elxis
* @subpackage    Content Plugins / YouTube
* @copyright    Copyright (c) 2006-2019 Elxis CMS (http://www.elxis.org). All rights reserved.
* @license        Elxis Public License ( http://www.elxis.org/elxis-public-license.html )
* @author        Elxis Team ( http://www.elxis.org )
* @description     Elxis CMS is free software. Read the license for copyright notices and details
*/

defined('_ELXIS_') or die ('Direct access to this location is not allowed');


class
youtubePlugin implements contentPlugin {


   
/********************/
    /* MAGIC CONTRUCTOR */
    /********************/
   
public function __construct() {
    }


   
/***********************************/
    /* EXECUTE PLUGIN ON THE GIVEN ROW */
    /***********************************/
   
public function process(&$row, $published, $params) {
       
$regex = "#{youtube\s*(.*?)}(.*?){/youtube}#s";
       
$regexno = "#{youtube\s*.*?}.*?{/youtube}#s";
        if (!
$published) {
           
$row->text = preg_replace($regexno, '', $row->text);
            return
true;
        }

       
$matches = array();
       
preg_match_all($regex, $row->text, $matches, PREG_PATTERN_ORDER);
        if (!
$matches) { return true; }

       
$defwidth = (int)$params->get('defwidth', 640);
        if (
$defwidth < 200) { $defwidth = 640; }
       
$defheight = intval((9 * $defwidth) / 16);

       
$ePlugin = eFactory::getPlugin();
        foreach (
$matches[0] as $i => $match) {
           
$videoid = trim($matches[2][$i]);
            if (
$videoid == '') {
               
$row->text = preg_replace("#".$match."#", '', $row->text);
                continue;
            }

           
$attributes = $ePlugin->parseAttributes($matches[1][$i]);
           
$html = $this->makeYoutubeHTML($videoid, $attributes, $defwidth, $defheight);
           
$row->text = preg_replace("#".$match."#", $html, $row->text);
        }

        return
true;
    }


   
/************************/
    /* GENERIC SYNTAX STYLE */
    /************************/
   
public function syntax() {
        return
'{youtube width="640" height="360"}YouTube video ID{/youtube}';
    }


   
/***********************/
    /* LIST OF HELPER TABS */
    /***********************/
   
public function tabs() {
       
$eLang = eFactory::getLang();
        return array(
$eLang->get('VIDEOID') , $eLang->get('HELP'));
    }


   
/*****************/
    /* PLUGIN HELPER */
    /*****************/
   
public function helper($pluginid, $tabidx, $fn) {
        switch (
$tabidx) {
            case
1: $this->getVideoId(); break;
            case
2: $this->Help(); break;
            default: break;
        }
    }


   
/***************************************************/
    /* RETURN REQUIRED CSS AND JS FILES FOR THE HELPER */
    /***************************************************/
   
public function head() {
       
$elxis = eFactory::getElxis();

       
$response = array(
           
'js' => array($elxis->secureBase().'/components/com_content/plugins/youtube/includes/youtube.js'),
           
'css' => array()
        );

        return
$response;
    }


   
/*******************************/
    /* PLUGIN SPECIAL TASK HANDLER */
    /*******************************/
   
public function handler($pluginid, $fn) {
       
$elxis = eFactory::getElxis();
       
$url = $elxis->makeAURL('content:plugin/', 'inner.php').'?id='.$pluginid.'&fn='.$fn;
       
$elxis->redirect($url);
    }


   
/********************************/
    /* MAKE YOUTUBE VIDEO HTML CODE */
    /********************************/
   
private function makeYoutubeHTML($videoid, $attributes, $defwidth, $defheight) {
       
$width = $defwidth;
       
$height = $defheight;
        if (
$attributes) {
           
/* we dont use attribute height any more as video aspect ratio must always be 16:9 in order for responsive design to look nice */
           
if (isset($attributes['width'])) {
               
$w = (int)$attributes['width'];
                if (
$w > 100) {
                   
$width = $w;
                   
$height = intval((9 * $w) / 16);
                }
            }
        }

       
$out = '<div class="elx_ytvideo">'."\n";
       
$out .= '<iframe width="'.$width.'" height="'.$height.'" src="//www.youtube.com/embed/'.$videoid.'?rel=0" frameborder="0" allowfullscreen="true"></iframe>'."\n";
       
$out .= "</div>\n";

        return
$out;
    }


   
/******************/
    /* GET A VIDEO ID */
    /******************/
   
private function getVideoId() {
       
$eLang = eFactory::getLang();

        echo
'<div class="elx5_sideinput_wrap">';
        echo
'<div class="elx5_sideinput_value_end elx5_spad">';
        echo
'<a href="javascript:void(null);" class="elx5_btn elx5_ibtn" title="'.$eLang->get('ADD').'" onclick="addYTVideoID();"><i class="fas fa-location-arrow"></i></a>';
        echo
'</div>';
        echo
'<div class="elx5_sideinput_input_front elx5_spad">';
        echo
'<label class="elx5_label" for="youtube_videoid">'.$eLang->get('VIDEOID').'</label>';
        echo
'<div class="elx5_labelside">';
        echo
'<input type="text" name="youtube_videoid" value="" id="youtube_videoid" class="elx5_text" dir="ltr" placeholder="'.$eLang->get('VIDEOID').'" />';
        echo
"</div></div></div>\n";
    }


   
/***************/
    /* PLUGIN HELP */
    /***************/
   
private function Help() {
?>
       <p><strong>Youtube Video</strong> plugin allows you to place a Youtube Video inside article . </p>
        <p><strong><em>How will i get a Youtube Video id?</em></strong><br />
        Each Video on Youtube have a specific URL structure. For example: An elxis video regarding the Elxis Download Center is placed on the url :
        <em>https://www.youtube.com/watch?v=EZHR569uoew</em>. The video id for this URL is: <strong>EZHR569uoew</strong></p>
<?php
   
}

}

?>