• Модуль: ui
  • Путь к файлу: ~/bitrix/modules/ui/lib/Currency/CurrencyFormat.php
  • Класс: BitrixUICurrencyCurrencyFormat
  • Вызов: CurrencyFormat::getFormatFromApi
static function getFormatFromApi(array $langSetting): array
{
	$result = [];
	$apiCurrencyFormat = Option::get('bitrix24', 'currency_format_from_api', '');

	if ($apiCurrencyFormat !== '')
	{
		$resultOption = Json::decode($apiCurrencyFormat);
		if (
			isset($resultOption['time'])
			&& isset($resultOption['currencyFormat'])
			&& (((int)$resultOption['time'] + 60*60) > time())
		)
		{
			return $resultOption['currencyFormat'];
		}
	}

	$httpClient = new HttpClient();
	if (isset($langSetting['ID']) && isset($langSetting['LANGUAGE_ID']) && isset($langSetting['CURRENCY']))
	{
		$locationAreaId = $langSetting['ID'];
		$languageId = $langSetting['LANGUAGE_ID'];
		$currencyCode = $langSetting['CURRENCY'];
		$url = 'https://util.1c-bitrix.ru/b24/catalog/get.php?currencyCode=' . $currencyCode . '&productType=CLOUD'
			   . '&locationAreaId=' . $locationAreaId . '&languageId=' . $languageId . '&requestData=formatting'
		;

		$resultRequest = $httpClient->get($url);
		if ($resultRequest)
		{
			if ($httpClient->getStatus() === 200)
			{
				try
				{
					$resultDecode = Json::decode($resultRequest);
				}
				catch (ArgumentException $e)
				{
				}

				if (
					!empty($resultDecode["result"]["formatting"])
					&& is_array($resultDecode["result"]["formatting"])
				)
				{
					$result = $resultDecode["result"]["formatting"]["separators"];
					$resultToOption = ['time' => time(), 'currencyFormat' => $result];
					Option::set('bitrix24', 'currency_format_from_api', JSON::encode($resultToOption));
				}
			}
		}
	}

	return $result;
}