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/components/bitrix/currency.rates/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /home/bitrix/ext_www/rospirotorg.ru/bitrix/components/bitrix/currency.rates/component.php
<?php

if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)
{
	die();
}

use Bitrix\Main;
use Bitrix\Main\Loader;
use Bitrix\Main\Localization\Loc;
use Bitrix\Main\Config\Option;
use Bitrix\Currency;

/**
 * @var array $arParams
 * @var array $arResult
 */

$arParams['arrCURRENCY_FROM'] ??= [];
if (!is_array($arParams['arrCURRENCY_FROM']))
{
	$arParams['arrCURRENCY_FROM'] = [];
}

$arParams['arrCURRENCY_FROM'] = array_filter($arParams['arrCURRENCY_FROM']);

$arParams['CURRENCY_BASE'] = trim((string)($arParams['CURRENCY_BASE'] ?? ''));

$arParams['RATE_DAY'] = trim((string)($arParams['RATE_DAY'] ?? ''));

$arParams['SHOW_CB'] = ($arParams['SHOW_CB'] ?? null) == 'Y' ? 'Y' : 'N';
if ($arParams['CURRENCY_BASE'] !== 'RUB' && $arParams['CURRENCY_BASE'] !== 'RUR')
{
	$arParams['SHOW_CB'] = 'N';
}

$arParams['CACHE_TIME'] = (int)($arParams['CACHE_TIME'] ?? 86400);

if ($this->StartResultCache())
{
	if (!Loader::includeModule('currency'))
	{
		$this->AbortResultCache();
		ShowError(Loc::getMessage('CURRENCY_MODULE_NOT_INSTALLED'));

		return;
	}

	global $CACHE_MANAGER;

	$arResult = [];
	$arResult['CURRENCY'] = [];

	if ($arParams['CURRENCY_BASE'] === '')
	{
		$arParams['CURRENCY_BASE'] = Option::get('sale', 'default_currency');
	}

	if ($arParams['CURRENCY_BASE'] === '')
	{
		$arParams['CURRENCY_BASE'] = Currency\CurrencyManager::getBaseCurrency();
	}

	if ($arParams['CURRENCY_BASE'] !== '')
	{
		if ($arParams['RATE_DAY'] === '')
		{
			$arResult['RATE_DAY_TIMESTAMP'] = time();
		}
		else
		{
			$arRATE_DAY_PARSED = [
				'YYYY' => 0,
				'MM' => 0,
				'DD' => 0,
			];
			$parsed = [];
			if (preg_match('/^(\d{4})-(\d{2})-(\d{2})$/', $arParams['RATE_DAY'], $parsed))
			{
				$arRATE_DAY_PARSED = [
					'YYYY' => (int)$parsed[1],
					'MM' => (int)$parsed[2],
					'DD' => (int)$parsed[3],
				];
			}
			if (1901 > $arRATE_DAY_PARSED['YYYY'] || 2038 < $arRATE_DAY_PARSED['YYYY'])
			{
				$arResult['RATE_DAY_TIMESTAMP'] = time();
			}
			else
			{
				$arResult['RATE_DAY_TIMESTAMP'] = mktime(
					0,
					0,
					0,
					$arRATE_DAY_PARSED['MM'],
					$arRATE_DAY_PARSED['DD'],
					$arRATE_DAY_PARSED['YYYY']
				);
			}
		}
		$arResult['RATE_DAY_SHOW'] = ConvertTimeStamp($arResult['RATE_DAY_TIMESTAMP'], 'SHORT');

		if (!empty($arParams['arrCURRENCY_FROM']))
		{
			if ($arParams['SHOW_CB'] === 'Y')
			{
				$http = new Main\Web\HttpClient();
				$http->setRedirect(true);
				$strQueryText = $http->get(
					'https://www.cbr.ru/scripts/XML_daily.asp?date_req=' . date('d.m.Y', $arResult['RATE_DAY_TIMESTAMP'])
				);

				if (!empty($strQueryText))
				{
					$strQueryText = Main\Text\Encoding::convertEncoding($strQueryText, 'windows-1251', SITE_CHARSET);

					$strQueryText = preg_replace("#<!DOCTYPE[^>]+?>#i", "", $strQueryText);
					$strQueryText = preg_replace("#<"."\\?XML[^>]+?\\?".">#i", "", $strQueryText);

					$objXML = new CDataXML();
					$objXML->LoadString($strQueryText);
					$arData = $objXML->GetArray();

					$arFields = [];
					$arResult['CURRENCY_CBRF'] = [];

					if (!empty($arData) && is_array($arData))
					{
						if (!empty($arData["ValCurs"]) && is_array($arData["ValCurs"]))
						{
							if (!empty($arData["ValCurs"]["#"]) && is_array($arData["ValCurs"]["#"]))
							{
								if (!empty($arData["ValCurs"]["#"]["Valute"]) && is_array($arData["ValCurs"]["#"]["Valute"]))
								{
									foreach($arData["ValCurs"]["#"]["Valute"] as $arOneCBVal)
									{
										if (in_array($arOneCBVal["#"]["CharCode"][0]["#"], $arParams["arrCURRENCY_FROM"]))
										{
											$arCurrency = [
												"CURRENCY" => $arOneCBVal["#"]["CharCode"][0]["#"],
												"RATE_CNT" => (int)($arOneCBVal["#"]["Nominal"][0]["#"]),
												"RATE" => (float)(str_replace(",", ".", $arOneCBVal["#"]["Value"][0]["#"]))
											];

											$arResult["CURRENCY_CBRF"][] = [
												"FROM" => CCurrencyLang::CurrencyFormat($arCurrency["RATE_CNT"], $arCurrency["CURRENCY"], true),
												"BASE" => CCurrencyLang::CurrencyFormat($arCurrency["RATE"], $arParams["CURRENCY_BASE"], true),
											];
										}
									}
									unset($arOneCBVal);
								}
							}
						}
					}
				}
			}

			$currencyList = [];
			$iterator = Currency\CurrencyTable::getList([
				'select' => ['CURRENCY', 'AMOUNT_CNT'],
				'filter' => ['@CURRENCY' => $arParams["arrCURRENCY_FROM"]],
				'order' => ['CURRENCY' => 'ASC']
			]);
			while ($row = $iterator->fetch())
			{
				$currencyList[$row['CURRENCY']] = $row['CURRENCY'];
				$rate = CCurrencyRates::ConvertCurrency(
					$row['AMOUNT_CNT'],
					$row['CURRENCY'],
					$arParams['CURRENCY_BASE'],
					$arParams['RATE_DAY']
				);
				$arResult['CURRENCY'][] = [
					'FROM' => CCurrencyLang::CurrencyFormat($row['AMOUNT_CNT'], $row['CURRENCY'], true),
					'BASE' => CCurrencyLang::CurrencyFormat($rate, $arParams['CURRENCY_BASE'], true),
				];
				unset($rate);
			}
			unset($row, $iterator);

			if (!empty($currencyList) && defined('BX_COMP_MANAGED_CACHE'))
			{
				$currencyList[$arParams['CURRENCY_BASE']] = $arParams['CURRENCY_BASE'];

				$CACHE_MANAGER->StartTagCache($this->GetCachePath());
				foreach ($currencyList as $currency)
				{
					$CACHE_MANAGER->RegisterTag('currency_id_'.$currency);
				}
				unset($currency);
				$CACHE_MANAGER->EndTagCache();
			}
		}
	}

	$this->IncludeComponentTemplate();
}

Youez - 2016 - github.com/yon3zu
LinuXploit