| Current Path : /home/wuectly/www/plugins/content/sudesign_audio/ |
| Current File : /home/wuectly/www/plugins/content/sudesign_audio/sudesign_audio.php |
<?php defined('_JEXEC') or die;
/**
* @package Plugin Content - Simple Audio Shortcode for Joomla! 1.7.x - 3.x - 4.alpha
* @author SUDesign
* @version 1.5
* @copyright (C) 2016 - SUDesign - All Rights Reserved.
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
* @support http://www.sudesign.fr/contact.html
**/
class plgContentSudesign_audio extends JPlugin
{
public function __construct(& $subject, $config)
{
parent::__construct($subject, $config);
}
private function str2bool( $str )
{
return in_array( strtolower(trim($str)) , array(1,'yes','on', 'true', 'oui') );
}
public function onContentPrepare($context, &$row, $params, $page = 0)
{
if (preg_match_all('/(?P<tag>\[audio(?P<params>[^\]]+)\])/isU',$row->text,$matchs))
{
if ($this->params->get('inc_lib') == 1)
{
$document = JFactory::getDocument();
$v = new Jversion();
if($v->isCompatible('3'))
JHtml::_('jquery.framework');
if ($this->params->get('inc_jquery') == 1)
$document->addScript(JURI::root().'plugins/content/sudesign_audio/lib/jquery-3.2.1.min.js');
$document->addScript(JURI::root().'plugins/content/sudesign_audio/lib/mediaelement-and-player.min.js');
$document->addStyleSheet(JURI::root().'plugins/content/sudesign_audio/lib/mediaelementplayer.min.css');
$default_width = (int)$this->params->get('default_width') - 183;
if( $default_width > 20)
$document->addStyleDeclaration('.mejs-controls div.mejs-time-rail{width:'.$default_width.'px;} .mejs-controls .mejs-time-rail .mejs-time-total{width:'.($default_width-10).'px;}');
}
foreach($matchs['tag'] as $key => $tag)
{
$params = array(
'src' => '',
'onError' => 'shortcodeAudioOnerror(event,this)',
'mp3' => '',
'loop' => 'off',
'autoplay' => 'off',
'showvolume'=> 'on',
'controls' => 'controls',
'type' => '',
'background'=> '',
'btcolor' => '',
'preload' => 'none',
'style' => '',
'hidden' => '',
);
if (preg_match_all('/(?P<param>[^\s]+)\=\"(?P<value>[^\"]+)\"/isU',$matchs['params'][$key], $attrs))
{
foreach($attrs['param'] as $keyp => $param)
{
$params[$param] = trim($attrs['value'][$keyp]);
}
}
if (!empty($params['mp3']))
{
$params['src'] = $params['mp3'];
unset($params['mp3']);
}
if ($this->str2bool($params['hidden']))
$params['style'] = 'display:none;'.$params['style'];
$css = array();
$params['class'] = 'style-'.substr(md5(http_build_query($params)), 10);
if (!empty($params['background']))
{
$css[] = '.'.$params['class'].' .mejs-controls{background:'.$params['background'].'}';
unset($params['background']);
}
if (!empty($params['btcolor']))
{
if ( in_array($params['btcolor'], array('black','red','green','blue')))
$css[] = '.'.$params['class'].' .mejs-button button{background-image:url('.JURI::root().'plugins/content/sudesign_audio/lib/controls-'.$params['btcolor'].'.svg)}';
unset($params['btcolor']);
}
if (isset($params['txtcolor']))
{
$css[] = '.'.$params['class'].' .mejs-controls .mejs-time span{color:'.$params['txtcolor'].'!important}';
unset($params['txtcolor']);
}
if (!empty($params['showvolume']))
{
if(!$this->str2bool($params['showvolume']))
{
$css[] = '.'.$params['class'].' .mejs-button.mejs-volume-button{display:none}';
$css[] = '.'.$params['class'].' .mejs-horizontal-volume-slider{display:none!important}';
}
unset($params['showvolume']);
}
if (!empty($params['style']))
{
$css[] = '.'.$params['class'].'{'.$params['style'].'}';
}
if (empty($params['type']) && !empty($params['src']))
{
$ext = strtolower(trim(pathinfo($params['src'], PATHINFO_EXTENSION)));
$params['type'] = 'audio/'.$ext;
}
$attrs = array();
foreach($params as $attr => $value)
if (!empty($value))
if (in_array( strtolower(trim($attr)) , array('loop','autoplay')))
$attrs[] = $this->str2bool($value) ? $attr : '';
else
$attrs[] = $attr.'="'.($this->str2bool($value) ? 'true': $value).'"';
$fallback = '<a href="'.$params['src'].'" target="_blank">'.parse_url($params['src'],PHP_URL_HOST).'</a>';
$html = '<audio '.implode(' ',$attrs).'>'.$fallback.'</audio>'.(empty($css)?'':'<style type="text/css">'.implode("\n",$css).'</style>');
$row->text = str_replace($tag, $html, $row->text);
}
$row->text = '<!--[if lt IE 9]><script>document.createElement("audio");</script><![endif]-->'.str_replace('[/audio]','',$row->text);
}
return true;
}
}