Spade

Mini Shell

Directory:~$ /home/lmsyaran/public_html/joomla4/
Upload File

[Home] [System Details] [Kill Me]
Current File:~$ /home/lmsyaran/public_html/joomla4/hikashopanalytics.zip

PK;��[�p��]�]hikashopanalytics.phpnu�[���<?php
/**
 * @package	HikaShop for Joomla!
 * @version	4.4.1
 * @author	hikashop.com
 * @copyright	(C) 2010-2021 HIKARI SOFTWARE. All rights reserved.
 * @license	GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html
 */
defined('_JEXEC') or die('Restricted access');
?><?php
class plgSystemHikashopanalytics extends JPlugin
{
	public function __construct(&$subject, $config) {
		parent::__construct($subject, $config);

		if(isset($this->params))
			return;
		$plugin = JPluginHelper::getPlugin('system',
'hikashopanalytics');
		$this->params = new JRegistry($plugin->params);
	}

	public function onBeforeOrderCreate(&$order) {
		if(isset($order->order_type) && $order->order_type !=
'sale')
			return;
		$app = JFactory::getApplication();
		if(hikashop_isClient('administrator'))
			return;

		$ga = @$_SESSION['hikashop_analytics_ga'];
		if(!empty($_POST['checkout']['analytics']['ga']))
{
			$formData = hikaInput::get()->get('checkout', array(),
'array');
			$ga = $formData['analytics']['ga'];
		}


		if(empty($ga))
			return;

		if(!empty($order->order_payment_params) &&
is_string($order->order_payment_params))
			$order->order_payment_params =
hikashop_unserialize($order->order_payment_params);
		if(empty($order->order_payment_params))
			$order->order_payment_params = new stdClass();
		$order->order_payment_params->analytics_ga = trim($ga);
	}

	public function onAfterOrderCreate(&$order) {
		if(isset($order->order_type) && $order->order_type !=
'sale')
			return;

		return $this->checkOrder($order, true);
	}

	public function onAfterOrderUpdate(&$order) {
		if(isset($order->order_type) && $order->order_type !=
'sale')
			return;

		return $this->checkOrder($order, false);
	}


	public function afterInitialise() {
		return $this->onAfterInitialise();
	}

	public function onAfterInitialise() {
		if(empty($_POST['checkout']['analytics']['ga']))
			return;

		$app = JFactory::getApplication();
		$checkout = $app->input->get('checkout', '',
'array');
		$_SESSION['hikashop_analytics_ga'] =
$checkout['analytics']['ga'];
	}

	protected function checkOrder(&$order, $creation = false) {
		if(!hikashop_level(2))
			return true;

		if(isset($order->order_type) && $order->order_type !=
'sale')
			return true;
		if(isset($order->old->order_type) &&
$order->old->order_type != 'sale')
			return true;

		if(!isset($order->order_status))
			return true;

		$config = hikashop_config();
		$confirmed_status = $config->get('order_confirmed_status',
'confirmed');

		if( !$this->params->get('use_universal', 0) &&
$creation ) {
			$app = JFactory::getApplication();
			$app->setUserState(HIKASHOP_COMPONENT.'.ga_check_order',
$order->order_id);
			$app->setUserState(HIKASHOP_COMPONENT.'.ga_check_counter',
10);
		}

		if(!$this->params->get('single_submission', 0) &&
$order->order_status != $confirmed_status)
			return true;

		$invoice_statuses = explode(',',
$config->get('invoice_order_statuses','confirmed,shipped'));
		if(empty($invoice_statuses))
			$invoice_statuses = array('confirmed','shipped');
		if($this->params->get('single_submission', 0) &&
in_array($confirmed_status, $invoice_statuses) &&
!empty($order->old) &&
!empty($order->old->order_invoice_id))
			return true;

		$app = JFactory::getApplication();
		$app->setUserState(HIKASHOP_COMPONENT.'.display_ga', 1);
		$app->setUserState(HIKASHOP_COMPONENT.'.order_id',
$order->order_id);
		$app->setUserState(HIKASHOP_COMPONENT.'.error_display_ga',
0);

		$app->setUserState(HIKASHOP_COMPONENT.'.ga_check_order',
null);
		$app->setUserState(HIKASHOP_COMPONENT.'.ga_check_counter',
null);

		if($this->params->get('use_universal', 0)) {
			$call = false;
			if($this->params->get('universal_always_directcall',
0))
				$call = true;
			if(!$call && !hikashop_isClient('administrator')) {
				$ctrl = hikaInput::get()->getCmd('ctrl', '');
				$task = hikaInput::get()->getCmd('task', '');
				if($ctrl == 'checkout' && $task ==
'notify')
					$call = true;
			}

			if($call) {
				$ret = $this->googleProcess($order->order_id);
				if($ret === true) {
					$app->setUserState(HIKASHOP_COMPONENT.'.display_ga', 0);
				} else if($this->params->get('debug_mode')) {
					$ip = hikashop_getIP();
					$data = 'Transaction validated, postpone the
javascript'."\r\n".
						'IP: ' . $ip . "\r\n".
						'URL: ' . hikashop_currentURL();
					$this->writeToLog($data);
				}
			}
		}

		return true;
	}

	public function onAfterRender() {
		$app = JFactory::getApplication();

		$this->getUTM();

		$display_ga =
(int)$app->getUserState('com_hikashop.display_ga', 0);
		$check_counter =
(int)$app->getUserState('com_hikashop.ga_check_counter', 0);
		$check_order =
(int)$app->getUserState('com_hikashop.ga_check_order', 0);

		if(empty($display_ga) && (empty($check_counter) ||
empty($check_order)))
			return true;

		if(!defined('DS'))
			define('DS', DIRECTORY_SEPARATOR);
		if(!include_once(rtrim(JPATH_ADMINISTRATOR,DS).DS.'components'.DS.'com_hikashop'.DS.'helpers'.DS.'helper.php'))
			return true;
		if(!hikashop_level(2))
			return true;

		if(!empty($display_ga)) {
			$order_id =
(int)$app->getUserState(HIKASHOP_COMPONENT.'.order_id', 0);
		} else {
			$order_id = $check_order;
			$app->setUserState(HIKASHOP_COMPONENT.'.ga_check_counter',
$check_counter - 1);
		}

		$content = $this->googleProcess($order_id, true);
		if(!empty($content) && is_string($content)) {
			if(class_exists('JResponse'))
				$body = JResponse::getBody();
			$alternate_body = false;
			if(empty($body)) {
				$body = $app->getBody();
				$alternate_body = true;
			}

			ini_set('pcre.jit', false);
			$body = preg_replace("#<script
type=\"text/javascript\">(?:(?!<script).)*('https://ssl'
: 'http://www'\) \+
'\.|window,document,'script','//www\.)google-analytics\.com.*</script>#siU",
'', $body);

			$body = str_replace('</head>', $content .
'</head>', $body);
			if($alternate_body) {
				$app->setBody($body);
			} else {
				JResponse::setBody($body);
			}

			$app->setUserState(HIKASHOP_COMPONENT.'.display_ga', 0);
			$app->setUserState(HIKASHOP_COMPONENT.'.ga_check_order',
null);
			$app->setUserState(HIKASHOP_COMPONENT.'.ga_check_counter',
null);
		}
		return true;
	}
	private function getUTM() {
		if(!empty($_REQUEST['utm_source']) ||
!empty($_REQUEST['utm_campaign']) ||
!empty($_REQUEST['utm_medium']) ||
!empty($_REQUEST['utm_term']) ||
!empty($_REQUEST['utm_content'])) {
			$this->storeUTMFromParameters();
		} elseif(!empty($_COOKIE['__utmz'])) {
			$this->storeUTMFromCookie();
		}
	}
	private function storeUTMFromParameters() {
		$vars = array('cn' =>
'utm_campaign','cs' =>
'utm_source','cm' =>
'utm_medium','ck' =>
'utm_term','cc' => 'utm_content');
		foreach($vars as $key => $value) {
			if(!empty($_REQUEST[$value])) {
				$_SESSION['hikashop_analytics_ga_'.$key] =
hikaInput::get()->getString($value);
			}
		}
	}
	private function storeUTMFromCookie() {
		$vars = array('cn' => 'utmccn','cs'
=> 'utmcsr','cm' =>
'utmcmd','ck' => 'utmctr');
		$parts = explode('.', $_COOKIE['__utmz']);
		$params = explode('|', end($parts));
		$data = array();
		foreach($params as $param) {
			if(!strpos($param, '='))
				continue;
			list($key, $value) = explode('=', $param, 2);
			$data[$key] = $value;
		}
		jimport('joomla.filter.filterinput');
		$filter = JFilterInput::getInstance(array(), array(), 1, 1);
		foreach($vars as $key => $value) {
			if(!empty($data[$value]) && !is_null($filter)) {
				$_SESSION['hikashop_analytics_ga_'.$key] =
$filter->clean($data[$value], 'string');
			}
		}
	}

	public function onHikashopBeforeDisplayView(&$viewObj) {
		$app = JFactory::getApplication();
		if(hikashop_isClient('administrator'))
			return;

		$viewName = $viewObj->getName();
		if($viewName != 'checkout')
			return;
		$layout = $viewObj->getLayout();
		if(!in_array($layout, array('show', 'step')))
			return;

		$account_configured = false;
		for($i = 1; $i < 6; $i++) {
			$a = $this->params->get('account_' . $i, '');
			if(!empty($a)) {
				$account_configured = true;
				break;
			}
		}
		if(!$account_configured)
			return;

		if(empty($viewObj->extra_data))
			$viewObj->extra_data = array();
		$params = array();
		$vars = array('cn', 'cs', 'cm',
'ck', 'cc');
		foreach($vars as $key) {
			if(!empty($_SESSION['hikashop_analytics_ga_'.$key]))
			$params[] = $key.':
\''.$viewObj->escape($_SESSION['hikashop_analytics_ga_'.$key]).'\',';
		}
		$viewObj->extra_data['analytics_ga'] = '
<input type="hidden"
id="hikashop_checkout_analytics_field_ga"
name="checkout[analytics][ga]"
value="'.$viewObj->escape(@$_SESSION['hikashop_analytics_ga']).'"/>
<script type="text/javascript">
window.hikashop.ready(function(){
	if(!ga || typeof(ga) != "function")
		return;
	ga(function(tracker){
		var clientId = tracker.get("clientId"),
			elem =
document.getElementById("hikashop_checkout_analytics_field_ga");
		if(elem) elem.value = JSON.stringify({
			uuid: tracker.get("clientId"),
			ua: tracker.get("navigator.userAgent"),
			'.
			implode("\r\n", $params)
			.'
			ul: tracker.get("language"),
		});
	});
});
</script>';
	}

	protected function googleProcess($order_id = 0, $render = false) {
		$accounts = array();
		$account_configured = false;
		for($i = 1; $i < 6; $i++) {
			$accounts[$i] = new stdClass();
			$accounts[$i]->account_id =
$this->params->get('account_' . $i, '');
			$accounts[$i]->currency =
$this->params->get('currency_' . $i, 0);

			if(!empty($accounts[$i]->account_id))
				$account_configured = true;
		}

		if(empty($accounts) || !$account_configured)
			return false;

		$app = JFactory::getApplication();
		if(empty($order_id))
			$order_id = hikaInput::get()->getInt('order_id');
		if(empty($order_id))
			$order_id =
$app->getUserState(HIKASHOP_COMPONENT.'.order_id');

		if(empty($order_id))
			return false;

		$config = hikashop_config();
		$confirmed_status = $config->get('order_confirmed_status',
'confirmed');

		$orderClass = hikashop_get('class.order');
		$order = $orderClass->loadFullOrder($order_id, false, false);

		if(empty($order) || $order->order_status != $confirmed_status)
			return false;

		if($order->order_type != 'sale')
			return false;

		$currencyClass = hikashop_get('class.currency');
		$null = array();
		$currencies = array(
			$order->order_currency_id => $order->order_currency_id
		);
		$currencyInfo = $currencyClass->getCurrencies($currencies, $null);
		$currencyInfo = reset($currencyInfo);

		if($this->params->get('use_universal', 0)) {
			$call =
(int)$this->params->get('universal_always_directcall', 0);
			if($call && $render)
				return true;

			if(!$call && !hikashop_isClient('administrator')) {
				$ctrl = hikaInput::get()->getCmd('ctrl', '');
				$task = hikaInput::get()->getCmd('task', '');
				if($ctrl == 'checkout' && $task ==
'notify')
					$call = true;
			}

			if($call)
				return $this->googleDirectCall($accounts, $order, $currencyInfo);
		}
		return $this->googleGetJS($accounts, $order, $currencyInfo);
	}

	protected function googleGetJS($accounts, &$order, $currencyInfo) {
		$found = false;

		$app = JFactory::getApplication();

		$to_currency = '';
		$main_currency = '';
		foreach($accounts as $acc) {
			$currencies = explode(':', $acc->currency, 2);
			$main_currency = reset($currencies);

			if($main_currency != $currencyInfo->currency_code) {
				if( count($currencies) > 1 ) {
					$from_currencies = explode(',', $currencies[1]);
					if(!in_array($currencyInfo->currency_code, $from_currencies))
						continue;
					$to_currency = $main_currency;
				} else {
					continue;
				}
			}

			if(!empty($acc->account_id)) {
				$account = $acc->account_id;
				$found = true;
				if(!preg_match('/UA-[0-9]{2,12}-[0-9]{1,3}/',$account)) {
					if(!$app->getUserState(HIKASHOP_COMPONENT.'.error_display_ga'))
{
						$app->setUserState(HIKASHOP_COMPONENT.'.error_display_ga',
1);
						$app->enqueueMessage(JText::_('GOOGLE_ACCOUNT_ID_INVALID'));
						$app->redirect(hikashop_currentUrl('', false));
					}
					return '';
				}
				break;
			}
		}

		if(empty($to_currency))
			$to_currency = $main_currency;

		if(!$found) {
			if(!$app->getUserState(HIKASHOP_COMPONENT.'.error_display_ga'))
{
				$app->setUserState(HIKASHOP_COMPONENT.'.error_display_ga',
1);
				$app->enqueueMessage(JText::_('NO_CURRENCY_FOUND_GOOGLE_ANALYTICS'));
				$app->redirect(hikashop_currentUrl('', false));
			}
			return '';
		}

		$jconf = JFactory::getConfig();
		if(HIKASHOP_J30)
			$siteName = $jconf->get('sitename');
		else
			$siteName = $jconf->getValue('config.sitename');

		$tax = ($order->order_subtotal - $order->order_subtotal_no_vat) +
$order->order_shipping_tax + $order->order_discount_tax +
$order->order_payment_tax;
		if(!empty($order->order_tax_info)) {
			$tax = 0;
			foreach($order->order_tax_info as $tax_info) {
				$tax += $tax_info->tax_amount;
			}
		}

		if($this->params->get('use_universal', 0)) {

			$extra_required = '';
			if($this->params->get('module_displayfeatures', 0))
				$extra_required .= "\r\n" . 'ga("require",
"displayfeatures");';
			if($this->params->get('module_linkid', 0))
				$extra_required .= "\r\n" . 'ga("require",
"linkid", "linkid.js");';

			$js = '
<!-- Google Analytics -->
<script>
(function(i,s,o,g,r,a,m){i["GoogleAnalyticsObject"]=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new
Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,"script","//www.google-analytics.com/analytics.js","ga");

ga("create", "' . $account . '",
"auto");'.$extra_required.'
ga("send", "pageview");
ga("require", "ecommerce", "ecommerce.js");

ga("ecommerce:addTransaction", {
	"id": "' . $order->order_id.'",
	"affiliation": "' .
str_replace(array('\\','"'),
array('\\\\', '\\\"'), $siteName) . '",
	"revenue": "' .
round($this->convertPrices($order->order_full_price,
$currencyInfo->currency_code, $to_currency), 2) . '",
	"shipping": "' .
round($this->convertPrices($order->order_shipping_price,
$currencyInfo->currency_code, $to_currency), 2) . '",
	"tax": "' . round($this->convertPrices($tax,
$currencyInfo->currency_code, $to_currency), 2) . '",
	"currency": "'.$to_currency.'"
});
';

			foreach($order->products as $product) {
				$js .= '
ga("ecommerce:addItem", {
	"id": "' . $order->order_id . '",
	"name": "' .
str_replace(array('\\','"'),
array('\\\\', '\\\"'),
strip_tags($product->order_product_name)) . '",
	"sku": "' .
str_replace(array('\\','"'),
array('\\\\', '\\\"'),
$product->order_product_code) . '",
	"category": "",
	"price": "' .
round($this->convertPrices($product->order_product_price +
$product->order_product_tax, $currencyInfo->currency_code,
$to_currency), 2). '",
	"quantity": "' .
(int)$product->order_product_quantity . '"
});
';
			}

			$js .= '
ga("ecommerce:send");
</script>
<!-- End Google Analytics -->
';

			if($this->params->get('debug_mode')) {
				$ip = hikashop_getIP();
				$data = 'Adding google UA javascript'."\r\n".
					'IP: ' . $ip . "\r\n".
					'URL: ' . hikashop_currentURL() ."\r\n\r\n".
					'<pre>' . htmlentities($js) .
'</pre>';
				$this->writeToLog($data);
			}
		} else {

			$extra_required = '';
			if($this->params->get('module_linkid', 0))
				$extra_required .= "\r\n" .
'var pluginUrl =
"//www.google-analytics.com/plugins/ga/inpage_linkid.js";
_gaq.push(["_require", "inpage_linkid",
pluginUrl]);';

			$js = '
<script type="text/javascript">
var _gaq = _gaq || [];'.$extra_required.'
_gaq.push(["_setAccount", "' . $account .
'"]);
_gaq.push(["_trackPageview"]);
_gaq.push(["_addTrans",
	"' . $order->order_id . '",
	"' . str_replace(array('\\','"'),
array('\\\\', '\\\"'), $siteName) . '",
	"' . round($this->convertPrices($order->order_full_price,
$currencyInfo->currency_code, $to_currency), 2) . '",
	"' . round($this->convertPrices($tax,
$currencyInfo->currency_code, $to_currency), 2) . '",
	"' .
round($this->convertPrices($order->order_shipping_price,
$currencyInfo->currency_code, $to_currency), 2) . '",
	"' . str_replace(array('\\','"'),
array('\\\\', '\\\"'),
@$order->billing_address->address_city) . '",
	"' . str_replace(array('\\','"'),
array('\\\\', '\\\"'),
@$order->billing_address->address_state) . '",
	"' . str_replace(array('\\','"'),
array('\\\\', '\\\"'),
@$order->billing_address->address_country) . '",
]);
';
			foreach($order->products as $product) {
				$js .= '
_gaq.push(["_addItem",
	"' . $order->order_id . '",
	"' . str_replace(array('\\','"'),
array('\\\\', '\\\"'),
$product->order_product_code) . '",
	"' . str_replace(array('\\','"'),
array('\\\\', '\\\"'),
strip_tags($product->order_product_name)) . '",
	"",
	"' .
round($this->convertPrices($product->order_product_price +
$product->order_product_tax, $currencyInfo->currency_code,
$to_currency), 2) . '",
	"' . $product->order_product_quantity . '"
]);
';
			}

			$file = 'ga.js';
			if($this->params->get('debug_mode'))
				$file='u/ga_debug.js';

			$js .= '
_gaq.push(["_trackTrans"]);
(function() {
	var ga = document.createElement("script"); ga.type =
"text/javascript"; ga.async = true;
	ga.src = ("https:" == document.location.protocol ?
"https://ssl" : "http://www") +
".google-analytics.com/' . $file . '";
	var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(ga, s);
})();
</script>
';
		}

		return $js;
	}

	protected function convertPrices($price, $src, $dst) {
		$class = hikashop_get('class.currency');
		static $currencies = array();
		if(!isset($currencies[$src]))
			$currencies[$src] = $class->get($src);
		if(!isset($currencies[$dst]))
			$currencies[$dst] = $class->get($dst);
		return $class->convertUniquePrice($price,
$currencies[$src]->currency_id, $currencies[$dst]->currency_id);
	}

	protected function googleDirectCall($accounts, &$order, $currencyInfo)
{
		$found = false;
		$to_currency = '';
		$main_currency = '';
		foreach($accounts as $acc) {
			$currencies = explode(':', $acc->currency, 2);
			$main_currency = reset($currencies);

			if($main_currency != $currencyInfo->currency_code) {
				if( count($currencies) > 1 ) {
					$from_currencies = explode(',', $currencies[1]);
					if(!in_array($currencyInfo->currency_code, $from_currencies))
						continue;
					$to_currency = $main_currency;
				} else {
					continue;
				}
			}
			if(!empty($acc->account_id)) {
				$account = $acc->account_id;
				if(!preg_match('/UA-[0-9]{2,12}-[0-9]{1}/', $account))
					continue;
				$found = true;
				break;
			}
		}
		if(!$found)
			return false;


		if(empty($to_currency))
			$to_currency = $main_currency;

		$params = array( 'uuid' => round((rand() / getrandmax()) *
0x7fffffff));


		$order_params = (!empty($order->order_payment_params) &&
is_string($order->order_payment_params)) ?
hikashop_unserialize($order->order_payment_params) :
$order->order_payment_params;
		if(!empty($order_params->analytics_ga)){
			if(substr($order_params->analytics_ga, 0, 1) == '{')
				$params = json_decode($order_params->analytics_ga, true);
			else
				$params['uuid'] = $order_params->analytics_ga;
		}

		$jconf = JFactory::getConfig();
		if(HIKASHOP_J30)
			$siteName = $jconf->get('sitename');
		else
			$siteName = $jconf->getValue('config.sitename');


		$data = array(
			'v' => 1,
			'tid' => $account,
			'uip' => $order->order_ip,
			'cid' => @$params['uuid'], // clientId

			't' => 'transaction',
			'ti' => $order->order_id, // order_id
			'ta' => $siteName,
			'tr' =>
round($this->convertPrices($order->order_full_price,
$currencyInfo->currency_code, $to_currency), 2),
			'tt' =>
round($this->convertPrices(($order->order_subtotal -
$order->order_subtotal_no_vat) + $order->order_shipping_tax +
$order->order_discount_tax, $currencyInfo->currency_code,
$to_currency), 2),
			'ts' =>
round($this->convertPrices($order->order_shipping_price,
$currencyInfo->currency_code, $to_currency), 2),
			'cu' => $to_currency
		);

		$variables = array(
			'ua', // user-agent from browser : navigator.userAgent
			'cn', // campaignName
			'cs', // campaignSource
			'cm', // campaignMedium
			'ck', // campaignKeyword
			'cc', // campaignContent
			'ci', // campaignId
			'ul', // language
		);
		foreach($variables as $variable) {
			if(!empty($params[$variable])) {
				$data[$variable] = $params[$variable];
			}
		}

		$this->googleDirectCallHit($data);

		foreach($order->products as $product) {
			$data = array(
				'v' => 1,
				'tid' => $account,
				'cid' =>  @$params['uuid'],

				't' => 'item',
				'ti' => $order->order_id, // order_id
				'in' => strip_tags($product->order_product_name), //
name
				'ip' =>
round($this->convertPrices($product->order_product_price +
$product->order_product_tax, $currencyInfo->currency_code,
$to_currency), 2), // price
				'iq' => $product->order_product_quantity, // qty
				'ic' => $product->order_product_code, // code
				'iv' => '',
				'cu' => $to_currency
			);
			$this->googleDirectCallHit($data);
		}

		if($this->params->get('debug_mode')) {
			$data = 'Send transaction by direct call
IP: ' . $ip . '
URL: ' . hikashop_currentURL();
			$this->writeToLog($data);
		}

		return true;
	}

	protected function googleDirectCallHit($data) {
		$url = 'http://www.google-analytics.com/collect';
		$headers = array('Content-type:
application/x-www-form-urlencoded');
		$user_agent = 'HikaShopAnalyticsTracking/1.0
(http://www.hikashop.com/)';

		$serialized_data = array();
		foreach($data as $k => $v) {
			$serialized_data[] = $k . '=' . urlencode($v);
		}
		$serialized_data = implode('&', $serialized_data);

		$session = curl_init();
		curl_setopt($session, CURLOPT_HEADER,         false);
		curl_setopt($session, CURLOPT_POST,           true);
		curl_setopt($session, CURLOPT_FOLLOWLOCATION, false);
		curl_setopt($session, CURLOPT_USERAGENT,      $user_agent);
		curl_setopt($session, CURLOPT_HTTP_VERSION,   CURL_HTTP_VERSION_1_1);
		curl_setopt($session, CURLOPT_RETURNTRANSFER, true);
		curl_setopt($session, CURLOPT_SSL_VERIFYPEER, false);
		curl_setopt($session, CURLOPT_SSL_VERIFYHOST, false);
		curl_setopt($session, CURLOPT_ENCODING,       'UTF-8');
		curl_setopt($session, CURLOPT_HTTPHEADER,     $headers);
		curl_setopt($session, CURLOPT_URL,            $url);
		curl_setopt($session, CURLOPT_POSTFIELDS,     $serialized_data);

		$result = curl_exec($session);
		$error = curl_error($session);
		curl_close($session);

		if($this->params->get('debug_mode')) {
			$data = 'Google Analytics Direct call'."\r\n".
print_r($data, true) ."\r\n".
				'result: ' .print_r(array($result, $error), true);
			$this->writeToLog($data);
		}
	}


	protected function writeToLog($data = null) {
		$dbg = ($data === null) ? ob_get_clean() : $data;
		if(empty($dbg)) {
			if($data === null)
				ob_start();
			return;
		}

		$dbg = '-- ' . date('m.d.y H:i:s') . ' --
[Google Analytics]' . "\r\n" . $dbg;

		jimport('joomla.filesystem.file');
		$config = hikashop_config();
		$file = $config->get('payment_log_file', '');
		$file = rtrim(JPath::clean(html_entity_decode($file)), DS . '
');
		if(!preg_match('#^([A-Z]:)?/.*#', $file) && (!$file[0]
== '/' || !file_exists($file))) {
			$file = JPath::clean(HIKASHOP_ROOT . DS . trim($file, DS . '
'));
		}
		if(!empty($file) && defined('FILE_APPEND')) {
			if(!file_exists(dirname($file))) {
				jimport('joomla.filesystem.folder');
				JFolder::create(dirname($file));
			}
			file_put_contents($file, $dbg, FILE_APPEND);
		}
		if($data === null)
			ob_start();
	}
}
PK;��[�m3IOOhikashopanalytics.xmlnu�[���<?xml
version="1.0" encoding="utf-8"?>
<extension type="plugin" version="2.5"
method="upgrade" group="system">
	<name>Hikashop Google Analytics Plugin</name>
	<creationDate>12 février 2021</creationDate>
	<version>4.4.1</version>
	<author>Hikashop</author>
	<authorEmail>dev@hikashop.com</authorEmail>
	<authorUrl>http://www.hikashop.com</authorUrl>
	<copyright>(C) 2010-2021 HIKARI SOFTWARE / OBSIDEV SARL - All rights
reserved.</copyright>
	<license>http://www.gnu.org/licenses/gpl-2.0.html
GNU/GPL</license>
	<description>This plugin enables you to track your sales with Google
Analytics</description>
	<files>
		<filename
plugin="hikashopanalytics">hikashopanalytics.php</filename>
	</files>
	<params addpath="/components/com_hikashop/params">
		<param name="use_universal" type="radio"
default="0" label="HIKA_USE_UNIVERSAL_ANALYTICS"
description="USE_UNIVERSAL_ANALYTICS">
			<option value="0">HIKASHOP_NO</option>
			<option value="1">HIKASHOP_YES</option>
		</param>

		<param name="account_1" type="text"
size="20" default=""
label="GOOGLE_ANALYTICS_ACCOUNT_1"
description="GOOGLE_ANALYTICS_ACCOUNT" />
		<param name="currency_1" type="text"
size="3" default="EUR"
label="GOOGLE_ANALYTICS_ACCOUNT_1_CURRENCY"
description="GOOGLE_ANALYTICS_ACCOUNT_CURRENCY" />

		<param name="account_2" type="text"
size="20" default=""
label="GOOGLE_ANALYTICS_ACCOUNT_2"
description="GOOGLE_ANALYTICS_ACCOUNT" />
		<param name="currency_2" type="text"
size="3" default="USD"
label="GOOGLE_ANALYTICS_ACCOUNT_2_CURRENCY"
description="GOOGLE_ANALYTICS_ACCOUNT_CURRENCY" />

		<param name="account_3" type="text"
size="20" default=""
label="GOOGLE_ANALYTICS_ACCOUNT_3"
description="GOOGLE_ANALYTICS_ACCOUNT" />
		<param name="currency_3" type="text"
size="3" default="JPY"
label="GOOGLE_ANALYTICS_ACCOUNT_3_CURRENCY"
description="GOOGLE_ANALYTICS_ACCOUNT_CURRENCY" />

		<param name="account_4" type="text"
size="20" default=""
label="GOOGLE_ANALYTICS_ACCOUNT_4"
description="GOOGLE_ANALYTICS_ACCOUNT" />
		<param name="currency_4" type="text"
size="3" default="GBP"
label="GOOGLE_ANALYTICS_ACCOUNT_4_CURRENCY"
description="GOOGLE_ANALYTICS_ACCOUNT_CURRENCY" />

		<param name="account_5" type="text"
size="20" default=""
label="GOOGLE_ANALYTICS_ACCOUNT_5"
description="GOOGLE_ANALYTICS_ACCOUNT" />
		<param name="currency_5" type="text"
size="3" default="CAD"
label="GOOGLE_ANALYTICS_ACCOUNT_5_CURRENCY"
description="GOOGLE_ANALYTICS_ACCOUNT_CURRENCY" />

		<param name="single_submission" type="radio"
default="0" label="HIKA_SINGLE_SUBMISSION"
description="SINGLE_SUBMISSION">
			<option value="0">HIKASHOP_NO</option>
			<option value="1">HIKASHOP_YES</option>
		</param>

		<param name="debug_mode" type="radio"
default="0" label="ANALYTICS_DEBUG_MODE"
description="DEBUG_MODE">
			<option value="0">HIKASHOP_NO</option>
			<option value="1">HIKASHOP_YES</option>
		</param>

		<param type="spacer" label="EXTRA_MODULES" />
		<param name="module_linkid" type="radio"
default="0" label="ENHANCED_LINK_ATTRIBUTION"
description="">
			<option value="0">HIKASHOP_NO</option>
			<option value="1">HIKASHOP_YES</option>
		</param>
		<param name="module_displayfeatures" type="radio"
default="0" label="HIKA_ENABLING_DISPLAY_FEATURES"
description="ENABLING_DISPLAY_FEATURES">
			<option value="0">HIKASHOP_NO</option>
			<option value="1">HIKASHOP_YES</option>
		</param>
		<param name="universal_always_directcall"
type="radio" default="0"
label="ALWAYS_USE_DIRECT_CALL"
description="ANALYTICS_DIRECT_CALL">
			<option value="0">HIKASHOP_NO</option>
			<option value="1">HIKASHOP_YES</option>
		</param>
	</params>
	<config>
		<fields name="params"
addfieldpath="/components/com_hikashop/fields">
			<fieldset name="basic">
				<field name="use_universal" type="radio"
default="0" label="HIKA_USE_UNIVERSAL_ANALYTICS"
description="USE_UNIVERSAL_ANALYTICS" class="btn-group
btn-group-yesno">
					<option value="0">HIKASHOP_NO</option>
					<option value="1">HIKASHOP_YES</option>
				</field>

				<field name="account_1" type="text"
size="20" default=""
label="GOOGLE_ANALYTICS_ACCOUNT_1"
description="GOOGLE_ANALYTICS_ACCOUNT" />
				<field name="currency_1" type="text"
size="3" default="EUR"
label="GOOGLE_ANALYTICS_ACCOUNT_1_CURRENCY"
description="GOOGLE_ANALYTICS_ACCOUNT_CURRENCY" />

				<field name="account_2" type="text"
size="20" default=""
label="GOOGLE_ANALYTICS_ACCOUNT_2"
description="GOOGLE_ANALYTICS_ACCOUNT" />
				<field name="currency_2" type="text"
size="3" default="USD"
label="GOOGLE_ANALYTICS_ACCOUNT_2_CURRENCY"
description="GOOGLE_ANALYTICS_ACCOUNT_CURRENCY" />

				<field name="account_3" type="text"
size="20" default=""
label="GOOGLE_ANALYTICS_ACCOUNT_3"
description="GOOGLE_ANALYTICS_ACCOUNT" />
				<field name="currency_3" type="text"
size="3" default="JPY"
label="GOOGLE_ANALYTICS_ACCOUNT_3_CURRENCY"
description="GOOGLE_ANALYTICS_ACCOUNT_CURRENCY" />

				<field name="account_4" type="text"
size="20" default=""
label="GOOGLE_ANALYTICS_ACCOUNT_4"
description="GOOGLE_ANALYTICS_ACCOUNT" />
				<field name="currency_4" type="text"
size="3" default="GBP"
label="GOOGLE_ANALYTICS_ACCOUNT_4_CURRENCY"
description="GOOGLE_ANALYTICS_ACCOUNT_CURRENCY" />

				<field name="account_5" type="text"
size="20" default=""
label="GOOGLE_ANALYTICS_ACCOUNT_5"
description="GOOGLE_ANALYTICS_ACCOUNT" />
				<field name="currency_5" type="text"
size="3" default="CAD"
label="GOOGLE_ANALYTICS_ACCOUNT_5_CURRENCY"
description="GOOGLE_ANALYTICS_ACCOUNT_CURRENCY" />

				<field name="single_submission" type="radio"
default="0" label="HIKA_SINGLE_SUBMISSION"
description="SINGLE_SUBMISSION" class="btn-group
btn-group-yesno">
					<option value="0">HIKASHOP_NO</option>
					<option value="1">HIKASHOP_YES</option>
				</field>

				<field name="debug_mode" type="radio"
default="0" label="ANALYTICS_DEBUG_MODE"
description="DEBUG_MODE" class="btn-group
btn-group-yesno">
					<option value="0">HIKASHOP_NO</option>
					<option value="1">HIKASHOP_YES</option>
				</field>

				<field type="spacer" label="EXTRA_MODULES"
/>
				<field name="module_linkid" type="radio"
default="0" label="ENHANCED_LINK_ATTRIBUTION"
description="" class="btn-group btn-group-yesno">
					<option value="0">HIKASHOP_NO</option>
					<option value="1">HIKASHOP_YES</option>
				</field>
				<field name="module_displayfeatures"
type="radio" default="0"
label="HIKA_ENABLING_DISPLAY_FEATURES"
description="ENABLING_DISPLAY_FEATURES" class="btn-group
btn-group-yesno">
					<option value="0">HIKASHOP_NO</option>
					<option value="1">HIKASHOP_YES</option>
				</field>
				<field name="universal_always_directcall"
type="radio" default="0"
label="ALWAYS_USE_DIRECT_CALL"
description="ANALYTICS_DIRECT_CALL" class="btn-group
btn-group-yesno">
					<option value="0">HIKASHOP_NO</option>
					<option value="1">HIKASHOP_YES</option>
				</field>
			</fieldset>
		</fields>
	</config>
</extension>
PK;��[�#o,,
index.htmlnu�[���<html><body
bgcolor="#FFFFFF"></body></html>PK;��[�p��]�]hikashopanalytics.phpnu�[���PK;��[�m3IOO(^hikashopanalytics.xmlnu�[���PK;��[�#o,,
�yindex.htmlnu�[���PK�"z