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.money.input/ |
Upload File : |
<?php if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) { die(); } /** * Bitrix vars * * @var array $arParams * @var array $arResult * @global CMain $APPLICATION */ use Bitrix\Currency; use Bitrix\Currency\UserField\Types\MoneyType; use Bitrix\Main\Loader; use Bitrix\Main\Localization\Loc; use Bitrix\Main\Security\Random; use Bitrix\Main\SystemException; use Bitrix\Main\UI\Extension; class CCurrencyMoneyInputComponent extends \CBitrixComponent { protected array $currencyList = []; /** * Load language file. */ public function onIncludeComponentLang(): void { $this->includeComponentLang(basename(__FILE__)); Loc::loadMessages(__FILE__); } public function onPrepareComponentParams($params) { $params['CONTROL_ID'] = trim((string)($params['CONTROL_ID'] ?? '')); if ($params['CONTROL_ID'] === '') { $params['CONTROL_ID'] = 'bxme_' . Random::getString(5); } $params['FIELD_NAME'] = trim((string)($params['FIELD_NAME'] ?? '')); if ($params['FIELD_NAME'] === '') { $params['FIELD_NAME'] = 'money_' . Random::getString(5); } $params['FIELD_NAME_CURRENCY'] = trim((string)($params['FIELD_NAME_CURRENCY'] ?? '')); $params['VALUE'] = trim((string)($params['VALUE'] ?? '')); $params['EXTENDED_CURRENCY_SELECTOR'] = ($params['EXTENDED_CURRENCY_SELECTOR'] ?? null) === 'Y' ? 'Y' : 'N' ; return $params; } /** * Check Required Modules * * @return bool */ protected function checkModules(): bool { return Loader::includeModule('currency'); } protected function prepareData(): void { $this->currencyList = Currency\Helpers\Editor::getListCurrency(); } protected function formatResult(): void { $this->arResult['CURRENCY_LIST'] = []; $defaultCurrency = ''; foreach ($this->currencyList as $currency => $currencyInfo) { if ($defaultCurrency === '' || $currencyInfo['BASE'] === 'Y') { $defaultCurrency = $currency; } $this->arResult['CURRENCY_LIST'][$currency] = $currencyInfo['NAME']; } $value = ''; if ($this->arParams['VALUE'] !== '') { list($value, $currency) = MoneyType::unFormatFromDb($this->arParams['VALUE']); $value = $this->formatNumber($value, $currency); if ($currency !== '' && !isset($this->arResult['CURRENCY_LIST'][$currency])) { $this->arResult['CURRENCY_LIST'][$currency] = $currency; } } else { $currency = $defaultCurrency; } $this->arResult['VALUE_NUMBER'] = $value; $this->arResult['VALUE_CURRENCY'] = $currency; } protected function formatNumber($currentValue, $currentCurrency): string { if ($currentValue !== '') { $currentValue = \CCurrencyLang::formatEditValue( $currentValue, \CCurrencyLang::GetFormatDescription($currentCurrency) ); } return $currentValue; } protected function initCore(): void { $extensions = [ 'core_money_editor', ]; if ($this->arParams['EXTENDED_CURRENCY_SELECTOR'] === 'Y') { $extensions[] = 'ui'; } Extension::load($extensions); } public function executeComponent() { if ($this->checkModules()) { $this->prepareData(); $this->formatResult(); $this->initCore(); $this->includeComponentTemplate(); } else { ShowError(Loc::getMessage('CMI_CURRENCY_MODULE_NOT_INSTALLED')); } } }