public static function __GetList(&$by, &$order, $lang = LANGUAGE_ID) { $lang = substr((string) $lang, 0, 2); $normalBy = strtolower($by); if ($normalBy != 'currency' && $normalBy != 'name') { $normalBy = 'sort'; $by = 'sort'; } $normalOrder = strtoupper($order); if ($normalOrder != 'DESC') { $normalOrder = 'ASC'; $order = 'asc'; } switch ($normalBy) { case 'currency': $currencyOrder = array('CURRENCY' => $normalOrder); break; case 'name': $currencyOrder = array('FULL_NAME' => $normalOrder); break; case 'sort': default: $currencyOrder = array('SORT' => $normalOrder); break; } unset($normalOrder, $normalBy); $datetimeField = Currency\CurrencyManager::getDatetimeExpressionTemplate(); $currencyIterator = Currency\CurrencyTable::getList(array('select' => array('CURRENCY', 'AMOUNT_CNT', 'AMOUNT', 'SORT', 'BASE', 'NUMCODE', 'CREATED_BY', 'MODIFIED_BY', new Main\Entity\ExpressionField('DATE_UPDATE_FORMAT', $datetimeField, array('DATE_UPDATE'), array('data_type' => 'datetime')), new Main\Entity\ExpressionField('DATE_CREATE_FORMAT', $datetimeField, array('DATE_CREATE'), array('data_type' => 'datetime')), 'FULL_NAME' => 'RT_LANG.FULL_NAME', 'LID' => 'RT_LANG.LID', 'FORMAT_STRING' => 'RT_LANG.FORMAT_STRING', 'DEC_POINT' => 'RT_LANG.DEC_POINT', 'THOUSANDS_SEP' => 'RT_LANG.THOUSANDS_SEP', 'DECIMALS' => 'RT_LANG.DECIMALS', 'HIDE_ZERO' => 'RT_LANG.HIDE_ZERO'), 'order' => $currencyOrder, 'runtime' => array('RT_LANG' => array('data_type' => 'Bitrix\\Currency\\CurrencyLang', 'reference' => array('=this.CURRENCY' => 'ref.CURRENCY', '=ref.LID' => new Main\DB\SqlExpression('?', $lang)))))); unset($datetimeField); $currencyList = array(); while ($currency = $currencyIterator->fetch()) { $currency['DATE_UPDATE'] = $currency['DATE_UPDATE_FORMAT']; $currency['DATE_CREATE'] = $currency['DATE_CREATE_FORMAT']; $currencyList[] = $currency; } unset($currency, $currencyIterator); $result = new CDBResult(); $result->InitFromArray($currencyList); return $result; }