b0y-101 Mini Shell


Current Path : E:/www/risk/plugins/system/mediabox_ck/
File Upload :
Current File : E:/www/risk/plugins/system/mediabox_ck/mediabox_ck.php

<?php

/**
 * @copyright	Copyright (C) 2011 Cédric KEIFLIN alias ced1870
 * http://www.joomlack.fr
 * @license		GNU/GPL
 * */
defined('_JEXEC') or die('Restricted access');
jimport('joomla.plugin.plugin');
jimport('joomla.filesystem.folder');
jimport('joomla.filesystem.file');

class plgSystemMediabox_ck extends \Joomla\CMS\Plugin\CMSPlugin {

	function __construct(&$subject, $config) {
		parent :: __construct($subject, $config);
	}
	
	function onContentPrepareForm($form, $data) {
		// check that we are in the correct plugin
		if ( $form->getName() != 'com_plugins.plugin'
			|| ($data && $data->element != 'mediabox_ck')
			)
			return;

		// check that we have the pro version
		if (! file_exists(dirname(__FILE__) . '/pro/mediaboxck_pro.php')) {
			return;
		}

		\Joomla\CMS\Form\Form::addFormPath(JPATH_SITE . '/plugins/system/mediabox_ck/pro');

		// get the language
		$this->loadLanguage();

		// adds pro options
		$form->loadFile('mediaboxck_pro_options', false);
	}

	function onBeforeRender() {
		
		// get the language
		$this->loadLanguage();
		\Joomla\CMS\Language\Text::script('MEDIABOXCK_SHARE');
		\Joomla\CMS\Language\Text::script('MEDIABOXCK_EMAIL');

		$app = \Joomla\CMS\Factory::getApplication();
		$document = \Joomla\CMS\Factory::getDocument();
		$doctype = $document->getType();
		$input = new \Joomla\CMS\Input\Input();
		
		// si pas en frontend, on sort
		if ($app->isClient('administrator')) {
			return false;
		}

		// si pas HTML, on sort
		if ($doctype !== 'html') {
			return;
		}

		if ($input->get('layout') == 'edit' || $input->get('task') == 'edit' || $input->get('func') == 'edit' || $input->get('controller') == 'config.display.modules') {
			return;
		}

		// calls the pro file
		if (file_exists(dirname(__FILE__) . '/pro/mediaboxck_pro.php')) {
			include_once (dirname(__FILE__) . '/pro/mediaboxck_pro.php');
		}

		// recupere l'ID de la page
		// $id = JRequest::getInt('Itemid');
		$input = new \Joomla\CMS\Input\Input();
		$id = $input->get('Itemid', 'int');

		// charge les parametres
		$IDs = explode(",", $this->params->get('pageselect', '0'));

		// test, si on n'est pas bon on sort
		if (!in_array($id, $IDs) && $IDs[0] != 0)
			return false;

		$cornerradius = $this->params->get('cornerradius', '10');
		$shadowoffset = $this->params->get('shadowoffset', '5');
		$overlayopacity = $this->params->get('overlayopacity', '0.7');
		$bgcolor = $this->params->get('bgcolor', '#1a1a1a');
		$overlaycolor = $this->params->get('overlaycolor', '#000');
		$text1color = $this->params->get('text1color', '#999');
		$text2color = $this->params->get('text2color', '#fff');
		$resizeopening = $this->params->get('resizeopening', 'true');
		$resizeduration = $this->params->get('resizeduration', '240');
		$initialwidth = (int)$this->params->get('initialwidth', '320');
		$initialheight = (int)$this->params->get('initialheight', '180');
		$fullwidth = $this->params->get('fullwidth', '0');
		$defaultwidth = $this->params->get('defaultwidth', '640');
		$defaultheight = $this->params->get('defaultheight', '360');
		$showcaption = $this->params->get('showcaption', 'true');
		$showcounter = $this->params->get('showcounter', 'true');
		$attribtype = $this->params->get('attribtype', 'className');
		$attribname = $this->params->get('attribname', 'lightbox');
		$mobileForce = $this->params->get('mobile_enable', '1') && $this->params->get('mobile_force', '0');

        /* fin de la fonction */

		// loads jQuery
        \Joomla\CMS\HTML\HTMLHelper::_('jquery.framework',true);

        $document->addStyleSheet( 'plugins/system/mediabox_ck/assets/mediaboxck.css?ver=2.6.0' );
		$document->addStyleDeclaration("
			#mbCenter, #mbToolbar {
	background-color: ".$bgcolor.";
	-webkit-border-radius: ".$cornerradius."px;
	-khtml-border-radius: ".$cornerradius."px;
	-moz-border-radius: ".$cornerradius."px;
	border-radius: ".$cornerradius."px;
	-webkit-box-shadow: 0px ".$shadowoffset."px 20px rgba(0,0,0,0.50);
	-khtml-box-shadow: 0px ".$shadowoffset."px 20px rgba(0,0,0,0.50);
	-moz-box-shadow: 0px ".$shadowoffset."px 20px rgba(0,0,0,0.50);
	box-shadow: 0px ".$shadowoffset."px 20px rgba(0,0,0,0.50);
	/* For IE 8 */
	-ms-filter: \"progid:DXImageTransform.Microsoft.Shadow(Strength=".$shadowoffset.", Direction=180, Color='#000000')\";
	/* For IE 5.5 - 7 */
	filter: progid:DXImageTransform.Microsoft.Shadow(Strength=".$shadowoffset.", Direction=180, Color='#000000');
	}
	
	#mbOverlay {
		background-color: ".$overlaycolor.";
		" . ($this->params->get('overlaybgimage', '') ? "background-image: url(".$this->params->get('overlaybgimage', '').");" : "") . "
	}
	
	#mbCenter.mbLoading {
		background-color: ".$bgcolor.";
	}
	
	#mbBottom {
		color: ".$text1color.";
	}
	
	#mbTitle, #mbPrevLink, #mbNextLink, #mbCloseLink, #mbPlayLink, #mbPauseLink, #mbZoomMinus, #mbZoomValue, #mbZoomPlus {
		color: ".$text2color.";
	}
		");
	
		// add pro styles from settings by calling the pro method
		if (class_exists('plgSystemMediabox_ck_pro') && method_exists('plgSystemMediabox_ck_pro', 'createProCss')) {
			plgSystemMediabox_ck_pro::createProCss();
		}

		// set detection for mobiles
		if (!class_exists('Mediaboxck_Mobile_Detect')) {
			require_once dirname(__FILE__) . '/mediaboxck_mobile_detect.php';
		}
		$detect = new Mediaboxck_Mobile_Detect;
		$deviceType = ($detect->isMobile() ? ($detect->isTablet() ? 'tablet' : 'phone') : 'computer');

		$debug = false;
		if ($debug === true) {
			$document->addScript(\Joomla\CMS\Uri\Uri::base(true)."/plugins/system/mediabox_ck/assets/mediaboxck.js?ver=2.7.1");
		} else {
		$document->addScript(\Joomla\CMS\Uri\Uri::base(true)."/plugins/system/mediabox_ck/assets/mediaboxck.min.js?ver=2.7.1");
		}

		$document->addScriptDeclaration("
						Mediabox.scanPage = function() {
							var links = jQuery('a').filter(function(i) {
								if ( jQuery(this).attr('".($attribtype == 'rel' ? 'rel' : 'class')."') 
										&& jQuery(this).data('mediaboxck_done') != '1') {
									var patt = new RegExp(/^" . $attribname . "/i);
									return patt.test(jQuery(this).attr('".($attribtype == 'rel' ? 'rel' : 'class')."'));
								}
							});
							if (! links.length) return false;

							new Mediaboxck(links, {
								overlayOpacity : 	".$overlayopacity.",
								resizeOpening : 	".$resizeopening.",
								resizeDuration : 	".$resizeduration.",
								initialWidth : 		".$initialwidth.",
								initialHeight : 	".$initialheight.",
								fullWidth : 		'".$fullwidth."',
								defaultWidth : 		'".$defaultwidth."',
								defaultHeight : 	'".$defaultheight."',
								showCaption : 		".$showcaption.",
								showCounter : 		".$showcounter.",
								loop : 				".$this->params->get('loop', 'false').",
								isMobileEnable: 	".$this->params->get('mobile_enable', '1').",
								// mobileDetection: 	'".$this->params->get('mobile_detectiontype', 'resolution')."',
								isMobile: 			". ( $mobileForce ? 'true' : ($deviceType != 'computer' ? 'true' : 'false') ) .",
								mobileResolution: 	'".$this->params->get('mobile_resolution', '640')."',
								attribType :		'".($attribtype == 'rel' ? 'rel' : 'class')."',
								showToolbar :		'".$this->params->get('showtoolbar', '0')."',
								diapoTime :			'".$this->params->get('diapotime', '3000')."',
								diapoAutoplay :		'".$this->params->get('diapoAutoplay', 'false')."',
								toolbarSize :		'".$this->params->get('toolbarsize', 'normal')."',
								medialoop :		false,
								showZoom :		".$this->params->get('showZoom', '0').",
								share :		".$this->params->get('showshare', '0').",
								theme :		'".$this->params->get('theme', 'default')."',
								counterText: '" . \Joomla\CMS\Language\Text::_('MEDIABOXCK_COUNTER_TEXT') . "',
							}, null, function(curlink, el) {
								var rel0 = curlink.".$attribtype.".replace(/[[]|]/gi,\" \");
								var relsize = rel0.split(\" \");
								return (curlink == el) || ((curlink.".$attribtype.".length > ".strlen($attribname).") && el.".$attribtype.".match(relsize[1]));
							});
						};
					jQuery(document).ready(function(){
						Mediabox.scanPage();
					});
");
	}

	/* Pro feature */
	public function onAfterRender() {
		$app = \Joomla\CMS\Factory::getApplication();
		$document = \Joomla\CMS\Factory::getDocument();
		$doctype = $document->getType();
		$input = new \Joomla\CMS\Input\Input();

		// stop if we are in admin
		if ($app->isClient('administrator') || $doctype !== 'html') {
			return;
		}
		
		if ($input->get('layout') == 'edit' || $input->get('task') == 'edit' || $input->get('func') == 'edit') {
			return;
		}

		if (! self::callProFile()) {
			return;
		}

		// call the pro method
		if (class_exists('plgSystemMediabox_ck_pro') && method_exists('plgSystemMediabox_ck_pro', 'replaceTag')) {
			plgSystemMediabox_ck_pro::replaceTag();
		}

		return;
	}
	
	function onAjaxMediabox_ck() {
		$app = \Joomla\CMS\Factory::getApplication();
		$input = $app->input;
		
		$method = $input->get('method');

		if (method_exists($this, $method)) {
			$results = call_user_func(array($this,$method));
		}
		
		return $results;
	}
	
	public function AjaxListFolders($path = '', $filter = '.', $level = 1) {
		$input = new \Joomla\CMS\Input\Input();
		$path = $path ? $path : JPATH_ROOT . '/images';
		$level = $level ? $level :  $input->get('level');
		$fhtml = '';
		$folders = \Joomla\CMS\Filesystem\Folder::folders($path, $filter);

		if (! count($folders)) return;
		if ($level > 1) {
			$labelfor = str_replace('\\', '', str_replace('/', '', str_replace(JPATH_ROOT, '', $path)));
			$fhtml .=  '<input type="checkbox" style="display: none;" name="' . $labelfor . '" id="' . $labelfor . '"/>';
			$fhtml .=  '<label class="cksubfoldertoggler" for="' . $labelfor . '">+</label>';
			$fhtml .=  '<div class="cksubfolder">';
		}

		foreach ($folders as $name)
		{
			$fullname = \Joomla\CMS\Filesystem\Path::clean($path . '/' . $name);
			$relname = str_replace(JPATH_ROOT, '', $fullname);

			$fhtml .= '<div class="ckfolderitem"><span style="display:inline-block;padding-left:' . ($level*20) . 'px"><img src="' . \Joomla\CMS\Uri\Uri::root(true) . '/plugins/editors-xtd/mediaboxckbutton/assets/images/folder.png" width="16" height="16" /></span>';
			// $fhtml .= '<span class="ckfoldername" data-foldername="' . $relname . '" onclick="selectfolderck(this, \'mediaboxck_popup_source_dir\');">' . $name . '</span>';
			$fhtml .= '<span class="ckfoldername" data-foldername="' . $relname . '" onclick="selectfolderck(this)">' . $name . '</span>';
			$fhtml .= '</div>';
			$fhtml .= self::AjaxListFolders($fullname, $filter, $level + 1);
		}
		if ($level > 1) {
			$fhtml .=  '</div>';
		}

		return $fhtml;
	}

	/**
	* Check updates for the component, module, or plugins
	*/
	public function check_update($name = 'maximenuck', $type='component', $folder='system') {
		$input = new \Joomla\CMS\Input\Input();

		// init values
		$name = $input->get('name','','string') ? $input->get('name','','string') : $name;
		$type = $input->get('type','','string') ? $input->get('type','','string') : $type;
		$folder = $input->get('folder','','string') ? $input->get('folder','','string') : $folder;

		switch ($type) {
			case 'module' :
				$file_url = JPATH_SITE .'/modules/mod_'.$name.'/mod_'.$name.'.xml';
				$http_url = 'http://update.joomlack.fr/mod_'.$name.'_update.xml'; 
				$prefix = 'mod_';
				break;
			case 'plugin' :
				$file_url = JPATH_SITE .'/plugins/'.$folder.'/'.$name.'/'.$name.'.xml';
				$http_url = 'http://update.joomlack.fr/plg_'.$name.'_update.xml'; 
				// $prefix = 'plg_';
				$prefix = '';
				break;
			case 'component' :
			default :
				$file_url = JPATH_SITE .'/administrator/components/com_'.$name.'/'.$name.'.xml';
				$http_url = 'http://update.joomlack.fr/com_'.$name.'_update.xml';
				$prefix = 'com_';
				break;
		}

		// $xml_latest = false;
		$installed_version = false;

		// get the version installed
		if (! $xml_installed = \Joomla\CMS\Factory::getXML($file_url)) {
			die;
		} else {
			$installed_version = (string)$xml_installed->version;
		}

		// get the latest available version
		// error_reporting(0); // needed because the udpater triggers some warnings in joomla 2.5
		jimport('joomla.updater.updater');
		$updater = \Joomla\CMS\Updater\Updater::getInstance();
		$updater->findUpdates(0, 600);

		$db = \Joomla\CMS\Factory::getDbo();
		$query = $db->getQuery(true);
		$query->select('*');
		$query->from('#__updates')->where('element = \'' . $prefix . $name . '\'');
		$db->setQuery($query);

		if( $row = $db->loadObject() ) {
			$latest_version = $row->version;
		} else {
			die;
		}

		// return a message if there is an update
		if (VERSION_COMPARE($latest_version, $installed_version) > 0) {
			echo '<a target="_blank" href="'.$row->infourl.'"><span style="background-color: #d9534f;
    border-radius: 10px;
    color: #fff;
    display: inline-block;
    font-size: 12px;
    font-weight: 700;
    line-height: 1;
    min-width: 10px;
    padding: 3px 7px;
    text-align: center;
    vertical-align: baseline;
	text-shadow: none;
    white-space: nowrap;">Update found : ' . $latest_version . '. Click here to go on http://www.joomlack.fr to download the latest version.</span></a>';
		}

		die;
	}
	
	/**
	 * Create the css properties
	 * @param \Joomla\Registry\Registry $params
	 * @param string $prefix the xml field prefix
	 *
	 * @return Array
	 */
	static function createCss($ID, $params, $prefix = 'image', $important = false, $itemid = '') {
		$css = Array();
		$important = ($important == true ) ? ' !important' : '';
		$csspaddingtop = ($params->get($prefix . 'paddingtop') != '') ? 'padding-top: ' . self::testUnit($params->get($prefix . 'paddingtop', '0')) . $important . ';' : '';
		$csspaddingright = ($params->get($prefix . 'paddingright') != '') ? 'padding-right: ' . self::testUnit($params->get($prefix . 'paddingright', '0')) . $important . ';' : '';
		$csspaddingbottom = ($params->get($prefix . 'paddingbottom') != '') ? 'padding-bottom: ' . self::testUnit($params->get($prefix . 'paddingbottom', '0')) . $important . ';' : '';
		$csspaddingleft = ($params->get($prefix . 'paddingleft') != '') ? 'padding-left: ' . self::testUnit($params->get($prefix . 'paddingleft', '0')) . $important . ';' : '';
		$css['padding'] = $csspaddingtop . $csspaddingright . $csspaddingbottom . $csspaddingleft;
		$cssmargintop = ($params->get($prefix . 'margintop') != '') ? 'margin-top: ' . self::testUnit($params->get($prefix . 'margintop', '0')) . $important . ';' : '';
		$cssmarginright = ($params->get($prefix . 'marginright') != '') ? 'margin-right: ' . self::testUnit($params->get($prefix . 'marginright', '0')) . $important . ';' : '';
		$cssmarginbottom = ($params->get($prefix . 'marginbottom') != '') ? 'margin-bottom: ' . self::testUnit($params->get($prefix . 'marginbottom', '0')) . $important . ';' : '';
		$cssmarginleft = ($params->get($prefix . 'marginleft') != '') ? 'margin-left: ' . self::testUnit($params->get($prefix . 'marginleft', '0')) . $important . ';' : '';
		$css['margin'] = $cssmargintop . $cssmarginright . $cssmarginbottom . $cssmarginleft;
		$bgcolor1 = ($params->get($prefix . 'bgcolor1') && $params->get($prefix . 'bgopacity') !== null && $params->get($prefix . 'bgopacity') !== '') ? self::hex2RGB($params->get($prefix . 'bgcolor1'), $params->get($prefix . 'bgopacity')) : $params->get($prefix . 'bgcolor1');
		$css['background'] = ($params->get($prefix . 'bgcolor1')) ? 'background: ' . $bgcolor1 . $important . ';' : '';
		$css['background'] .= ($params->get($prefix . 'bgcolor1')) ? 'background-color: ' . $bgcolor1 . $important . ';' : '';
		$css['background'] .= ( $params->get($prefix . 'bgimage')) ? 'background-image: url("' . \Joomla\CMS\Uri\Uri::ROOT() . $params->get($prefix . 'bgimage') . '")' . $important . ';' : '';
		$css['background'] .= ( $params->get($prefix . 'bgimage')) ? 'background-repeat: ' . $params->get($prefix . 'bgimagerepeat') . $important . ';' : '';
		$css['background'] .= ( $params->get($prefix . 'bgimage')) ? 'background-position: ' . ($params->get($prefix . 'bgpositionx')) . ' ' . ($params->get($prefix . 'bgpositiony')) . $important . ';' : '';

		$bgcolor2 = ($params->get($prefix . 'bgcolor2') && $params->get($prefix . 'bgopacity') !== '') ? self::hex2RGB($params->get($prefix . 'bgcolor2'), $params->get($prefix . 'bgopacity')) : $params->get($prefix . 'bgcolor2');
		$css['gradient'] = ($css['background'] AND $params->get($prefix . 'bgcolor2')) ?
				"background: -moz-linear-gradient(top,  " . $bgcolor1 . " 0%, " . $bgcolor2 . " 100%)" . $important . ";"
				. "background: -webkit-gradient(linear, left top, left bottom, color-stop(0%," . $bgcolor1 . "), color-stop(100%," . $bgcolor2 . "))" . $important . "; "
				. "background: -webkit-linear-gradient(top,  " . $bgcolor1 . " 0%," . $bgcolor2 . " 100%)" . $important . ";"
				. "background: -o-linear-gradient(top,  " . $bgcolor1 . " 0%," . $bgcolor2 . " 100%)" . $important . ";"
				. "background: -ms-linear-gradient(top,  " . $bgcolor1 . " 0%," . $bgcolor2 . " 100%)" . $important . ";"
				. "background: linear-gradient(top,  " . $bgcolor1 . " 0%," . $bgcolor2 . " 100%)" . $important . "; " : '';
//                . "filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='" . $params->get($prefix . 'bgcolor1', '#f0f0f0') . "', endColorstr='" . $params->get($prefix . 'bgcolor2', '#e3e3e3') . "',GradientType=0 );" : '';
		$css['borderradius'] = ($params->get($prefix . 'roundedcornerstl', '') != '' || $params->get($prefix . 'roundedcornerstr', '') != '' || $params->get($prefix . 'roundedcornersbr', '') != '' || $params->get($prefix . 'roundedcornersbl', '') != '') ?
				'-moz-border-radius: ' . self::testUnit($params->get($prefix . 'roundedcornerstl', '0')) . ' ' . self::testUnit($params->get($prefix . 'roundedcornerstr', '0')) . ' ' . self::testUnit($params->get($prefix . 'roundedcornersbr', '0')) . ' ' . self::testUnit($params->get($prefix . 'roundedcornersbl', '0')) . $important . ';'
				. '-webkit-border-radius: ' . self::testUnit($params->get($prefix . 'roundedcornerstl', '0')) . ' ' . self::testUnit($params->get($prefix . 'roundedcornerstr', '0')) . ' ' . self::testUnit($params->get($prefix . 'roundedcornersbr', '0')) . ' ' . self::testUnit($params->get($prefix . 'roundedcornersbl', '0')) . $important . ';'
				. 'border-radius: ' . self::testUnit($params->get($prefix . 'roundedcornerstl', '0')) . ' ' . self::testUnit($params->get($prefix . 'roundedcornerstr', '0')) . ' ' . self::testUnit($params->get($prefix . 'roundedcornersbr', '0')) . ' ' . self::testUnit($params->get($prefix . 'roundedcornersbl', '0')) . $important . ';' : '';
		$shadowinset = $params->get($prefix . 'shadowinset', 0) ? 'inset ' : '';
		$css['shadow'] = ($params->get($prefix . 'shadowcolor') AND $params->get($prefix . 'shadowblur') != '') ?
				'-moz-box-shadow: ' . $shadowinset . self::testUnit($params->get($prefix . 'shadowoffsetx', '0')) . ' ' . self::testUnit($params->get($prefix . 'shadowoffsety', '0')) . ' ' . self::testUnit($params->get($prefix . 'shadowblur', '')) . ' ' . self::testUnit($params->get($prefix . 'shadowspread', '0')) . ' ' . $params->get($prefix . 'shadowcolor', '') . $important . ';'
				. '-webkit-box-shadow: ' . $shadowinset . self::testUnit($params->get($prefix . 'shadowoffsetx', '0')) . ' ' . self::testUnit($params->get($prefix . 'shadowoffsety', '0')) . ' ' . self::testUnit($params->get($prefix . 'shadowblur', '')) . ' ' . self::testUnit($params->get($prefix . 'shadowspread', '0')) . ' ' . $params->get($prefix . 'shadowcolor', '') . $important . ';'
				. 'box-shadow: ' . $shadowinset . self::testUnit($params->get($prefix . 'shadowoffsetx', '0')) . ' ' . self::testUnit($params->get($prefix . 'shadowoffsety', '0')) . ' ' . self::testUnit($params->get($prefix . 'shadowblur', '')) . ' ' . self::testUnit($params->get($prefix . 'shadowspread', '0')) . ' ' . $params->get($prefix . 'shadowcolor', '') . $important . ';' :
				(($params->get($prefix . 'useshadow') && $params->get($prefix . 'shadowblur') == '0') ? '-moz-box-shadow: none' . $important . ';'
						. '-webkit-box-shadow: none' . $important . ';'
						. 'box-shadow: none' . $important . ';' : '');
		$borderstyle = $params->get($prefix . 'borderstyle', 'solid') ? $params->get($prefix . 'borderstyle', 'solid') : 'solid';
		$css['border'] = (($params->get($prefix . 'bordertopwidth') == '0') ? 'border-top: none' . $important . ';' : (($params->get($prefix . 'bordertopwidth') != '' AND $params->get($prefix . 'bordercolor')) ? 'border-top: ' . $params->get($prefix . 'bordercolor', '') . ' ' . self::testUnit($params->get($prefix . 'bordertopwidth', '')) . ' ' . $borderstyle . ' ' . $important . ';' : '') )
				. (($params->get($prefix . 'borderrightwidth') == '0') ? 'border-right: none' . $important . ';' : (($params->get($prefix . 'borderrightwidth') != '' AND $params->get($prefix . 'bordercolor')) ? 'border-right: ' . $params->get($prefix . 'bordercolor', '') . ' ' . self::testUnit($params->get($prefix . 'borderrightwidth', '')) . ' ' . $borderstyle . ' ' . $important . ';' : '') )
				. (($params->get($prefix . 'borderbottomwidth') == '0') ? 'border-bottom: none' . $important . ';' : (($params->get($prefix . 'borderbottomwidth') != '' AND $params->get($prefix . 'bordercolor')) ? 'border-bottom: ' . $params->get($prefix . 'bordercolor', '') . ' ' . self::testUnit($params->get($prefix . 'borderbottomwidth', '')) . ' ' . $borderstyle . ' ' . $important . ';' : '') )
				. (($params->get($prefix . 'borderleftwidth') == '0') ? 'border-left: none' . $important . ';' : (($params->get($prefix . 'borderleftwidth') != '' AND $params->get($prefix . 'bordercolor')) ? 'border-left: ' . $params->get($prefix . 'bordercolor', '') . ' ' . self::testUnit($params->get($prefix . 'borderleftwidth', '')) . ' ' . $borderstyle . ' ' . $important . ';' : '') );
		$css['fontsize'] = ($params->get($prefix . 'fontsize') != '') ?
				'font-size: ' . self::testUnit($params->get($prefix . 'fontsize')) . $important . ';' : '';
		$css['fontcolor'] = ($params->get($prefix . 'fontcolor') != '') ?
				'color: ' . $params->get($prefix . 'fontcolor') . $important . ';' : '';
		$css['fontweight'] = ($params->get($prefix . 'fontweight')  == 'bold') ?
				'font-weight: ' . $params->get($prefix . 'fontweight') . $important . ';' : '';
		$textshadowoffsetx = ($params->get($prefix . 'textshadowoffsetx', '0') == '') ? '0px' : self::testUnit($params->get($prefix . 'textshadowoffsetx', '0'));
		$textshadowoffsety = ($params->get($prefix . 'textshadowoffsety', '0') == '') ? '0px' : self::testUnit($params->get($prefix . 'textshadowoffsety', '0'));
		$css['textshadow'] = ($params->get($prefix . 'textshadowcolor') AND $params->get($prefix . 'textshadowblur')) ?
				'text-shadow: ' . $textshadowoffsetx . ' ' . $textshadowoffsety . ' ' . self::testUnit($params->get($prefix . 'textshadowblur', '')) . ' ' . $params->get($prefix . 'textshadowcolor', '') . $important . ';' :
				(($params->get($prefix . 'textshadowblur') == '0') ? 'text-shadow: none' . $important . ';' : '');
		$css['text-align'] = $params->get($prefix . 'textalign') ? 'text-align: ' . $params->get($prefix . 'textalign') . $important . ';' : ''; '';
		$css['text-transform'] = ($params->get($prefix . 'texttransform') && $params->get($prefix . 'texttransform') != 'default') ? 'text-transform: ' . $params->get($prefix . 'texttransform') . $important . ';' : ''; '';

		return $css;
	}

	/**
	 * Test if there is already a unit, else add the px
	 *
	 * @param string $value
	 * @return string
	 */
	static function testUnit($value) {
		if ((stristr($value, 'px')) OR (stristr($value, 'em')) OR (stristr($value, '%')) OR (stristr($value, 'auto')) ) {
			return $value;
		}

		if ($value == '') {
			$value = 0;
		}

		return $value . 'px';
	}

	/**
	 * Convert a hexa decimal color code to its RGB equivalent
	 *
	 * @param string $hexStr (hexadecimal color value)
	 * @param boolean $returnAsString (if set true, returns the value separated by the separator character. Otherwise returns associative array)
	 * @param string $seperator (to separate RGB values. Applicable only if second parameter is true.)
	 * @return array or string (depending on second parameter. Returns False if invalid hex color value)
	 */
	static function hex2RGB($hexStr, $opacity) {
		if ($opacity > 1) $opacity = $opacity/100;
		$hexStr = preg_replace("/[^0-9A-Fa-f]/", '', $hexStr); // Gets a proper hex string
		$rgbArray = array();
		if (strlen($hexStr) == 6) { //If a proper hex code, convert using bitwise operation. No overhead... faster
			$colorVal = hexdec($hexStr);
			$rgbArray['red'] = 0xFF & ($colorVal >> 0x10);
			$rgbArray['green'] = 0xFF & ($colorVal >> 0x8);
			$rgbArray['blue'] = 0xFF & $colorVal;
		} elseif (strlen($hexStr) == 3) { //if shorthand notation, need some string manipulations
			$rgbArray['red'] = hexdec(str_repeat(substr($hexStr, 0, 1), 2));
			$rgbArray['green'] = hexdec(str_repeat(substr($hexStr, 1, 1), 2));
			$rgbArray['blue'] = hexdec(str_repeat(substr($hexStr, 2, 1), 2));
		} else {
			return false; //Invalid hex color code
		}
		$rgbacolor = "rgba(" . $rgbArray['red'] . "," . $rgbArray['green'] . "," . $rgbArray['blue'] . "," . $opacity . ")";

		return $rgbacolor;
	}
	
	/*
	 * Method to call the pro file if exists
	 */
	private static function callProFile() {
		if (file_exists(dirname(__FILE__) . '/pro/mediaboxck_pro.php')) {
			include_once (dirname(__FILE__) . '/pro/mediaboxck_pro.php');
			return true;
		} else {
			return false;
		}
	}

	public function onContentPrepare($context, &$item, &$params, $page = 0) {
		if ($context === 'com_finder.indexer') return '';
		if ($this->params->get('autoload', '0') !== '1') return '';

		// Replace anchor-tags
		$REGEX_ANCHOR = '#<a\s.*?>.*?</a>#is';
		$item->text = preg_replace_callback($REGEX_ANCHOR, array($this, "anchorReplacer"), $item->text);

		if ($this->params->get('autoload', '0') === '1') {
		// Replace img-tags
		$REGEX_IMG = '#<img.*?>#is';
		$item->text = preg_replace_callback($REGEX_IMG, array($this, "imageReplacer"), $item->text);
		}

		return '';
	}

	/**
	 * Replace anchor-tag
	 * 
	 * @param array $matches
	 * @return string
	 */
	public function anchorReplacer($matches)
	{   
		$anchorStr = is_array($matches) ? $matches[0] : $matches;
		// transform the image tag into list of attributes
		// $xml = simplexml_load_string($anchorStr);

		// if no image in the link, return the link
		if (strpos($anchorStr, '<img') === false) return $anchorStr;
		if (strpos($anchorStr, 'data-mediaboxck-haslink="1"') !== false) return $anchorStr;

		$html = str_replace('<img ', '<img data-mediaboxck-haslink="1" ', $anchorStr);

		return $html;
	}

	/**
	 * Replace img-tag
	 * 
	 * @param array $matches
	 * @return string
	 */
	public function imageReplacer($matches)
	{
		$imgStr = is_array($matches) ? $matches[0] : $matches;
		// return the image if the lightbox is already set
		if (strpos($imgStr, 'rel="lightbox"') !== false) return $imgStr;
		if (strpos($imgStr, 'data-mediaboxck-haslink="1"') !== false) return $imgStr;

		// fix html issue
		if (substr($imgStr, -2) !== '/>') {
			$imgStr = substr($imgStr, 0, -1) . '/>';
		}

		// transform the image tag into list of attributes
		$xml = @simplexml_load_string($imgStr);
		if ($xml === false) return $imgStr;

		$attribtype = $this->params->get('attribtype', 'className') === 'className' ? 'class' : 'rel';
		$attribname = $this->params->get('attribname', 'lightbox');
		$group = $this->params->get('autoload_group', '0');
		if ($group === '1') {
			$attribname = $attribname. '[mediaboxckautoload]';
		}
		$attrib = $attribtype . '="' . $attribname . '"';
		$src = false;
		$alt = false;
		$autoloadFilter = $this->params->get('autoload_filter', '0');
		$autoloadFilterClass = $this->params->get('autoload_filter_class', '');
		$addLightbox = true;
		$hasClass = false;
		foreach($xml->attributes() as $tag => $value) {
			$value = (string)$value;

			if ($tag === 'data-mediaboxck-haslink' && $value == '1') {
				// return the image if the lightbox is already set
				return $imgStr;
			}

			// only class
			if ($autoloadFilter === '1' && $tag === 'class' && $autoloadFilterClass) {
				if (strpos($value, $autoloadFilterClass) === false) $addLightbox = false;
			}
			// except class
			if ($autoloadFilter === '2' && $tag === 'class' && $autoloadFilterClass) {
				if (strpos($value, $autoloadFilterClass) !== false) return $imgStr;
			}

			if ($tag === 'src') {
				$src = $value;
			}
			if ($tag === 'class') {
				$hasClass = true;
			}
			if ($tag === 'alt') {
				$alt = $value;
			}
		}

		// if the image has no src tag
		if ($src === false) {
			return $imgStr;
		}

		if ($alt !== false && $alt) {
			$alt = ' title="' . $alt . '"';
		}

		// only class for images that has no class
		if ($autoloadFilter === '1' && $hasClass === false && $autoloadFilterClass) {
			return $imgStr;
		}

		$html = '<a ' . $attrib . $alt . ' href="' . $src . '">' . $imgStr . '</a>';

		return $addLightbox === true ? $html : $imgStr;
	}
}

Copyright © 2019 by b0y-101