403Webshell
Server IP : 80.87.202.40  /  Your IP : 216.73.216.169
Web Server : Apache
System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64
User : bitrix ( 600)
PHP Version : 8.2.27
Disable Function : NONE
MySQL : OFF |  cURL : ON |  WGET : ON |  Perl : ON |  Python : OFF |  Sudo : ON |  Pkexec : ON
Directory :  /home/bitrix/ext_www/rospirotorg.ru/bitrix/js/ui/analytics/src/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /home/bitrix/ext_www/rospirotorg.ru/bitrix/js/ui/analytics/src/functions.js
import { ajax as Ajax, Extension, Type } from 'main.core';
import type { AnalyticsOptions } from './types';

function isValidAnalyticsData(analytics: AnalyticsOptions): boolean
{
	if (!Type.isPlainObject(analytics))
	{
		console.error('BX.UI.Analytics: {analytics} must be an object.');

		return false;
	}

	const requiredFields = ['event', 'tool', 'category'];
	for (const field of requiredFields)
	{
		if (!Type.isStringFilled(analytics[field]))
		{
			console.error(`BX.UI.Analytics: The "${field}" property in the "analytics" object must be a non-empty string.`);

			return false;
		}
	}

	const additionalFields = ['p1', 'p2', 'p3', 'p4', 'p5'];
	for (const field of additionalFields)
	{
		const value = analytics[field];
		if (!Type.isStringFilled(value))
		{
			continue;
		}

		if (value.split('_').length > 2)
		{
			console.error(`BX.UI.Analytics: The "${field}" property (${value}) in the "analytics" object must be a string containing a single underscore.`);

			return false;
		}
	}

	return true;
}

function buildUrlByData(data: AnalyticsOptions): string
{
	const url = new URL('/_analytics/', window.location.origin);

	const queryParams = [];
	for (const [key, value] of Object.entries(data))
	{
		queryParams.push(`st[${key}]=${encodeURIComponent(value)}`);
	}
	url.search = queryParams.join('&');

	return url.toString();
}

export function sendAnalyticsData(analytics: AnalyticsOptions): void
{
	if (!isValidAnalyticsData(analytics))
	{
		return;
	}

	const settings = Extension.getSettings('ui.analytics');
	const collectData = settings.get('collectData', false);
	if (!collectData)
	{
		return;
	}

	void Ajax({
		method: 'GET',
		url: buildUrlByData(analytics),
	});
}

Youez - 2016 - github.com/yon3zu
LinuXploit