• Модуль: 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;
}