- Модуль: iblock
- Путь к файлу: ~/bitrix/modules/iblock/lib/component/base.php
- Класс: BitrixIblockComponentBase
- Вызов: Base::transferItems
protected function transferItems(array &$items)
{
if (empty($items))
return;
$enableCompatible = $this->isEnableCompatible();
$urls = $this->storage['URLS'];
foreach (array_keys($items) as $index)
{
$itemId = $items[$index]['ID'];
// measure
if (!empty($items[$index]['ITEM_MEASURE']))
{
$id = (int)$items[$index]['ITEM_MEASURE']['ID'];
if (isset($this->measures[$id]))
{
$items[$index]['ITEM_MEASURE']['TITLE'] = $this->measures[$id]['TITLE'];
$items[$index]['ITEM_MEASURE']['~TITLE'] = $this->measures[$id]['~TITLE'];
}
unset($id);
}
// prices
$items[$index]['ITEM_MEASURE_RATIOS'] = $this->ratios[$itemId] ?? [];
$items[$index]['ITEM_MEASURE_RATIO_SELECTED'] = $this->searchItemSelectedRatioId($itemId);
$items[$index]['ITEM_QUANTITY_RANGES'] = $this->quantityRanges[$itemId] ?? [];
$items[$index]['ITEM_QUANTITY_RANGE_SELECTED'] = $this->searchItemSelectedQuantityRangeHash($itemId);
if (!empty($this->prices[$itemId]))
{
$items[$index] = array_merge($items[$index], $this->prices[$itemId]);
if (!empty($items[$index]['ITEM_PRICES']))
{
switch ($items[$index]['ITEM_PRICE_MODE'])
{
case CatalogProductTable::PRICE_MODE_SIMPLE:
$items[$index]['ITEM_PRICE_SELECTED'] = 0;
break;
case CatalogProductTable::PRICE_MODE_QUANTITY:
foreach (array_keys($items[$index]['ITEM_PRICES']) as $priceIndex)
{
if ($items[$index]['ITEM_PRICES'][$priceIndex]['QUANTITY_HASH'] == $items[$index]['ITEM_QUANTITY_RANGE_SELECTED'])
{
$items[$index]['ITEM_PRICE_SELECTED'] = $priceIndex;
break;
}
}
break;
case CatalogProductTable::PRICE_MODE_RATIO:
foreach (array_keys($items[$index]['ITEM_PRICES']) as $priceIndex)
{
if ($items[$index]['ITEM_PRICES'][$priceIndex]['MEASURE_RATIO_ID'] == $items[$index]['ITEM_MEASURE_RATIO_SELECTED'])
{
$items[$index]['ITEM_PRICE_SELECTED'] = $priceIndex;
break;
}
}
break;
}
}
}
// compatibility
if ($enableCompatible)
{
// old links to buy, add to basket, etc
$id = $items[$index]['ID'];
$items[$index]['~BUY_URL'] = str_replace('#ID#', $id, $urls['~BUY_URL_TEMPLATE']);
$items[$index]['BUY_URL'] = str_replace('#ID#', $id, $urls['BUY_URL_TEMPLATE']);
$items[$index]['~ADD_URL'] = str_replace('#ID#', $id, $urls['~ADD_URL_TEMPLATE']);
$items[$index]['ADD_URL'] = str_replace('#ID#', $id, $urls['ADD_URL_TEMPLATE']);
$items[$index]['~SUBSCRIBE_URL'] = str_replace('#ID#', $id, $urls['~SUBSCRIBE_URL_TEMPLATE']);
$items[$index]['SUBSCRIBE_URL'] = str_replace('#ID#', $id, $urls['SUBSCRIBE_URL_TEMPLATE']);
if ($this->arParams['DISPLAY_COMPARE'])
{
$items[$index]['~COMPARE_URL'] = str_replace('#ID#', $id, $urls['~COMPARE_URL_TEMPLATE']);
$items[$index]['COMPARE_URL'] = str_replace('#ID#', $id, $urls['COMPARE_URL_TEMPLATE']);
$items[$index]['~COMPARE_DELETE_URL'] = str_replace('#ID#', $id, $urls['~COMPARE_DELETE_URL_TEMPLATE']);
$items[$index]['COMPARE_DELETE_URL'] = str_replace('#ID#', $id, $urls['COMPARE_DELETE_URL_TEMPLATE']);
}
unset($id);
// old measure
$items[$index]['CATALOG_MEASURE_NAME'] = $items[$index]['ITEM_MEASURE']['TITLE'];
$items[$index]['~CATALOG_MEASURE_NAME'] = $items[$index]['ITEM_MEASURE']['~TITLE'];
// old measure ratio
$items[$index]['CATALOG_MEASURE_RATIO'] = $items[$index]['ITEM_MEASURE_RATIOS'][$items[$index]['ITEM_MEASURE_RATIO_SELECTED']]['RATIO'] ?? 1;
// old fields
if (!empty($this->oldData[$itemId]))
$items[$index] = array_merge($this->oldData[$itemId], $items[$index]);
}
unset($itemId);
}
unset($index);
unset($urls, $enableCompatible);
}