• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/sitebutton/guest.php
  • Класс: Bitrix\Crm\SiteButton\Guest
  • Вызов: Guest::runController
static function runController()
{
	$request = Context::getCurrent()->getRequest();
	$gid = $request->get('gid') ?: self::getCookieGuestId();
	$action = $request->get('a');
	$eventName = $request->get('e');
	$data = $request->get('d');
	if (is_string($data))
	{
		try
		{
			$data = Json::decode($data);
		}
		catch (\Exception $exception)
		{
		}
	}
	if (!is_array($data))
	{
		$data = [];
	}
	$answerData = array();

	switch ($action)
	{
		case 'reg':
			if (!$gid)
			{
				$answerData['gid'] = self::register();
			}
			break;

		case 'link':
			$answerData['gid'] = self::link($gid, $data);
			break;

		case 'storeTrace':
		case 'registerOrder':
			if (!empty($data['trace']))
			{
				Tracking\Trace::create($data['trace'])->useTraceDetecting(false)->save();
				Application::getInstance()->addBackgroundJob(
					function ()
					{
						Tracking\Internals\TraceTable::deleteUnusedTraces();
					}
				);
			}
			break;

		case 'event':
			if (self::checkEventName($eventName) && $gid)
			{
				self::sendEvent($eventName, $data);
				self::runAutomation($eventName, $gid);
			}
	}

	self::giveControllerResponse($answerData);
}