• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/helpers/admin/product.php
  • Класс: BitrixSaleHelpersAdminProduct
  • Вызов: Product::fillSetInfo
private function fillSetInfo($setIds)
{
	if(!$this->provider)
		return;

	if(!method_exists($this->provider, 'GetSetItems'))
		return;

	$provider = $this->provider;
	$childrenParent = array();
	$itemsIds = array();
	$items = array();

	if ($this->tmpId == "")
		$this->tmpId = randString(7);

	foreach($setIds as $id)
	{
		if ($this->catalogData[$id]["TYPE"] != CCatalogProduct::TYPE_SET)
			continue;

		$arSets = $provider::GetSetItems($id, CSaleBasket::TYPE_SET);

		if (empty($arSets))
			continue;

		foreach ($arSets as $arSetData)
		{
			foreach ($arSetData["ITEMS"] as $setItem)
			{
				$arSetItemParams = array();
				$arSetItemParams["PARENT_OFFER_ID"] = $id;
				$arSetItemParams["OFFER_ID"] = $setItem["PRODUCT_ID"];
				$arSetItemParams["NAME"] = $setItem["NAME"];
				$arSetItemParams["MODULE"] = $setItem["MODULE"];
				$arSetItemParams["PRODUCT_PROVIDER_CLASS"] = $setItem["PRODUCT_PROVIDER_CLASS"];
				$arSetItemParams["BARCODE_MULTI"] = $setItem["BARCODE_MULTI"];
				$arSetItemParams["PRODUCT_TYPE"] = $setItem["TYPE"];
				$arSetItemParams["WEIGHT"] = $setItem["WEIGHT"];
				$arSetItemParams["SET_ITEMS"] = "";
				$arSetItemParams["OLD_PARENT_ID"] = $id."_tmp".$this->tmpId;
				$arSetItemParams["IS_SET_ITEM"] = "Y";
				$arSetItemParams["IS_SET_PARENT"] = "N";
				$arSetItemParams["PROVIDER_DATA"] = serialize($setItem);
				$items[$id][$setItem["PRODUCT_ID"]] = $arSetItemParams;

				if(!in_array($setItem["PRODUCT_ID"], $itemsIds))
					$itemsIds[] = $setItem["PRODUCT_ID"];

				if(!is_array($childrenParent[$setItem["PRODUCT_ID"]]))
					$childrenParent[$setItem["PRODUCT_ID"]] = array();

				$childrenParent[$setItem["PRODUCT_ID"]][] = $id;
			}
		}

		$tmpData = self::getData($itemsIds, $this->siteId, $this->columnsList, $this->tmpId);

		foreach($childrenParent as $childId => $childData)
		{
			if(!is_array($childData))
				continue;

			if(empty($tmpData[$childId]))
				continue;

			foreach($childData as $productId)
			{
				if(empty($items[$productId][$childId]))
					continue;

				foreach($this->resultData[$productId]['SET_ITEMS'] as $set)
					if($set['OFFER_ID'] == $childId)
						continue(2);

				$this->resultData[$productId]['SET_ITEMS'][] = array_merge($tmpData[$childId], $items[$productId][$childId]);
				$this->resultData[$productId]["IS_SET_PARENT"] = empty($this->resultData[$productId]["SET_ITEMS"]) ? 'N' : 'Y';
				$this->resultData[$productId]["OLD_PARENT_ID"] = empty($this->resultData[$productId]["SET_ITEMS"]) ? '' : $productId."_tmp".$this->tmpId;
				$this->resultData[$productId]["PRODUCT_TYPE"] = empty($this->resultData[$productId]["SET_ITEMS"]) ? "" : CSaleBasket::TYPE_SET;
			}
		}
	}
}