/**
  * @return void
  */
 public static function clearCurrencyCache()
 {
     $currencyTableName = CurrencyTable::getTableName();
     $managedCache = Application::getInstance()->getManagedCache();
     $managedCache->clean(self::CACHE_CURRENCY_LIST_ID, $currencyTableName);
     $languageIterator = LanguageTable::getList(array('select' => array('ID')));
     while ($oneLanguage = $languageIterator->fetch()) {
         $managedCache->clean(self::CACHE_CURRENCY_LIST_ID . '_' . $oneLanguage['ID'], $currencyTableName);
     }
     unset($oneLanguage, $languageIterator);
     $managedCache->clean(self::CACHE_BASE_CURRENCY_ID, $currencyTableName);
     global $stackCacheManager;
     $stackCacheManager->Clear('currency_rate');
     $stackCacheManager->Clear('currency_currency_lang');
 }
 /**
  * Update base currency.
  *
  * @param string $currency			Currency id.
  * @return bool
  */
 public static function updateBaseCurrency($currency)
 {
     /** @global \CUser $USER */
     global $USER;
     $currency = CurrencyManager::checkCurrencyID($currency);
     if ($currency === false) {
         return false;
     }
     $event = new Main\Event('currency', self::EVENT_ON_UPDATE_BASE_CURRENCY, array('NEW_BASE_CURRENCY' => $currency));
     $event->send();
     unset($event);
     $conn = Main\Application::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 Main\Event('currency', self::EVENT_ON_AFTER_UPDATE_BASE_CURRENCY, array('NEW_BASE_CURRENCY' => $currency));
     $event->send();
     unset($event);
     self::$baseCurrency = '';
     return true;
 }