예제 #1
0
 /**
  * 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);
 }