• Модуль: mobile
  • Путь к файлу: ~/bitrix/modules/mobile/lib/action.php
  • Класс: BitrixMobileAction
  • Вызов: Action::executeAction
public function executeAction($name, $params = [])
{

	global $USER;

	$actionDesc = $this->getAction($name);

	if ($actionDesc)
	{

		$isSessidValid = true;
		$needBitrixSessid = $actionDesc["needBitrixSessid"] ?? false;
		if ($needBitrixSessid == true || (array_key_exists("sessid", $_REQUEST) && $_REQUEST["sessid"] <> ''))
		{
			$isSessidValid = check_bitrix_sessid();
		}

		if (!isset($actionDesc["fireInitMobileEvent"]) || $actionDesc["fireInitMobileEvent"] != true)
		{
			if (!defined("MOBILE_INIT_EVENT_SKIP"))
			{
				define("MOBILE_INIT_EVENT_SKIP", true);
			}
		}

		$noCheckAuth = $actionDesc["no_check_auth"] ?? null;
		$file = $actionDesc["file"] ?? null;

		if ($noCheckAuth !== true && (!$USER->IsAuthorized() || !$isSessidValid))
		{
			Auth::setNotAuthorizedHeaders();
			echo json_encode(Auth::getNotAuthorizedResponse());
		}
		elseif ($file)
		{
			header("BX-Mobile-Action: " . $name);
			$json = $actionDesc["json"] ?? false;
			if ($json === true)
			{
				header("Content-Type: application/x-javascript");
				$data = include($file);
				if ($data)
				{
					$removeNulls = $actionDesc["removeNulls"] ?? false;
					if ($removeNulls)
					{
						echo json_encode(self::removeNulls($data));
					}
					else
					{
						echo json_encode($data);
					}
				}
			}
			else
			{
				include($file);
			}
		}
	}
	else
	{
		if (!defined("MOBILE_INIT_EVENT_SKIP"))
		{
			define("MOBILE_INIT_EVENT_SKIP", true);
		}

		header("Content-Type: application/x-javascript");
		echo json_encode(["error" => "unknown action for data request"]);
	}
}