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