File Manager

Current Directory: /home/astoriaah/www/old15/plugins/content/jw_allvideos
Viewing File: /home/astoriaah/www/old15/plugins/content/jw_allvideos/jw_allvideos.php
<?php /** * @version 4.6.1 * @package AllVideos (plugin) * @author JoomlaWorks - http://www.joomlaworks.net * @copyright Copyright (c) 2006 - 2014 JoomlaWorks Ltd. All rights reserved. * @license GNU/GPL license: http://www.gnu.org/copyleft/gpl.html */ // no direct access defined('_JEXEC') or die('Restricted access'); jimport('joomla.plugin.plugin'); if (version_compare(JVERSION, '1.6.0', 'ge')) { jimport('joomla.html.parameter'); } class plgContentJw_allvideos extends JPlugin { // JoomlaWorks reference parameters var $plg_name = "jw_allvideos"; var $plg_copyrights_start = "\n\n<!-- JoomlaWorks \"AllVideos\" Plugin (v4.6.1) starts here -->\n"; var $plg_copyrights_end = "\n<!-- JoomlaWorks \"AllVideos\" Plugin (v4.6.1) ends here -->\n\n"; function plgContentJw_allvideos( &$subject, $params ) { parent::__construct( $subject, $params ); // Define the DS constant under Joomla! 3.0+ if (!defined('DS')) { define('DS', DIRECTORY_SEPARATOR); } } // Joomla! 1.5 function onPrepareContent(&$row, &$params, $page = 0){ $this->renderAllVideos($row, $params, $page = 0); } // Joomla! 2.5+ function onContentPrepare($context, &$row, &$params, $page = 0){ $this->renderAllVideos($row, $params, $page = 0); } // The main function function renderAllVideos(&$row, &$params, $page = 0) { // API jimport('joomla.filesystem.file'); $mainframe = JFactory::getApplication(); $document = JFactory::getDocument(); // Assign paths $sitePath = JPATH_SITE; $siteUrl = JURI::root(true); if (version_compare(JVERSION, '1.6.0', 'ge')) { $pluginLivePath = $siteUrl.'/plugins/content/'.$this->plg_name.'/'.$this->plg_name; } else { $pluginLivePath = $siteUrl.'/plugins/content/'.$this->plg_name; } // Check if plugin is enabled if (JPluginHelper::isEnabled('content',$this->plg_name)==false) return; // Load the plugin language file the proper way JPlugin::loadLanguage('plg_content_'.$this->plg_name, JPATH_ADMINISTRATOR); // Includes require_once(dirname(__FILE__).DS.$this->plg_name.DS.'includes'.DS.'helper.php'); require(dirname(__FILE__).DS.$this->plg_name.DS.'includes'.DS.'sources.php'); // Simple performance check to determine whether plugin should process further $grabTags = strtolower(implode(array_keys($tagReplace),"|")); if (preg_match("#{(".$grabTags.")}#is", $row->text)==false) return; // ----------------------------------- Get plugin parameters ----------------------------------- // Get plugin info $plugin = JPluginHelper::getPlugin('content', $this->plg_name); // Control external parameters and set variable for controlling plugin layout within modules if (!$params) { $params = class_exists('JParameter') ? new JParameter(null) : new JRegistry(null); } $parsedInModule = $params->get('parsedInModule'); $pluginParams = class_exists('JParameter') ? new JParameter($plugin->params) : new JRegistry($plugin->params); /* Video Parameters */ $playerTemplate = ($params->get('playerTemplate')) ? $params->get('playerTemplate') : $pluginParams->get('playerTemplate','Classic'); $vfolder = ($params->get('vfolder')) ? $params->get('vfolder') : $pluginParams->get('vfolder','images/stories/videos'); $vwidth = ($params->get('vwidth')) ? $params->get('vwidth') : $pluginParams->get('vwidth',400); $vheight = ($params->get('vheight')) ? $params->get('vheight') : $pluginParams->get('vheight',300); $transparency = $pluginParams->get('transparency','transparent'); $background = $pluginParams->get('background','#010101'); $backgroundQT = $pluginParams->get('backgroundQT','black'); $controls = $pluginParams->get('controls',1); /* Audio Parameters */ $afolder = $pluginParams->get('afolder','images/stories/audio'); $awidth = ($params->get('awidth')) ? $params->get('awidth') : $pluginParams->get('awidth',480); $aheight = ($params->get('aheight')) ? $params->get('aheight') : $pluginParams->get('aheight',24); $abackground = $pluginParams->get('abackground','#010101'); $afrontcolor = $pluginParams->get('afrontcolor','#FFFFFF'); $alightcolor = $pluginParams->get('alightcolor','#00ADE3'); $allowAudioDownloading = $pluginParams->get('allowAudioDownloading',0); /* Global Parameters */ $autoplay = ($params->get('autoplay')) ? $params->get('autoplay') : $pluginParams->get('autoplay',0); /* Performance Parameters */ $gzipScripts = $pluginParams->get('gzipScripts',0); /* Advanced */ $jwPlayerLoading = $pluginParams->get('jwPlayerLoading','local'); // local | cdn $jwPlayerAPIKey = $pluginParams->get('jwPlayerAPIKey','plXkZcoHeQXVlRo0nD6AUscwEXmFJCmIpGL3kw=='); $jwPlayerCDNUrl = $pluginParams->get('jwPlayerCDNUrl','http://jwpsrv.com/library/n9Po9gncEeOKaBIxOUCPzg.js'); // Variable cleanups for K2 if (JRequest::getCmd('format')=='raw') { $this->plg_copyrights_start = ''; $this->plg_copyrights_end = ''; } // Assign the AllVideos helper class $AllVideosHelper = new AllVideosHelper; // ----------------------------------- Render the output ----------------------------------- // Append head includes only when the document is in HTML mode if (JRequest::getCmd('format')=='html' || JRequest::getCmd('format')=='') { // CSS $avCSS = $AllVideosHelper->getTemplatePath($this->plg_name,'css/template.css',$playerTemplate); $avCSS = $avCSS->http; $document->addStyleSheet($avCSS); // JS if (version_compare(JVERSION,'1.6.0','ge')) { JHtml::_('behavior.framework'); } else { JHTML::_('behavior.mootools'); } if ($gzipScripts) { $document->addScript($pluginLivePath.'/includes/js/jwp.js.php?v=4.6.1'); } else { $document->addScript($pluginLivePath.'/includes/js/behaviour.js?v=4.6.1'); $document->addScript($pluginLivePath.'/includes/js/wmvplayer/silverlight.js?v=4.6.1'); $document->addScript($pluginLivePath.'/includes/js/wmvplayer/wmvplayer.js?v=4.6.1'); $document->addScript($pluginLivePath.'/includes/js/quicktimeplayer/AC_QuickTime.js?v=4.6.1'); } if($jwPlayerLoading=='local'){ $document->addScript($pluginLivePath.'/includes/js/jwplayer/jwplayer.js?v=4.6.1'); $document->addScriptDeclaration(' /* JW Player API Key */ jwplayer.key="'.$jwPlayerAPIKey.'"; '); } else { $document->addScript($jwPlayerCDNUrl); } } // Loop throught the found tags $tagReplace = array_change_key_case($tagReplace, CASE_LOWER); foreach ($tagReplace as $plg_tag => $value) { $cloned_plg_tag = $plg_tag; $plg_tag = strtolower($plg_tag); // expression to search for $regex = "#{".$plg_tag."}.*?{/".$plg_tag."}#is"; // process tags if (preg_match_all($regex, $row->text, $matches, PREG_PATTERN_ORDER)) { // start the replace loop foreach ($matches[0] as $key => $match) { $tagcontent = preg_replace("/{.+?}/", "", $match); $tagparams = explode('|',$tagcontent); $tagsource = trim(strip_tags($tagparams[0])); // Prepare the HTML $output = new JObject; // Width/height/source folder split per media type if (in_array($plg_tag, array( 'mp3', 'mp3remote', 'aac', 'aacremote', 'm4a', 'm4aremote', 'ogg', 'oggremote', 'wma', 'wmaremote', 'soundcloud' ))) { $final_awidth = (@$tagparams[1]) ? $tagparams[1] : $awidth; $final_aheight = (@$tagparams[2]) ? $tagparams[2] : $aheight; $output->playerWidth = $final_awidth; $output->playerHeight = $final_aheight; $output->folder = $afolder; if ($plg_tag=='soundcloud') { if (strpos($tagsource,'/sets/')!==false) { $output->mediaTypeClass = ' avSoundCloudSet'; } else { $output->mediaTypeClass = ' avSoundCloudSong'; } $output->mediaType = ''; } else { $output->mediaTypeClass = ' avAudio'; $output->mediaType = 'audio'; } if (in_array($plg_tag, array('mp3','aac','m4a','ogg','wma'))) { $output->source = "$siteUrl/$afolder/$tagsource.$plg_tag"; } elseif (in_array($plg_tag, array('mp3remote','aacremote','m4aremote','oggremote','wmaremote'))) { $output->source = $tagsource; } else { $output->source = ''; } } else { $final_vwidth = (@$tagparams[1]) ? $tagparams[1] : $vwidth; $final_vheight = (@$tagparams[2]) ? $tagparams[2] : $vheight; $output->playerWidth = $final_vwidth; $output->playerHeight = $final_vheight; $output->folder = $vfolder; $output->mediaType = 'video'; $output->mediaTypeClass = ' avVideo'; } // Autoplay $final_autoplay = (@$tagparams[3]) ? $tagparams[3] : $autoplay; $final_autoplay = ($final_autoplay) ? 'true' : 'false'; // Special treatment for specific video providers if ($plg_tag=="dailymotion") { $tagsource = preg_replace("~(http|https):(.+?)dailymotion.com\/video\/~s","",$tagsource); $tagsourceDailymotion = explode('_',$tagsource); $tagsource = $tagsourceDailymotion[0]; if ($final_autoplay=='true') { if (strpos($tagsource,'?')!==false) { $tagsource = $tagsource.'&amp;autoPlay=1'; } else { $tagsource = $tagsource.'?autoPlay=1'; } } } if ($plg_tag=="ku6") { $tagsource = str_replace('.html','',$tagsource); } if ($plg_tag=="metacafe" && substr($tagsource,-1,1)=='/') { $tagsource = substr($tagsource,0,-1); } if ($plg_tag=="sevenload") { $tagsource = parse_url($tagsource); $tagsource = explode('-',$tagsource['query']); $tagsource = array_reverse($tagsource); $tagsource = $tagsource[0]; } if ($plg_tag=="sohu") { $tagsource = parse_url($tagsource); $tagsource = explode('/',$tagsource['query']); $tagsource = array_reverse($tagsource); $tagsource = str_replace('.shtml','',$tagsource[0]); } if ($plg_tag=="tnaondemand") { $tagsource = parse_url($tagsource); $tagsource = explode('&',$tagsource['query']); $tagsource = str_replace('vidid=','',$tagsource[0]); } if ($plg_tag=="twitvid") { $tagsource = preg_replace("~(http|https):(.+?)twitvid.com\/~s","",$tagsource); if ($final_autoplay=='true') { $tagsource = $tagsource.'&amp;autoplay=1'; } } if ($plg_tag=="vidiac") { $tagsourceVidiac = explode(';',$tagsource); $tagsource = $tagsourceVidiac[0]; } if ($plg_tag=="vimeo") { $tagsource = preg_replace("~(http|https):(.+?)vimeo.com\/~s","",$tagsource); if (strpos($tagsource,'?')!==false) { $tagsource = $tagsource.'&amp;portrait=0'; } else { $tagsource = $tagsource.'?portrait=0'; } if ($final_autoplay=='true') { $tagsource = $tagsource.'&amp;autoplay=1'; } } if ($plg_tag=="yahoo") { $tagsourceYahoo = explode('-',str_replace('.html','',$tagsource)); $tagsourceYahoo = array_reverse($tagsourceYahoo); $tagsource = $tagsourceYahoo[0]; } if ($plg_tag=="yfrog") { $tagsource = preg_replace("~(http|https):(.+?)yfrog.com\/~s","",$tagsource); } if ($plg_tag=="youmaker") { $tagsourceYoumaker = explode('-',str_replace('.html','',$tagsource)); $tagsource = $tagsourceYoumaker[1]; } if ($plg_tag=="youku") { $tagsource = str_replace('.html','',$tagsource); $tagsource = substr($tagsource,3); } if ($plg_tag=="youtube") { if (strpos($tagsource,'youtube.com')!==false) { $tagsource = preg_replace("~(http|https):(.+?)youtube.com\/watch\?~s","",$tagsource); } if (strpos($tagsource,'youtu.be')!==false) { $tagsource = preg_replace("~(http|https):(.+?)youtu.be\/~s","",$tagsource); } if (strpos($tagsource,'&')!==false) { $tagsourceYoutube = explode('&',$tagsource); foreach($tagsourceYoutube as $ytVideoParam) { if (preg_match("~v=~s", $ytVideoParam)) { $tagsource = str_replace("v=", "", $ytVideoParam); } } } else { if (strpos($tagsource,'=')!==false) { $tagsourceYoutube = explode('=',$tagsource); $tagsource = $tagsourceYoutube[1]; } } $tagsource = $tagsource.'?rel=0&amp;fs=1&amp;wmode=transparent'; if ($final_autoplay=='true') { $tagsource = $tagsource.'&amp;autoplay=1'; } } // Poster frame $posterFramePath = $sitePath.DS.str_replace('/',DS,$vfolder); if (JFile::exists($posterFramePath.DS.$tagsource.'.jpg')) { $output->posterFrame = $siteUrl.'/'.$vfolder.'/'.$tagsource.'.jpg'; } elseif (JFile::exists($posterFramePath.DS.$tagsource.'.png')) { $output->posterFrame = $siteUrl.'/'.$vfolder.'/'.$tagsource.'.png'; } elseif (JFile::exists($posterFramePath.DS.$tagsource.'.gif')) { $output->posterFrame = $siteUrl.'/'.$vfolder.'/'.$tagsource.'.gif'; } else { $output->posterFrame = ''; } // Poster frame (remote) $output->posterFrameRemote = substr($tagsource,0,-3).'jpg'; // Set a unique ID $output->playerID = 'AVPlayerID_'.substr(md5($tagsource),1,8).'_'.rand(); // Placeholder elements $findAVparams = array( "{SOURCE}", "{SOURCEID}", "{FOLDER}", "{WIDTH}", "{HEIGHT}", "{PLAYER_AUTOPLAY}", "{PLAYER_TRANSPARENCY}", "{PLAYER_BACKGROUND}", "{PLAYER_BACKGROUNDQT}", "{JWPLAYER_CONTROLS}", "{SITEURL}", "{SITEURL_ABS}", "{FILE_EXT}", "{PLUGIN_PATH}", "{PLAYER_POSTER_FRAME}", "{PLAYER_POSTER_FRAME_REMOTE}", "{PLAYER_ABACKGROUND}", "{PLAYER_AFRONTCOLOR}", "{PLAYER_ALIGHTCOLOR}" ); // Replacement elements $replaceAVparams = array( $tagsource, $output->playerID, $output->folder, $output->playerWidth, $output->playerHeight, $final_autoplay, $transparency, $background, $backgroundQT, $controls, $siteUrl, substr(JURI::root(false),0,-1), $plg_tag, $pluginLivePath, $output->posterFrame, $output->posterFrameRemote, $abackground, $afrontcolor, $alightcolor ); // Do the element replace $output->player = JFilterOutput::ampReplace(str_replace($findAVparams, $replaceAVparams, $tagReplace[$cloned_plg_tag])); // Fetch the template ob_start(); $getTemplatePath = $AllVideosHelper->getTemplatePath($this->plg_name,'default.php',$playerTemplate); $getTemplatePath = $getTemplatePath->file; include($getTemplatePath); $getTemplate = $this->plg_copyrights_start.ob_get_contents().$this->plg_copyrights_end; ob_end_clean(); // Output $row->text = preg_replace("#{".$plg_tag."}".preg_quote($tagcontent)."{/".$plg_tag."}#is", $getTemplate , $row->text); } // End second foreach } // End if } // End first foreach } // End function } // End class