Your IP : 216.73.216.86


Current Path : /var/www/homesaver/www/bitrix/modules/sale/lib/rest/synchronization/loader/
Upload File :
Current File : /var/www/homesaver/www/bitrix/modules/sale/lib/rest/synchronization/loader/product.php

<?php


namespace Bitrix\Sale\Rest\Synchronization\Loader;

use Bitrix\Main\ArgumentException;
use Bitrix\Main\Entity\DataManager;
use Bitrix\Main\Loader;
use Bitrix\Sale\Registry;

class Product extends Entity
{
	public function getFieldsByExternalId($code)
	{
		$result = array();

		Loader::includeModule('iblock');
		Loader::includeModule('catalog');

		$iblockIds = [];
		$row = \Bitrix\Catalog\CatalogIblockTable::getList([
			'select' => ['IBLOCK_ID'],
			'filter' => ['=IBLOCK.ACTIVE'=>'Y']
		]);
		while ($res = $row->fetch())
			$iblockIds[] = $res['IBLOCK_ID'];

		//TODO: необходимо переделать на вызов метода каталога, который на вход полчучает произвольный product_xml_id и возвращает продукт каталога.
		if (empty($iblockIds))
		{
				// nothing here
		}
		else
		{
			$r = \CIBlockElement::GetList(array(),
				array("=XML_ID" => $code, "ACTIVE" => "Y", "CHECK_PERMISSIONS" => "Y", "IBLOCK_ID"=>$iblockIds),
				false,
				false,
				array("ID", "IBLOCK_ID", "XML_ID", "NAME", "DETAIL_PAGE_URL")
			);
			if($ar = $r->GetNext())
			{
				$result = $ar;
				$product = \CCatalogProduct::GetByID($ar["ID"]);

				$result["WEIGHT"] = $product["WEIGHT"];
				$result["CATALOG_GROUP_NAME"] = $product["CATALOG_GROUP_NAME"];

				$productIBlock = static::getIBlockProduct($ar["IBLOCK_ID"]);
				$result["IBLOCK_XML_ID"] = $productIBlock[$ar["IBLOCK_ID"]]["XML_ID"];
			}
		}

		return $result;
	}

	public function getCodeAfterDelimiter($code)
	{
		$result = '';

		if(mb_strpos($code, '#') !== false)
		{
			$code = explode('#', $code);
			$result = $code[1];
		}
		return $result;
	}

	private static function getIBlockProduct($iblockId)
	{
		static $iblock_fields = null;

		if($iblock_fields[$iblockId] == null)
		{
			$r = \CIBlock::GetList(array(), array("ID" => $iblockId));
			if ($ar = $r->Fetch())
				$iblock_fields[$iblockId] = $ar;
		}
		return $iblock_fields;
	}
}