/** * Update current currencies rates to base currency. * * @param string $updateCurrency Update currency id. * @return void * @throws Main\ArgumentException * @throws \Exception */ public static function updateBaseRates($updateCurrency = '') { $currency = (string) static::getBaseCurrency(); if ($currency === '') { return; } $currencyIterator = CurrencyTable::getList(array('select' => array('CURRENCY', 'CURRENT_BASE_RATE'), 'filter' => $updateCurrency == '' ? array() : array('=CURRENCY' => $updateCurrency))); while ($existCurrency = $currencyIterator->fetch()) { $baseRate = $existCurrency['CURRENCY'] != $currency ? \CCurrencyRates::getConvertFactorEx($existCurrency['CURRENCY'], $currency) : 1; $updateResult = CurrencyTable::update($existCurrency['CURRENCY'], array('CURRENT_BASE_RATE' => $baseRate)); if ($updateResult->isSuccess()) { $event = new Main\Event('currency', self::EVENT_ON_AFTER_UPDATE_BASE_RATE, array('OLD_BASE_RATE' => (double) $existCurrency['CURRENT_BASE_RATE'], 'CURRENT_BASE_RATE' => $baseRate, 'BASE_CURRENCY' => $currency, 'CURRENCY' => $existCurrency['CURRENCY'])); $event->send(); } unset($updateResult); unset($baseRate); } unset($existCurrency, $currencyIterator); }