• Модуль: catalog
  • Путь к файлу: ~/bitrix/modules/catalog/lib/helpers/admin/catalogedit.php
  • Класс: BitrixCatalogHelpersAdminCatalogEdit
  • Вызов: CatalogEdit::prepareCatalogData
public function prepareCatalogData($catalogData)
{
	$checkedData = $this->updateData;
	if (!$this->isSuccess())
		return;

	if (empty($catalogData))
	{
		$this->errors[] = Loc::getMessage('BX_CAT_HELPER_ADMIN_CATALOGEDIT_ERR_EMPTY_DATA');
		return;
	}
	elseif (!is_array($catalogData))
	{
		$this->errors[] = Loc::getMessage('BX_CAT_HELPER_ADMIN_CATALOGEDIT_ERR_BAD_DATA');
		return;
	}

	if (!isset($catalogData['CATALOG']) || ($catalogData['CATALOG'] != 'Y' && $catalogData['CATALOG'] != 'N'))
		$this->errors[] = Loc::getMessage('BX_CAT_HELPER_ADMIN_CATALOGEDIT_ERR_FIELD_CATALOG_IS_ABSENT');

	if (!isset($catalogData['USE_SKU']) || ($catalogData['USE_SKU'] != 'Y' && $catalogData['USE_SKU'] != 'N'))
		$this->errors[] = Loc::getMessage('BX_CAT_HELPER_ADMIN_CATALOGEDIT_ERR_FIELD_USE_SKU_IS_ABSENT');

	if ($this->isEnableRecurring())
	{
		if (!isset($catalogData['SUBSCRIPTION']) || ($catalogData['SUBSCRIPTION'] != 'Y' && $catalogData['SUBSCRIPTION'] != 'N'))
			$this->errors[] = Loc::getMessage('BX_CAT_HELPER_ADMIN_CATALOGEDIT_ERR_FIELD_SUBSCRIPTION_IS_ABSENT');
	}

	if (!$this->isSuccess())
		return;

	if (!$this->simpleIblock)
	{
		if ($this->offerIblock && $catalogData['CATALOG'] == 'N')
			$this->errors[] = Loc::getMessage('BX_CAT_HELPER_ADMIN_CATALOGEDIT_ERR_OFFERS_ONLY_CATALOG');
		if ($this->isEnableRecurring() && $this->parentIblock && $catalogData['SUBSCRIPTION'] == 'Y')
			$this->errors[] = Loc::getMessage('BX_CAT_HELPER_ADMIN_CATALOGEDIT_ERR_PARENT_IBLOCK_WITH_SUBSCRIPTION');
		if ($this->offerIblock && $catalogData['USE_SKU'] == 'Y')
			$this->errors[] = Loc::getMessage('BX_CAT_HELPER_ADMIN_CATALOGEDIT_ERR_SKU_WITH_SKU');
	}

	if (!$this->isSuccess())
		return;

	$skuIblockId = 0;
	$skuCatalog = false;
	if ($catalogData['USE_SKU'] == 'Y')
	{
		if (!isset($catalogData['SKU']) || (int)$catalogData['SKU'] <= 0)
			$this->errors[] = Loc::getMessage('BX_CAT_HELPER_ADMIN_CATALOGEDIT_ERR_FIELD_SKU_IS_ABSENT');

		if ($this->isSuccess())
		{
			$skuIblockId = (int)$catalogData['SKU'];
			if ($skuIblockId == $this->iblockId)
				$this->errors[] = Loc::getMessage('BX_CAT_HELPER_ADMIN_CATALOGEDIT_ERR_SKU_SELF');

			if ($this->isSuccess())
			{
				$skuIblock = self::loadIblockFromDatabase($skuIblockId);
				if (empty($skuIblock))
					$this->errors[] = Loc::getMessage('BX_CAT_HELPER_ADMIN_CATALOGEDIT_ERR_SKU_BAD');
				unset($skuIblock);
			}

			if ($this->isSuccess())
			{
				$skuSiteList = self::loadIblockSitesFromDatabase($skuIblockId);
				if (empty($skuSiteList))
					$this->errors[] = Loc::getMessage('BX_CAT_HELPER_ADMIN_CATALOGEDIT_ERR_SKU_SITES_EMPTY');
				elseif ($this->iblockData['SITES'] != self::getSiteListString($skuSiteList, true))
					$this->errors[] = Loc::getMessage('BX_CAT_HELPER_ADMIN_CATALOGEDIT_ERR_SKU_SITES_NOT_EQUAL');
				unset($skuSiteList);
			}

			if ($this->isSuccess())
			{
				$skuCatalog = CCatalogSku::getInfoByIBlock($skuIblockId);
				if (!self::isSimpleIblock($skuCatalog))
				{
					if (self::isParentIblock($skuCatalog))
						$this->errors[] = Loc::getMessage('BX_CAT_HELPER_ADMIN_CATALOGEDIT_ERR_SKU_WITH_SKU');
					elseif (self::isOfferIblock($skuCatalog) && $skuCatalog['PRODUCT_IBLOCK_ID'] != $this->iblockId)
						$this->errors[] = Loc::getMessage('BX_CAT_HELPER_ADMIN_CATALOGEDIT_ERR_SKU_FROM_OTHER_IBLOCK');
				}
			}
		}
	}
	else
	{
		if (!$this->simpleIblock && $this->offerIblock)
		{
			if (!isset($catalogData['SKU']) || (int)$catalogData['SKU'] <= 0)
				$this->errors[] = Loc::getMessage('BX_CAT_HELPER_ADMIN_CATALOGEDIT_ERR_SKU_PARENT_IBLOCK_IS_ABSENT');
			elseif ($this->iblockCatalogData['PRODUCT_IBLOCK_ID'] != $catalogData['SKU'])
				$this->errors[] = Loc::getMessage('BX_CAT_HELPER_ADMIN_CATALOGEDIT_ERR_SKU_PARENT_IBLOCK_OTHER');
		}
	}

	if (!$this->isSuccess())
		return;

	if ($catalogData['CATALOG'] == 'Y')
	{
		if (!isset($catalogData['VAT_ID']))
			$this->errors[] = Loc::getMessage('BX_CAT_HELPER_ADMIN_CATALOGEDIT_ERR_VAT_ID_IS_ABSENT');
		elseif ((int)$catalogData['VAT_ID'] < 0)
			$this->errors[] = Loc::getMessage('BX_CAT_HELPER_ADMIN_CATALOGEDIT_ERR_BAD_VAT_ID');
		if (!isset($catalogData['YANDEX_EXPORT']))
			$this->errors[] = Loc::getMessage('BX_CAT_HELPER_ADMIN_CATALOGEDIT_ERR_YANDEX_EXPORT_IS_ABSENT');
		elseif ($catalogData['YANDEX_EXPORT'] != 'Y' && $catalogData['YANDEX_EXPORT'] != 'N')
			$this->errors[] = Loc::getMessage('BX_CAT_HELPER_ADMIN_CATALOGEDIT_ERR_BAD_YANDEX_EXPORT');
	}

	if (!$this->isSuccess())
		return;

	if ($catalogData['CATALOG'] != $this->iblockCatalogData['CATALOG'])
	{
		if ($catalogData['CATALOG'] == 'Y')
		{
			$this->catalogTableActions[$this->iblockId] = self::CATALOG_ACTION_ADD;
			if (!isset($checkedData[$this->iblockId]))
				$checkedData[$this->iblockId] = array();
			$checkedData[$this->iblockId]['IBLOCK_ID'] = $this->iblockId;
		}
		else
		{
			$this->catalogTableActions[$this->iblockId] = self::CATALOG_ACTION_DELETE;
			// TODO: set clear iblock
		}
	}

	if ($catalogData['USE_SKU'] != $this->iblockCatalogData['USE_SKU'])
	{
		if ($catalogData['USE_SKU'] == 'Y')
		{
			$newOffersIBlock = self::isSimpleIblock($skuCatalog);
			if ($newOffersIBlock || $skuCatalog['PRODUCT_IBLOCK_ID'] == 0)
			{
				if (!isset($checkedData[$skuIblockId]))
					$checkedData[$skuIblockId] = array();
				$checkedData[$skuIblockId]['PRODUCT_IBLOCK_ID'] = $this->iblockId;
				$checkedData[$skuIblockId]['SKU_PROPERTY_ID'] = 0;
				if ($newOffersIBlock)
					$checkedData[$skuIblockId]['IBLOCK_ID'] = $skuIblockId;
			}
			unset($newOffersIBlock);
		}
		else
		{

		}
	}

	$this->updateData = $checkedData;
}