- Модуль: currency
- Путь к файлу: ~/bitrix/modules/currency/lib/currencymanager.php
- Класс: BitrixCurrencyCurrencyManager
- Вызов: CurrencyManager::updateBaseCurrency
static function updateBaseCurrency($currency): bool
{
/** @global CUser $USER */
global $USER;
$currency = CurrencyManager::checkCurrencyID($currency);
if ($currency === false)
return false;
$event = new MainEvent(
'currency',
self::EVENT_ON_UPDATE_BASE_CURRENCY,
[
'NEW_BASE_CURRENCY' => $currency,
]
);
$event->send();
unset($event);
$conn = MainApplication::getConnection();
$helper = $conn->getSqlHelper();
$userID = (isset($USER) && $USER instanceof CUser ? (int)$USER->getID() : 0);
$tableName = $helper->quote(CurrencyTable::getTableName());
$baseField = $helper->quote('BASE');
$dateUpdateField = $helper->quote('DATE_UPDATE');
$modifiedByField = $helper->quote('MODIFIED_BY');
$amountField = $helper->quote('AMOUNT');
$amountCntField = $helper->quote('AMOUNT_CNT');
$currencyField = $helper->quote('CURRENCY');
$query = 'update '.$tableName.' set '.$baseField.' = 'N', '.
$dateUpdateField.' = '.$helper->getCurrentDateTimeFunction().', '.
$modifiedByField.' = '.($userID == 0 ? 'NULL' : $userID).
' where '.$currencyField.' <> ''.$helper->forSql($currency).'' and '.$baseField.' = 'Y'';
$conn->queryExecute($query);
$query = 'update '.$tableName.' set '.$baseField.' = 'Y', '.
$dateUpdateField.' = '.$helper->getCurrentDateTimeFunction().', '.
$modifiedByField.' = '.($userID == 0 ? 'NULL' : $userID).', '.
$amountField.' = 1, '.$amountCntField.' = 1 where '.$currencyField.' = ''.$helper->forSql($currency).''';
$conn->queryExecute($query);
static::updateBaseRates();
$event = new MainEvent(
'currency',
self::EVENT_ON_AFTER_UPDATE_BASE_CURRENCY,
[
'NEW_BASE_CURRENCY' => $currency,
]
);
$event->send();
unset($event);
self::$baseCurrency = null;
return true;
}