- Модуль: iblock
- Путь к файлу: ~/bitrix/modules/iblock/lib/component/base.php
- Класс: BitrixIblockComponentBase
- Вызов: Base::loadMeasureRatios
protected function loadMeasureRatios(array $itemIds)
{
if (empty($itemIds))
return;
MainTypeCollection::normalizeArrayValuesByInt($itemIds, true);
if (empty($itemIds))
return;
$emptyRatioIds = array_fill_keys($itemIds, true);
$iterator = CatalogMeasureRatioTable::getList(array(
'select' => array('ID', 'RATIO', 'IS_DEFAULT', 'PRODUCT_ID'),
'filter' => array('@PRODUCT_ID' => $itemIds),
'order' => array('PRODUCT_ID' => 'ASC')// not add 'RATIO' => 'ASC' - result will be resorted after load prices
));
while ($row = $iterator->fetch())
{
$ratio = max((float)$row['RATIO'], (int)$row['RATIO']);
if ($ratio > CATALOG_VALUE_EPSILON)
{
$row['RATIO'] = $ratio;
$row['ID'] = (int)$row['ID'];
$id = (int)$row['PRODUCT_ID'];
if (!isset($this->ratios[$id]))
$this->ratios[$id] = array();
$this->ratios[$id][$row['ID']] = $row;
unset($emptyRatioIds[$id]);
unset($id);
}
unset($ratio);
}
unset($row, $iterator);
if (!empty($emptyRatioIds))
{
$emptyRatio = $this->getEmptyRatio();
foreach (array_keys($emptyRatioIds) as $id)
{
$this->ratios[$id] = array(
$emptyRatio['ID'] => $emptyRatio
);
}
unset($id, $emptyRatio);
}
unset($emptyRatioIds);
}