File: /home/centralexf/www/plugins/system/jcemediabox.php
<?php
/**
* @version $Id: jcemediabox.php 992 2011-03-08 14:07:26Z happynoodleboy $
* @package JCE MediaBox
* @copyright Copyright (C) 2006-2010 Ryan Demmer. All rights reserved.
* @license http://www.gnu.org/copyleft/gpl.html GNU/GPL, see licence.txt
* This version may have been modified pursuant
* to the GNU General Public License, and as distributed it includes or
* is derivative of works licensed under the GNU General Public License or
* other free or open source software licenses.
*
* Light Theme inspired by Slimbox by Christophe Beyls
* @ http://www.digitalia.be
*
* Shadow Theme inspired by ShadowBox
* @ http://mjijackson.com/shadowbox/
*
* Squeeze theme inspired by Squeezebox by Harald Kirschner
* @ http://digitarald.de/project/squeezebox/
*
*/
defined('_JEXEC') or die('Restricted access');
jimport('joomla.plugin.plugin');
/**
* JCE MediaBox Plugin
*
* @package JCE MediaBox
* @subpackage System
*/
class plgSystemJCEMediabox extends JPlugin
{
private $version = '1.1.2';
/**
* Constructor
*/
function plgSystemJCEMediabox(&$subject, $config)
{
parent::__construct($subject, $config);
}
function getPath()
{
return JPATH_PLUGINS.DS.'system'.DS.'jcemediabox';
}
function getURL()
{
return JURI::base(true).'/plugins/system/jcemediabox';
}
/**
* Returns $version.
*
* @see plgSystemJCEMediabox::$version
*/
function getVersion()
{
return preg_replace('/[^\d]+/', '', $this->version);
}
/**
* Sets $version.
*
* @param object $version
* @see plgSystemJCEMediabox::$version
*/
function setVersion($version)
{
$this->version = $version;
}
/**
* Create JSON parameter object
* @param String $name Object name
* @param Array $params Parameter array
* @param Boolean $end If end parameters
* @return JSON Object String
*/
function renderParams($name, $params, $end)
{
$html = '';
if ($name) {
$html .= $name .":{";
}
$i = 0;
foreach ($params as $k => $v) {
// not objects or arrays or functions or numbers
if (!preg_match('/(\[[^\]*]\]|\{[^\}]*\}|function\([^\}]*\})/', $v)) {
if (!is_numeric($v)) {
$v = '"'.$v.'"';
}
}
if ($i < count($params) -1) {
$v .= ',';
}
if (preg_match('/\s+/', $k)) {
$html .= "'". $k ."':". $v;
} else {
$html .= $k .":". $v;
}
$i++;
}
if ($name) {
$html .= "}";
}
if (!$end) {
$html .= ",";
}
return $html;
}
/**
* Load theme css files
* @param object $vars Parameter variables
* @return Boolean true
*/
function getThemeCSS($vars)
{
jimport('joomla.environment.browser');
jimport('joomla.filesystem.file');
$document = JFactory::getDocument();
$theme = $vars['theme'] == 'custom' ? $vars['themecustom'] : $vars['theme'];
$version = $this->getVersion();
if ($version) {
$version = '?version=' . $version;
}
// Load template css file
if (JFile::exists(JPATH_ROOT .DS. $vars['themepath'] . '/' .$theme. '/css/style.css')) {
$document->addStyleSheet(JURI::base(true).'/' . $vars['themepath'] . '/' .$theme.'/css/style.css'.$version);
} else {
$document->addStyleSheet(JURI::base(true).'/' . $vars['themepath'] . '/standard/css/style.css'.$version);
}
// Load any ie6 variation
jimport('joomla.environment.browser');
$browser = &JBrowser::getInstance();
if ($browser->getBrowser() == 'msie' && intval($browser->getMajor()) < 8) {
if (JFile::exists(JPATH_ROOT .DS. $vars['themepath'] . '/' .$theme. '/css/style_ie6.css')) {
$document->addStyleSheet(JURI::base(true).'/' . $vars['themepath'] . '/' .$theme.'/css/style_ie6.css'.$version);
}
if (JFile::exists(JPATH_ROOT .DS. $vars['themepath'] . '/' .$theme. '/css/style_ie7.css')) {
$document->addStyleSheet(JURI::base(true).'/' . $vars['themepath'] . '/' .$theme.'/css/style_ie7.css'.$version);
}
}
if (preg_match('#(ipad|iphone)#i', $browser->getAgentString())) {
if (JFile::exists(JPATH_ROOT .DS. $vars['themepath'] . '/' .$theme. '/css/style_mobile.css')) {
$document->addStyleSheet(JURI::base(true).'/' . $vars['themepath'] . '/' .$theme.'/css/style_mobile.css'.$version);
}
}
return true;
}
/**
* Create a list of translated labels for popup window
* @return Key : Value labels string
*/
function getLabels()
{
JPlugin::loadLanguage('plg_system_jcemediabox', JPATH_ADMINISTRATOR);
$words = array('close', 'next', 'previous', 'cancel', 'numbers');
$i = 0;
$v = '';
foreach ($words as $word) {
$v .= "'".$word."':'". htmlspecialchars(JText::_('JCEMEDIABOX_'.strtoupper($word)))."'";
if ($i < count($words) -1) {
$v .= ',';
}
$i++;
}
return $v;
}
/**
* Load Addons
* @return Boolean true
*/
function getAddons()
{
jimport('joomla.filesystem.folder');
jimport('joomla.filesystem.file');
$document = JFactory::getDocument();
$path = $this->getPath().DS.'addons';
$filter = array('default-src.js');
if ($this->getVersion()) {
$filter[] = 'default.js';
}
$files = JFolder::files($path, '.js$', false, false, $filter);
$scripts = array();
if (is_array($files) && count($files)) {
foreach ($files as $file) {
$scripts[] = 'addons/'.$file;
}
}
return $scripts;
}
/**
* OnAfterRoute function
* @return Boolean true
*/
function onAfterDispatch()
{
$app = JFactory::getApplication();
if ($app->isAdmin()) {
return;
}
$document = JFactory::getDocument();
$docType = $document->getType();
// only in html pages
if ($docType != 'html') {
return;
}
// check for mediabox classes in content
/*$buffer = JResponse::getBody();
if (!preg_match('#<(a|area)([^>]+)class="([^"]+?)(jcepopup|jcebox|jcelightbox|jcetooltip|jce_tooltip)([^"]+?)"([^>]+)>#i', $buffer) || !preg_match('#<a([^>]+)rel="(lightbox|shadowbox)"([^>]+)>#i', $buffer)) {
return;
}*/
$dev = true;
$db = JFactory::getDBO();
// Causes issue in Safari??
$pop = JRequest::getVar('pop', 0, 'int');
$task = JRequest::getVar('task');
$tmpl = JRequest::getVar('tmpl');
if ($pop || ($task == 'new' || $task == 'edit') || $tmpl == 'component') {
return;
}
$params = $this->params;
$components = $params->get('components', '');
if ($components) {
$excluded = explode(',', $components);
$option = JRequest::getVar('option', '');
foreach ($excluded as $exclude) {
if ($option == 'com_'. $exclude || $option == $exclude) {
return;
}
}
}
$theme = $params->get('theme', 'standard');
if ($params->get('dynamic_themes', 0)) {
$theme = JRequest::getWord('theme', $params->get('theme', 'standard'));
}
$popup = array(
'width' => $params->get('width', ''),
'height' => $params->get('height', ''),
'legacy' => $params->get('legacy', 0),
'lightbox' => $params->get('lightbox', 0),
'shadowbox' => $params->get('shadowbox', 0),
//'convert' => $params->get('convert', 0),
'resize' => $params->get('resize', 0),
'icons' => $params->get('icons', 1),
'overlay' => $params->get('overlay', 1),
'overlayopacity' => $params->get('overlayopacity', 0.8),
'overlaycolor' => $params->get('overlaycolor', '#000000'),
'fadespeed' => $params->get('fadespeed', 500),
'scalespeed' => $params->get('scalespeed', 500),
'hideobjects' => $params->get('hideobjects', 1),
'scrolling' => $params->get('scrolling', 'fixed'),
//'protect' => $params->get('protect', 1),
'close' => $params->get('close', 2),
'labels' => '{'.$this->getLabels().'}'
);
$tooltip = array(
'className' => $params->get('tipclass', 'tooltip'),
'opacity' => $params->get('tipopacity', 0.8),
'speed' => $params->get('tipspeed', 200),
'position' => $params->get('tipposition', 'br'),
'offsets' => "{x: ". $params->get('tipoffsets_x', 16) .", y: ". $params->get('tipoffsets_y', 16) ."}",
);
$standard = array(
'base' => JURI::base(true) . '/',
'imgpath' => $params->get('imgpath', 'plugins/system/jcemediabox/img'),
'theme' => $theme,
'themecustom' => $params->get('themecustom', ''),
'themepath' => $params->get('themepath', 'plugins/system/jcemediabox/themes')
);
$media_versions = array(
'flash' => $params->get('flash', '10,0,22,87'),
'windowmedia' => $params->get('windowmedia', '5,1,52,701'),
'quicktime' => $params->get('quicktime', '6,0,2,0'),
'realmedia' => $params->get('realmedia', '7,0,0,0'),
'shockwave' => $params->get('shockwave', '8,5,1,0')
);
jimport('joomla.environment.browser');
jimport('joomla.filesystem.file');
// Mediaobject plugin loaded?
$mediaobject = JPluginHelper::isEnabled('system', 'mediaobject');
$version = $this->getVersion();
$scripts = $this->getScripts();
if ($version) {
$version = '?version=' . $version;
}
$url = $this->getURL();
foreach ($scripts as $script) {
$document->addScript($url.'/'.$script.$version);
}
$document->addStyleSheet($url.'/css/jcemediabox.css'.$version);
// Load any ie6 variation
jimport('joomla.environment.browser');
$browser = &JBrowser::getInstance();
if ($browser->getBrowser() == 'msie' && intval($browser->getMajor()) < 7) {
if (JFile::exists(dirname(__FILE__).DS.'jcemediabox'.DS.'css'.DS.'jcemediabox_ie6.css')) {
$document->addStyleSheet($url.'/css/jcemediabox_ie6.css'.$version);
}
}
$this->getThemeCss($standard);
$html = "";
if (!$mediaobject) {
$html .= "JCEMediaObject.init('".JURI::base(true)."/', {";
$html .= $this->renderParams('', $media_versions, true);
$html .= "});";
}
$html .= 'JCEMediaBox.init({';
$html .= $this->renderParams('popup', $popup, false);
$html .= $this->renderParams('tooltip', $tooltip, false);
$html .= $this->renderParams('', $standard, true);
$html .= "});";
$document->addScriptDeclaration($html);
return true;
}
function getScripts()
{
$scripts = array('js/jcemediabox.js');
// only for development
if (!$this->getVersion() && is_file($this->getPath() . DS . 'js' . DS . 'mediaobject.js')) {
$scripts[] = 'js/mediaobject.js';
}
$scripts = array_merge($scripts, $this->getAddons());
return $scripts;
}
}
?>