public static function UnLinkSKUIBlock($ID) { global $APPLICATION; $arMsg = array(); $boolResult = true; $ID = (int) $ID; if (0 >= $ID) { $arMsg[] = array('id' => 'PRODUCT_IBLOCK_ID', 'text' => Loc::getMessage('BT_MOD_CATALOG_ERR_PRODUCT_ID_INVALID')); $boolResult = false; } if ($boolResult) { $rsCatalog = CCatalog::GetList(array(), array('PRODUCT_IBLOCK_ID' => $ID), false, false, array('IBLOCK_ID')); if ($arCatalog = $rsCatalog->Fetch()) { $arCatalog['IBLOCK_ID'] = (int) $arCatalog['IBLOCK_ID']; $arFields = array('PRODUCT_IBLOCK_ID' => 0, 'SKU_PROPERTY_ID' => 0); if (!CCatalog::Update($arCatalog['IBLOCK_ID'], $arFields)) { return false; } } } if (!$boolResult) { $obError = new CAdminException($arMsg); $APPLICATION->ResetException(); $APPLICATION->ThrowException($obError); } else { CCatalogSKU::ClearCache(); } return $boolResult; }
public static function LinkSKUIBlock($ID, $SKUID) { global $APPLICATION; global $DB; $arMsg = array(); $boolResult = true; $intSKUPropID = 0; $ibp = new CIBlockProperty(); $ID = (int) $ID; if (0 >= $ID) { $arMsg[] = array('id' => 'PRODUCT_IBLOCK_ID', 'text' => Loc::getMessage('BT_MOD_CATALOG_ERR_PRODUCT_ID_INVALID')); $boolResult = false; } $SKUID = (int) $SKUID; if (0 >= $SKUID) { $arMsg[] = array('id' => 'OFFERS_IBLOCK_ID', 'text' => Loc::getMessage('BT_MOD_CATALOG_ERR_OFFERS_ID_INVALID')); $boolResult = false; } if ($ID == $SKUID) { $arMsg[] = array('id' => 'OFFERS_IBLOCK_ID', 'text' => Loc::getMessage('BT_MOD_CATALOG_ERR_PRODUCT_ID_SELF')); $boolResult = false; } if ($boolResult) { $arSKUProp = false; $rsProps = CIBlockProperty::GetList(array(), array('IBLOCK_ID' => $SKUID, 'PROPERTY_TYPE' => 'E', 'LINK_IBLOCK_ID' => $ID, 'ACTIVE' => 'Y')); while ($arProp = $rsProps->Fetch()) { if (is_array($arProp) && 'N' == $arProp['MULTIPLE']) { $arSKUProp = $arProp; break; } } if (false === $arSKUProp || is_array($arSKUProp) && 'N' != $arSKUProp['MULTIPLE']) { $arOFProperty = array('NAME' => Loc::getMessage('BT_MOD_CATALOG_MESS_SKU_PROP_NAME'), 'IBLOCK_ID' => $SKUID, 'PROPERTY_TYPE' => 'E', 'USER_TYPE' => 'SKU', 'LINK_IBLOCK_ID' => $ID, 'ACTIVE' => 'Y', 'SORT' => '5', 'MULTIPLE' => 'N', 'CODE' => 'CML2_LINK', 'XML_ID' => 'CML2_LINK', "FILTRABLE" => "Y", "SEARCHABLE" => "N"); $intSKUPropID = $ibp->Add($arOFProperty); if (!$intSKUPropID) { $arMsg[] = array('id' => 'SKU_PROPERTY_ID', 'text' => str_replace('#ERROR#', $ibp->LAST_ERROR, Loc::getMessage('BT_MOD_CATALOG_ERR_CREATE_SKU_PROPERTY'))); $boolResult = false; } } elseif ('SKU' != $arSKUProp['USER_TYPE'] || 'CML2_LINK' != $arProp['XML_ID']) { $arFields = array('USER_TYPE' => 'SKU', 'XML_ID' => 'CML2_LINK'); $boolFlag = $ibp->Update($arSKUProp['ID'], $arFields); if (false === $boolFlag) { $arMsg[] = array('id' => 'SKU_PROPERTY_ID', 'text' => str_replace('#ERROR#', $ibp->LAST_ERROR, Loc::getMessage('BT_MOD_CATALOG_ERR_UPDATE_SKU_PROPERTY'))); $boolResult = false; } else { $intSKUPropID = $arSKUProp['ID']; } } else { $intSKUPropID = $arSKUProp['ID']; } } if (!$boolResult) { $obError = new CAdminException($arMsg); $APPLICATION->ResetException(); $APPLICATION->ThrowException($obError); return $boolResult; } else { CCatalogSKU::ClearCache(); return $intSKUPropID; } }