• Модуль: 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);
}