%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /home1/lightco1/www/ilfanale.com.au/templates/jsn_mobilize/helpers/
Upload File :
Create Path :
Current File : //home1/lightco1/www/ilfanale.com.au/templates/jsn_mobilize/helpers/mobilize.php

<?php

/**
 * @version     $Id: mobilize.php 19770 2012-12-28 08:26:19Z thailv $
 * @package     JSN_Mobilize
 * @subpackage  Template
 * @author      JoomlaShine Team <support@joomlashine.com>
 * @copyright   Copyright (C) 2012 JoomlaShine.com. All Rights Reserved.
 * @license     GNU/GPL v2 or later http://www.gnu.org/licenses/gpl-2.0.html
 *
 * Websites: http://www.joomlashine.com
 * Technical Support:  Feedback - http://www.joomlashine.com/contact-us/get-support.html
 */
// No direct access to this file
defined( '_JEXEC' ) or die( 'Restricted access' );

// Import Joomla module helper library
jimport( 'joomla.application.module.helper' );

/**
 * Helper class for rendering module instance.
 *
 * @package     JSN_Mobilize
 * @subpackage  Template
 * @since       1.0.0
 */
class JSNMobilizeTemplateHelper {

	/**
	 * Device specific parameters.
	 *
	 * @var  array
	 */
	protected static $config;

	/**
	 * Get configuration for device in use.
	 *
	 * @param   array    $device   Device in use: mobile or tablet?
	 * @param   boolean  $preview  Get config from cookie for backend previewing?
	 *
	 * @return  JObject
	 */
	public static function getConfig( $device = '', $preview = false ) {
		// Initialize client device type
		! empty( $device ) OR $device = JFactory::getApplication()->input->getCmd( '_device' );
		if ( ! isset( self::$config ) OR ! isset( self::$config[ $device ] ) ) {
			// Get JSN Mobilize configuration

			if ( $preview ) {
				$db = JFactory::getDbo();
				$query = $db->getQuery( true );
				$query->select( '*' )->from( '#__jsn_mobilize_config' )->where( "name = 'tmp_config'" );
				$db->setQuery( $query, 0, 1 );
				$tmpConfig = $db->loadObject();
				if ( ! empty( $tmpConfig->value ) ) {
					$config = json_decode( $tmpConfig->value );
				}
			}
			else {
				$detect = new JSN_Mobile_Detect;
				$checkIOS = '';
				if ( $detect->isiOS() ) {
					if ( $detect->isTablet() ) {
						$version = $detect->version( 'iPad' );
					}
					else {
						$version = $detect->version( 'iPhone' );
					}
					$config = JSNMobilizeTemplateHelper::getOSSupport( 'ios', $version, $device );
				}
				elseif ( $detect->isAndroidOS() ) {
					$version = $detect->version( 'Android' );
					$config = JSNMobilizeTemplateHelper::getOSSupport( 'android', $version, $device );
				}
				elseif ( $detect->isWindowsPhoneOS() ) {
					$version = $detect->version( 'Windows Phone OS' );
					$config = JSNMobilizeTemplateHelper::getOSSupport( 'wmobilie', $version, $device );
				}
				elseif ( $detect->isBlackBerryOS() ) {
					$version = $detect->version( 'BlackBerry' );
					$config = JSNMobilizeTemplateHelper::getOSSupport( 'blackberry', $version, $device );
				}
				else {
					$config = JSNMobilizeTemplateHelper::getOSSupport( 'other', '', $device );
				}
				if ( $config === false ) {
					$config = JSNMobilizeTemplateHelper::getOSSupport( 'other', '', $device );
				}
			}
			if ( ! empty( $config ) ) {
				foreach ( get_object_vars( $config ) AS $k => $v ) {
					isset( $tmp ) OR $tmp = new JObject;

					if ( strpos( $k, "{$device}-" ) === 0 ) {
						// Shorten parameter name
						$k = substr( $k, strlen( "{$device}-" ) );

						// Set new parameter with cleaned name
						$tmp->set( $k, is_object( $v ) ? ( (array)$v ) : $v );
					}
					elseif ( ! preg_match( '/^(mobilize)-/', $k ) ) {
						// Store shared parameter also
						$tmp->set( $k, is_object( $v ) ? ( (array)$v ) : $v );
					}
				}
			}
			// Store device specific parameters
			if ( ! empty( $tmp ) ) {
				self::$config[ $device ] = $tmp;
			}
			// Get device specific parameters

		}
		return self::$config[ $device ];
	}

	/**
	 * Render a content block.
	 *
	 * @param   array    $param   Content block parameters.
	 * @param   boolean  $return  Return rendered content or echo immediately.
	 *
	 * @return  string
	 */
	public static function renderBlock( $param, $return = false ) {
		// Preset return value
		$html = array();

		if ( is_array( $param ) AND count( $param ) ) {
			foreach ( $param AS $k => $v ) {
				if ( $v == 'position' AND JFactory::getDocument()->countModules( $k ) ) {
					$html[ ] = '<jdoc:include type="modules" style="jsnmodule" class="jsn-roundedbox" name="' . $k . '" />';
				}
				elseif ( $v == 'module' AND ( $tmp = self::renderModule( $k, array( 'style' => 'jsnmodule' ), false, true ) ) != '' ) {
					$html[ ] = $tmp;
				}
			}
		}
		// Finalize return value
		$html = count( $html ) > 0 ? implode( "\n", $html ) : '';
		if ( $return ) {
			return $html;
		}
		echo $html;
	}

	/**
	 * Render menu instance(s) by ID.
	 *
	 * @param   mixed  $id  Menu instance ID or array of Menu instance ID to be rendered.
	 *
	 * @return  string
	 */
	public static function renderMenu( $id ) {
		$app = JFactory::getApplication();
		$menu = $app->getMenu();
		$active = $menu->getActive();
		$active_id = isset( $active ) ? $active->id : $menu->getDefault()->id;
		$path = isset( $active ) ? $active->tree : array();
		$db = JFactory::getDbo();
		$query = $db->getQuery( true )->select( 'menutype' )->from( '#__menu_types' )->where( 'id = ' . $db->Quote( $id ) );
		$db->setQuery( $query );
		$menuType = $db->loadResult();
		$items = $menu->getItems( 'menutype', $menuType );
		$lastitem = 0;
		$start = 1;
		$end = 0;
		$showAll = 1;
		if ( $items ) {
			foreach ( $items as $i => $item ) {
				if ( ( $start && $start > $item->level ) || ( $end && $item->level > $end ) || ( ! $showAll && $item->level > 1 && ! in_array( $item->parent_id, $path ) ) || ( $start > 1 && ! in_array( $item->tree[ $start - 2 ], $path ) ) ) {
					unset( $items[ $i ] );
					continue;
				}

				$item->deeper = false;
				$item->shallower = false;
				$item->level_diff = 0;

				if ( isset( $items[ $lastitem ] ) ) {
					$items[ $lastitem ]->deeper = ( $item->level > $items[ $lastitem ]->level );
					$items[ $lastitem ]->shallower = ( $item->level < $items[ $lastitem ]->level );
					$items[ $lastitem ]->level_diff = ( $items[ $lastitem ]->level - $item->level );
				}

				$item->parent = (boolean)$menu->getItems( 'parent_id', (int)$item->id, true );

				$lastitem = $i;
				$item->active = false;
				$item->flink = $item->link;

				// Reverted back for CMS version 2.5.6
				switch ( $item->type ) {
					case 'separator':
						// No further action needed.
						continue;
					case 'url':
						if ( ( strpos( $item->link, 'index.php?' ) === 0 ) && ( strpos( $item->link, 'Itemid=' ) === false ) ) {
							// If this is an internal Joomla link, ensure the Itemid is set.
							$item->flink = $item->link . '&Itemid=' . $item->id;
						}
						break;

					case 'alias':
						// If this is an alias use the item id stored in the parameters to make the link.
						$item->flink = 'index.php?Itemid=' . $item->params->get( 'aliasoptions' );
						break;

					default:
						$router = JSite::getRouter();
						if ( $router->getMode() == JROUTER_MODE_SEF ) {
							$item->flink = 'index.php?Itemid=' . $item->id;
						}
						else {
							$item->flink .= '&Itemid=' . $item->id;
						}
						break;
				}

				if ( strcasecmp( substr( $item->flink, 0, 4 ), 'http' ) && ( strpos( $item->flink, 'index.php?' ) !== false ) ) {
					$item->flink = JRoute::_( $item->flink, true, $item->params->get( 'secure' ) );
				}
				else {
					$item->flink = JRoute::_( $item->flink );
				}

				$item->title = htmlspecialchars( $item->title, ENT_COMPAT, 'UTF-8', false );
				$item->anchor_css = htmlspecialchars( $item->params->get( 'menu-anchor_css', '' ), ENT_COMPAT, 'UTF-8', false );
				$item->anchor_title = htmlspecialchars( $item->params->get( 'menu-anchor_title', '' ), ENT_COMPAT, 'UTF-8', false );
				$item->menu_image = $item->params->get( 'menu_image', '' ) ? htmlspecialchars( $item->params->get( 'menu_image', '' ), ENT_COMPAT, 'UTF-8', false ) : '';
			}

			if ( isset( $items[ $lastitem ] ) ) {
				$items[ $lastitem ]->deeper = ( ( $start ? $start : 1 ) > $items[ $lastitem ]->level );
				$items[ $lastitem ]->shallower = ( ( $start ? $start : 1 ) < $items[ $lastitem ]->level );
				$items[ $lastitem ]->level_diff = ( $items[ $lastitem ]->level - ( $start ? $start : 1 ) );
			}
		}
		echo "<ul class=\"menu jsn-menu jsn-menu-mobile jsn-toggle menu-stickymenu\">";
		foreach ( $items as $i => &$item ) {
			$class = 'item-' . $item->id;
			if ( $item->id == $active_id ) {
				$class .= ' current';
			}

			if ( in_array( $item->id, $path ) ) {
				$class .= ' active';
			}
			elseif ( $item->type == 'alias' ) {
				$aliasToId = $item->params->get( 'aliasoptions' );
				if ( count( $path ) > 0 && $aliasToId == $path[ count( $path ) - 1 ] ) {
					$class .= ' active';
				}
				elseif ( in_array( $aliasToId, $path ) ) {
					$class .= ' alias-parent-active';
				}
			}

			if ( ! empty( $item->deeper ) ) {
				$class .= ' deeper';
			}

			if ( ! empty( $item->parent ) ) {
				$class .= ' parent';
			}

			if ( ! empty( $class ) ) {
				$class = ' class="' . trim( $class ) . '"';
			}

			echo '<li' . $class . '>';

			// Render the menu item.

			// Note. It is important to remove spaces between elements.
			$class = ! empty( $item->anchor_css ) ? 'class="' . $item->anchor_css . '" ' : '';
			$title = ! empty( $item->anchor_title ) ? 'title="' . $item->anchor_title . '" ' : '';
			if ( ! empty( $item->menu_image ) ) {
				$item->params->get( 'menu_text', 1 ) ? $linktype = '<img src="' . $item->menu_image . '" alt="' . $item->title . '" /><span class="image-title">' . $item->title . '</span> ' : $linktype = '<img src="' . $item->menu_image . '" alt="' . $item->title . '" />';
			}
			else {
				$linktype = $item->title;
			}
			$flink = ! empty( $item->flink ) ? $item->flink : "";
			$flink = JFilterOutput::ampReplace( htmlspecialchars( $flink ) );

			switch ( $item->browserNav ) :
				default:
				case 0:
					?>
				<a <?php echo $class; ?>href="<?php echo $flink; ?>" <?php echo $title; ?>><?php echo $linktype; ?></a><?php
					break;
				case 1:
					// _blank
					?>
				<a <?php echo $class; ?>href="<?php echo $flink; ?>" target="_blank" <?php echo $title; ?>><?php echo $linktype; ?></a><?php
					break;
			endswitch;
			// The next item is deeper.
			if ( ! empty( $item->deeper ) ) {
				echo '<ul>';
			}
			// The next item is shallower.
			elseif ( ! empty( $item->shallower ) ) {
				echo '</li>';
				echo str_repeat( '</ul></li>', $item->level_diff );
			}
			// The next item is on the same level.
			else {
				echo '</li>';
			}
		}
		echo "</ul>";
	}

	/**
	 * Render module instance(s) by ID.
	 *
	 * @param   mixed    $id          Module instance ID or array of Module instance ID to be rendered.
	 * @param   array    $attributes  Module chrome attributes.
	 * @param   boolean  $hideTitle   Set to true to always hide module title regardless of module instance settings.
	 * @param   boolean  $return      Return rendered content or echo immediately.
	 *
	 * @return  string
	 */
	public static function renderModule( $id, $attributes = array(), $hideTitle = false, $return = false ) {
		// Preset return value
		$html = '';

		// Get database object
		$db = JFactory::getDbo();
		$app = JFactory::getApplication();
		$Itemid = $app->input->getInt( 'Itemid' );
		// Load Access User group view level
        $user = JFactory::getUser();
        $groups = implode(',', $user->getAuthorisedViewLevels());
		// Build query to load module data
		$query = $db->getQuery( true );
		$query->select( 'm.*' );
		$query->from( '#__modules AS m' );
		$query->where( 'id = ' . (int)$id );
		$query->where('m.access IN (' . $groups . ')');
		$query->join( 'LEFT', '#__modules_menu AS mm ON mm.moduleid = m.id' );
		$query->where( 'm.published = 1' );
		$query->where( '(mm.menuid = ' . (int)$Itemid . ' OR mm.menuid = 0)' );
		// Query for module data
		$db->setQuery( $query );

		if ( $row = $db->loadObject() ) {
			// Is module title visible?
			! $hideTitle OR $row->showtitle = 0;

			// Render the module instance
			$html = JModuleHelper::renderModule( $row, $attributes );
		}

		if ( $return ) {
			return $html;
		}

		echo $html;
	}

	/**
	 * Render content block.
	 *
	 * @param   string   $name     Content block name.
	 * @param   string   $device   Client device type.
	 * @param   integer  $preview  Previewing or not?
	 * @param   String   $IDBlock  ID Block
	 * @param   String   $class    Class css
	 *
	 * @return  void
	 */
	public static function renderHtmlBlock($bgstyke = NULL, $name, $device, $preview, $IDBlock = '', $class = 'row-fluid' ) {
		// Initialize variables
		$mCfg = JSNMobilizeTemplateHelper::getConfig( $device, $preview );
		$detect = new JSN_Mobile_Detect;
		$classPreview = "";
		$urlRequest = isset( $_SERVER[ "REQUEST_URI" ] ) ? $_SERVER[ "REQUEST_URI" ] : "";
		
		$app = JFactory::getApplication();
		$get = $app->input->getArray($_GET);
		
		$getPreView = ! empty( $get[ 'jsn_mobilize_preview' ] ) ? $get[ 'jsn_mobilize_preview' ] : '';
		if ( $getPreView == 1 ) {
			$classPreview = "jsn-mobilize-block ";
		}
		if ( ! empty( $name ) ) {
			$nameLeft = $name . '-left';
			$nameRight = $name . '-right';

			// Counting block content
			$counted[ $name ] = is_array( $mCfg->get( $name ) ) ? count( $mCfg->get( $name ) ) : 0;
			$counted[ $nameLeft ] = is_array( $mCfg->get( $nameLeft ) ) ? count( $mCfg->get( $nameLeft ) ) : 0;
			$counted[ $nameRight ] = is_array( $mCfg->get( $nameRight ) ) ? count( $mCfg->get( $nameRight ) ) : 0;
			$htmlBlock = "";

			// Render block content
			$html[ $nameLeft ] = JSNMobilizeTemplateHelper::renderBlock( $mCfg->get( $nameLeft ), true );
			$html[ $nameRight ] = JSNMobilizeTemplateHelper::renderBlock( $mCfg->get( $nameRight ), true );

			$classSpan = 'span6';

			if ( ! empty( $html[ $nameLeft ] ) OR ! empty( $html[ $nameRight ] ) ) {
				//echo '<div id="jsn-mobilize-' . str_replace('_', '-', $name) . '" class="row-fluid">';
				if ( ! empty( $html[ $nameLeft ] ) ) {
					$htmlBlock .= "\t" . '<div id="jsn-mobilize-' . str_replace( '_', '-', $nameLeft ) . '" class="' . $classPreview . ( ! empty( $html[ $nameRight ] ) ? $classSpan : 'span12' ) . '">' . "\n\t\t" . $html[ $nameLeft ] . "\n\t" . '</div>';
				}
				if ( ! empty( $html[ $nameRight ] ) ) {
					$htmlBlock .= "\t" . '<div id="jsn-mobilize-' . str_replace( '_', '-', $nameRight ) . '" class=" ' . $classPreview . ( ! empty( $html[ $nameLeft ] ) ? $classSpan : 'span12' ) . '">' . "\n\t\t" . $html[ $nameRight ] . "\n\t" . '</div>';
				}
				//echo '</div>';
			}

			if ( ! empty( $htmlBlock ) ) {
				$class = ! empty( $class ) ? 'class="' . $class . '"' : '';
				echo '<div id="' . $IDBlock . '"' . $class . '>'.$bgstyke.'<div class="row-fluid">' . $htmlBlock . '</div></div>';
			}
		}
	}

	/**
	 * Get options design os support
	 *
	 * @param   String  $type     Type OS
	 * @param   String  $version  Version OS
	 * @param   String  $device   Device
	 *
	 * @return stdClass
	 */
	public static function getOSSupport( $type, $version, $device ) {
		// Get database object
		$db = JFactory::getDbo();

		// Build query to load module data
		$query = $db->getQuery( true );
		$query->select( '*' );
		$query->from( '#__jsn_mobilize_os' );
		$query->where( 'os_type = ' . $db->Quote( $type ) );

		$db->setQuery( $query );
		$lisOS = $db->loadObjectList();

		$support = "";
		if ( ! empty( $version ) ) {
			$ver = explode( ".", $version );
			if ( ! empty( $ver[ 1 ] ) ) {
				$version = $ver[ 0 ] . '.' . $ver[ 1 ];
			}
			else {
				$version = $ver[ 0 ];
			}
		}

		if ( $type != "other" ) {
			foreach ( $lisOS as $os ) {
				$osValue = json_decode( $os->os_value );
				if ( ! empty( $osValue ) ) {
					foreach ( $osValue as $value ) {
						if ( ! empty( $value[ 1 ] ) && ! empty( $value[ 0 ] ) && $value[ 1 ] == "<" ) {
							if ( is_float( $value[ 0 ] ) && version_compare( $value[ 0 ], $version, ">=" ) ) {
								$support = $os->os_id;
							}
							elseif ( version_compare( $value[ 0 ], (int)$version, ">=" ) ) {
								$support = $os->os_id;
							}
						}
						elseif ( ! empty( $value[ 1 ] ) && ! empty( $value[ 0 ] ) && $value[ 1 ] == ">" ) {
							if ( is_float( $value[ 0 ] ) && version_compare( $value[ 0 ], $version, "<=" ) ) {
								$support = $os->os_id;
							}
							elseif ( version_compare( $value[ 0 ], (int)$version, "<=" ) ) {
								$support = $os->os_id;
							}
						}
						elseif ( empty( $value[ 1 ] ) && ! empty( $value[ 0 ] ) ) {
							if ( is_float( $value[ 0 ] ) && version_compare( $value[ 0 ], $version, "=" ) ) {
								$support = $os->os_id;
							}
							elseif ( version_compare( $value[ 0 ], (int)$version, "=" ) ) {
								$support = $os->os_id;
							}
						}
						elseif ( ! empty( $value[ 1 ] ) && ! empty( $value[ 0 ] ) ) {
							if ( version_compare( $value[ 0 ], $version, "=" ) || version_compare( $value[ 1 ], $version, "=" ) ) {
								$support = $os->os_id;
							}
						}
					}
				}
			}
			if ( empty( $support ) ) {
				return false;
			}
		}
		else {
			$support = $lisOS[ 0 ]->os_id;
		}
        $detect = new JSN_Mobile_Detect;
        $pfl_device = ($detect->isTablet()) ? '"jsn_tablet"' : '"jsn_mobile"';
		$query = $db->getQuery( true );
		$query->select( '*' );
		$query->from( '#__jsn_mobilize_profiles AS p' );
		$query->join( 'INNER', '#__jsn_mobilize_os_support AS s ON s.profile_id = p.profile_id' );
		$query->where( 's.os_id = ' . $db->Quote( $support ) );
		$query->where( 'p.profile_state = 1 AND p.profile_device = '.$pfl_device );
//		$query->order( "p.ordering" );
		$db->setQuery( $query, 0, 1 );
		$profile = $db->loadObject();
		$profileID = ! empty( $profile->profile_id ) ? $profile->profile_id : '';
		$query = $db->getQuery( true );
		$query->select( '*' );
		$query->from( '#__jsn_mobilize_design' );
		$query->where( 'profile_id = ' . $db->Quote( $profileID ) );
		$db->setQuery( $query );
		$dataDesign = $db->loadObjectList();
		$optionDesign = new stdClass;
		if ( ! empty( $dataDesign ) ) {
			foreach ( $dataDesign as $item ) {
				$name = $item->name;
				$value = json_decode( $item->value );
				
				if ( ! empty( $value ) ) {
					$optionDesign->$name = $value;
				}
				else {
					if ($name == 'mobilize-css') {
						$item->value = self::addDomainPrefix($item->value);
					}
					$optionDesign->$name = $item->value;
				}
			}
		}
		$session = JFactory::getSession();
		$session->set( 'jsn_mobilize_profile', $profile );

		return $optionDesign;
	}
	
	/**
	 *  Add domain prefix before background url
	 *
	 * @return string
	 */
	public static function addDomainPrefix($contents)
	{
		$patternUrl = 'background:url\(\/';
		$replaceWithUrl = 'background:url('.JURI::root();
		
		$patternImage = 'background-image:url\(\/';
		$replaceWithImage = 'background-image:url('.JURI::root();

		if ($contents) {
			preg_match('/'.$patternUrl.'/', $contents, $r1);
			if ( count($r1))
			{
				$contents = preg_replace('/'.$patternUrl.'/', $replaceWithUrl, $contents);
			}

			preg_match('/'.$patternImage.'/', $contents, $r2);
			if ( count($r2))
			{
				$contents = preg_replace('/'.$patternImage.'/', $replaceWithImage, $contents); 
			}

		}
		return $contents;
	}
	

	/**
	 *  Check Version Joomla
	 *
	 * @return mixed
	 */
	public static function isJoomla3() {
		$version = new JVersion;
		$isJoomla3 = version_compare( $version->getShortVersion(), '3.0', '>=' );
		return $isJoomla3;
	}

	/**
	 * Wrap first word inside a <span>
	 *
	 * @param   String  $value  Value
	 *
	 * @return null|string
	 */
	public function wrapFirstWord( $value ) {
		$processed_string = null;
		$explode_string = explode( ' ', trim( $value ) );
		for ( $i = 0; $i < count( $explode_string ); $i ++ ) {
			if ( $i == 0 ) {
				$processed_string .= '<span>' . $explode_string[ $i ] . '</span>';
			}
			else {
				$processed_string .= ' ' . $explode_string[ $i ];
			}
		}

		return $processed_string;
	}

	/**
	 * Check item menu is the last menu
	 *
	 * @param   Object  $item  item menu
	 *
	 * @return bool
	 */
	public static function isLastMenu( $item ) {
		if ( isset( $item->tree[ 0 ] ) && isset( $item->tree[ 1 ] ) ) {
			$db = JFactory::getDbo();
			$q = $db->getQuery( true );

			$q->select( 'lft, rgt' );
			$q->from( '#__menu' );
			$q->where( 'id = ' . (int)$item->tree[ 0 ], 'OR' );
			$q->where( 'id = ' . (int)$item->tree[ 1 ] );

			$db->setQuery( $q );

			$results = $db->loadObjectList();

			if ( $results[ 1 ]->rgt == ( (int)$results[ 0 ]->rgt - 1 ) && $item->deeper ) {
				return true;
			}
			else {
				return false;
			}
		}
		else {
			return false;
		}
	}

	/**
	 * Check if current page is rendered by a specific component and/or has any module of that specific component assigned to.
	 *
	 * @param   string  $option  Component folder name, e.g. com_k2
	 * @param   string  $module  Prefix of module belonging to the specified component above, e.g. mod_k2_
	 *
	 * @return  boolean
	 */
	protected function checkExt($option, $module = '')
	{
		// Get input object
		$input = JFactory::getApplication()->input;

		// Check if current page is generated by specified component
		if ($input->getCmd('option') == $option)
		{
			return true;
		}

		if ( ! empty($module))
		{
			// Get current page menu item id
			$itemId = $input->getInt('Itemid', 0);

			// Get template positions
			static $positions;

			if ( ! isset($positions))
			{
				// Read template manifest file for available positions
				$xml = simplexml_load_file(JPATH_ROOT . '/templates/' . JFactory::getApplication()->getTemplate(true)->template . '/templateDetails.xml');

				foreach ($xml->xpath('positions/position') AS $position)
				{
					$positions[] = (string) $position;
				}
			}

			// Get Joomla database object
			$db	= JFactory::getDbo();

			// First query for module instances that are always hidden in current page
			$q	= $db->getQuery(true);

			$q->select('m.id');
			$q->from('#__modules AS m');
			$q->join('INNER', '#__modules_menu AS mm ON mm.moduleid = m.id');
			$q->where('m.client_id = 0');
			$q->where('m.published = 1');
			$q->where('m.module LIKE ' . $q->quote("{$module}%"));
			$q->where('(mm.menuid < 0 AND mm.menuid = ' . (0 - $itemId) . ')');

			if (isset($positions))
			{
				$q->where('m.position IN ("' . implode('", "', $positions) . '")');
			}

			$db->setQuery($q);

			$excludes = is_array($excludes = $db->loadColumn()) ? $excludes : array();

			// Then query for modules instances that are assigned to show in all page or current page
			$q	= $db->getQuery(true);

			$q->select('m.id');
			$q->from('#__modules AS m');
			$q->join('INNER', '#__modules_menu AS mm ON mm.moduleid = m.id');
			$q->where('m.client_id = 0');
			$q->where('m.published = 1');
			$q->where('m.module LIKE ' . $q->quote("{$module}%"));
			$q->where('(mm.menuid = ' . $itemId . ' OR mm.menuid = 0 OR (mm.menuid < 0 AND mm.menuid != ' . (0 - $itemId) . '))');
			$q->group('m.id');

			if (isset($positions))
			{
				$q->where('m.position IN ("' . implode('", "', $positions) . '")');
			}

			$db->setQuery($q);

			if (is_array($includes = $db->loadColumn()))
			{

				// Compare include and exclude arrays
				$includes = array_diff($includes, $excludes);

				return count($includes);
			}
		}

		return false;
	}

	/**
	 * Check if current page is rendered by K2 component and/or has any K2 module assigned to.
	 *
	 * @return  boolean
	 */
	public function checkK2()
	{
		return self::checkExt('com_k2', 'mod_k2_');
	}

	/**
	 * Check if current page is rendered by VirtueMart component and/or has any VirtueMart module assigned to.
	 *
	 */
	public function checkVM()
	{
		return self::checkExt('com_virtuemart', 'mod_virtuemart_');
	}

	/**
	 * Check if current page is rendered by VirtueMart component and/or has any VirtueMart module assigned to.
	 *
	 */
	public function checkMTREE()
	{
		return self::checkExt('com_mtree', 'mod_mtree_');
	}
	/**
	 * Convert color HEX to rgba
	 *
	 * @param   string  $hex  color Hex
 	 * @param   string  $op opacity
	 *
	 * @return  string color rgba
	 */
	public function hex2rgb($hex,$op) {
		$hex = str_replace("#", "", $hex);

		if(strlen($hex) == 3) {
		   $r = hexdec(substr($hex,0,1).substr($hex,0,1));
		   $g = hexdec(substr($hex,1,1).substr($hex,1,1));
		   $b = hexdec(substr($hex,2,1).substr($hex,2,1));
		} else {
		   $r = hexdec(substr($hex,0,2));
		   $g = hexdec(substr($hex,2,2));
		   $b = hexdec(substr($hex,4,2));
		}
		$rgb = "rgba(".$r.",". $g .",". $b .",". $op .")";
		
		//return implode(",", $rgb); // returns the rgb values separated by commas
		return $rgb; // returns an array with the rgb values
	}
	/**
	 * Render opacity for background module
	 * @param   int  $cm  
	 * @param   int  $preview
	 * @param   array  $cookieStyle
	 * @param   array  $cookieStl
	 * @param   string  $keyworld
 	 * @param   string  $str div id
	 *
	 * @return  string 
	 */
	public function renderOpcity($cm = NULL,$preview,$cookieStyle,$cookieStl,$keyworld) {
			if($preview == 1){
				$arrStyle = $cookieStyle[$keyworld];
			}else{
				$arrStyle = json_decode($cookieStl[$keyworld]);
			}
			$radius ='';
			if (count($arrStyle))
			{
				foreach ($arrStyle as $temp){
					
					if($temp->key === $keyworld.'_container_bo_border_radius'){
						$radius = $temp->value;
					}
					if($temp->key == $keyworld . '_container_ba_backgroundType'){
						if($temp->value == 'img'){
							$cmd=1;
						}
					}
					if(isset($cmd) && !empty($cmd)){
						if($temp->key == $keyworld . '_container_image'){
							$pathImg = $temp->value;
						}
						if($temp->key === $keyworld.'_container_effectColor'){
							$colorEffect = $temp->value;
						}
						if($temp->key === $keyworld.'_container_opacity'){
							$colorOpacity = $temp->value;
						}
						if($temp->key === $keyworld.'_container_imageWidth'){
							$imgW = $temp->value;
						}
						if($temp->key === $keyworld.'_container_imageHeight'){
							$imgH = $temp->value;
						}
						if($pathImg !=''){
							if (strpos($pathImg,'http://') !== false) {
								$pathImg = $pathImg;
							}
							else{
								/* if($_SERVER['SERVER_PORT'] !== ''){
									$pathImg = 'http://' . $_SERVER['SERVER_NAME'] .':'.$_SERVER['SERVER_PORT']. JURI::root(true) .'/'. $pathImg;
								}else{
									$pathImg = 'http://' . $_SERVER['SERVER_NAME'] . JURI::root(true) .'/'. $pathImg;
								} */
								
								$pathImg = JURI::root(true) .'/'. $pathImg;
							}
							$cssBG = ' position:relative;background:url('.$pathImg.');background-size: '.$imgW .' '. $imgH .';';
							$pathImg ='';
						}
					}
				}
			}
			$str ='';
			if($cm ==1 && $keyworld == 'jsn_template'){
				$str.= '<style>#jsn-master'.$cssBG .';#'.str_replace("_", "-", $keyworld).' .row-fluid{position:relative}</style>';
			}else{
				$str.= '<style>#'.str_replace("_", "-", $keyworld).'.row-fluid{position:relative} #'.str_replace("_", "-", $keyworld).' .row-fluid{position:relative}</style>';
			}
			if(isset($colorEffect) && !empty($colorEffect)){
				$str.= '<div class="divOpacity" style="border-radius:'. $radius .';width:100%;height:100%;position:absolute;top:0;left:0;background:'.$this->hex2rgb($colorEffect,$colorOpacity). '"></div>';
			}
		return $str;
	}
}

Zerion Mini Shell 1.0