public static function getOfferObject(array $offerParams) { if (!isset($offerParams["IBLOCK_ID"]) || intval($offerParams["IBLOCK_ID"]) <= 0) { throw new SystemException("Incorrect iBlock ID (" . __CLASS__ . "::" . __METHOD__ . ")"); } $arCatalog = \CCatalog::GetByIDExt($offerParams["IBLOCK_ID"]); if (empty($arCatalog)) { throw new SystemException("IBlock is not catalog. (" . __CLASS__ . "::" . __METHOD__ . ")"); } $catalogType = $arCatalog["CATALOG_TYPE"]; $catalogTypes = \CCatalogSKU::GetCatalogTypes(); if (!in_array($catalogType, $catalogTypes)) { throw new SystemException("Unknown type of catalog (" . __CLASS__ . "::" . __METHOD__ . ")"); } $result = array(); switch ($catalogType) { case \CCatalogSKU::TYPE_CATALOG: case \CCatalogSKU::TYPE_OFFERS: $result = new ExportOffer($catalogType, $offerParams); break; case \CCatalogSKU::TYPE_PRODUCT: case \CCatalogSKU::TYPE_FULL: $result = new ExportOfferSKU($catalogType, $offerParams); break; } return $result; }
$arWorkflowTemplates = CBPDocument::GetWorkflowTemplatesForDocumentType(array("iblock", "CIBlockDocument", "iblock_" . $ID)); foreach ($arWorkflowTemplates as $t) { $create_bizproc = array_key_exists("create_bizproc_" . $t["ID"], $_REQUEST) && $_REQUEST["create_bizproc_" . $t["ID"]] == "Y"; $edit_bizproc = array_key_exists("edit_bizproc_" . $t["ID"], $_REQUEST) && $_REQUEST["edit_bizproc_" . $t["ID"]] == "Y"; $create_bizproc1 = ($t["AUTO_EXECUTE"] & 1) != 0; $edit_bizproc1 = ($t["AUTO_EXECUTE"] & 2) != 0; if ($create_bizproc != $create_bizproc1 || $edit_bizproc != $edit_bizproc1) { CBPDocument::UpdateWorkflowTemplate($t["ID"], array("iblock", "CIBlockDocument", "iblock_" . $ID), array("AUTO_EXECUTE" => ($create_bizproc ? 1 : 0) | ($edit_bizproc ? 2 : 0)), $arErrorsTmp); } } } if (!$bVarsFromForm && $bCatalog) { $boolNeedAgent = false; $boolFlag = true; $obCatalog = new CCatalog(); $arCatalog = $obCatalog->GetByIDExt($ID); if (!isset($IS_CATALOG) || 'Y' != $IS_CATALOG && 'N' != $IS_CATALOG) { $bVarsFromForm = true; $strWarning .= GetMessage('IB_E_OF_ERR_IS_CATALOG') . '<br>'; } if (!isset($SUBSCRIPTION) || 'Y' != $SUBSCRIPTION && 'N' != $SUBSCRIPTION) { $bVarsFromForm = true; $strWarning .= GetMessage('IB_E_OF_ERR_SUBSCRIPTION') . '<br>'; } if (!$bVarsFromForm) { if ('Y' == $IS_CATALOG || 'Y' == $SUBSCRIPTION) { if (!isset($YANDEX_EXPORT) || 'Y' != $YANDEX_EXPORT && 'N' != $YANDEX_EXPORT) { $bVarsFromForm = true; $strWarning .= GetMessage('IB_E_OF_ERR_YANDEX_EXPORT') . '<br>'; } if (!isset($VAT_ID)) {
} //filter props $dbrFProps = CIBlockProperty::GetList(array("SORT" => "ASC", "NAME" => "ASC"), array("IBLOCK_ID" => $iblockID, "ACTIVE" => "Y", "FILTRABLE" => "Y", "!PROPERTY_TYPE" => "F", "CHECK_PERMISSIONS" => "N")); $arProps = array(); while ($arProp = $dbrFProps->GetNext()) { if (strlen($arProp["USER_TYPE"]) > 0) { $arUserType = CIBlockProperty::GetUserType($arProp["USER_TYPE"]); } else { $arUserType = array(); } $arProp["PROPERTY_USER_TYPE"] = $arUserType; $arProps[] = $arProp; } //filter sku props $arSKUProps = array(); $arCatalog = CCatalog::GetByIDExt($iblockID); if ($arCatalog["OFFERS_IBLOCK_ID"] > 0) { $dbrFProps = CIBlockProperty::GetList(array("SORT" => "ASC", "NAME" => "ASC"), array("IBLOCK_ID" => $arCatalog["OFFERS_IBLOCK_ID"], "ACTIVE" => "Y", "FILTRABLE" => "Y", "!PROPERTY_TYPE" => "F", "CHECK_PERMISSIONS" => "N")); while ($arProp = $dbrFProps->GetNext()) { if (strlen($arProp["USER_TYPE"]) > 0) { $arUserType = CIBlockProperty::GetUserType($arProp["USER_TYPE"]); } else { $arUserType = array(); } $arProp["PROPERTY_USER_TYPE"] = $arUserType; $arSKUProps[] = $arProp; } } $arFilter = array("WF_PARENT_ELEMENT_ID" => false, "IBLOCK_ID" => $IBLOCK_ID, "SECTION_ID" => $filter_section, "ACTIVE" => $filter_active, "%NAME" => $filter_product_name, "%SEARCHABLE_CONTENT" => $filter_intext, "SHOW_NEW" => "Y"); if (count($arProps) > 0) { foreach ($arProps as $arProp) {
$arSelectedPropTypes = array('S','N','L','E','G'); $arOffersSelectKeys = array( YANDEX_SKU_EXPORT_ALL, YANDEX_SKU_EXPORT_MIN_PRICE, YANDEX_SKU_EXPORT_PROP, ); $arCondSelectProp = array( 'ZERO', 'NONZERO', 'EQUAL', 'NONEQUAL', ); $arPropertyMap = array(); $arSKUExport = array(); $arCatalog = CCatalog::GetByIDExt($IBLOCK_ID); if (empty($arCatalog)) { $arRunErrors[] = str_replace('#ID#', $IBLOCK_ID, GetMessage('YANDEX_ERR_NO_IBLOCK_IS_CATALOG')); } else { $arOffers = CCatalogSKU::GetInfoByProductIBlock($IBLOCK_ID); if (!empty($arOffers['IBLOCK_ID'])) { $intOfferIBlockID = $arOffers['IBLOCK_ID']; $rsOfferIBlocks = CIBlock::GetByID($intOfferIBlockID); if (($arOfferIBlock = $rsOfferIBlocks->Fetch())) { $boolOffers = true; $rsProps = CIBlockProperty::GetList(array('SORT' => 'ASC'),array('IBLOCK_ID' => $intOfferIBlockID,'ACTIVE' => 'Y'));
); define("MODULE_ID", "iblock"); define("ENTITY", "CIBlockDocument"); define("DOCUMENT_TYPE", "iblock_".$IBLOCK_ID); $bCatalog = CModule::IncludeModule("catalog"); $arCatalog = false; $boolSKU = false; $boolSKUFiltrable = false; $strSKUName = ''; $uniq_id = 0; if ($bCatalog) { $arCatalog = CCatalog::GetByIDExt($arIBlock["ID"]); if (false == is_array($arCatalog)) { $bCatalog = false; } else { if ($arCatalog['CATALOG_TYPE'] == 'P' || $arCatalog['CATALOG_TYPE'] == 'X') { if (CIBlockRights::UserHasRightTo($arCatalog['OFFERS_IBLOCK_ID'], $arCatalog['OFFERS_IBLOCK_ID'], "iblock_admin_display")) { $boolSKU = true; $strSKUName = GetMessage('IBEL_A_OFFERS'); } } if ('P' == $arCatalog['CATALOG_TYPE'])
); $hintUnit = Array( 'length' => 'mm', 'mass' => 'g' ); $boolAll = false; $intCountChecked = 0; $intCountAvailIBlock = 0; $arIBlockList = array(); $db_res = CIBlock::GetList(Array("IBLOCK_TYPE"=>"ASC", "NAME"=>"ASC"),array('CHECK_PERMISSIONS' => 'Y','MIN_PERMISSION' => 'W')); while ($iblock = $db_res->Fetch()) { if ($arCatalog = CCatalog::GetByIDExt($iblock["ID"])) { if($arCatalog['CATALOG_TYPE'] == "D" || $arCatalog['CATALOG_TYPE'] == "X" || $arCatalog['CATALOG_TYPE'] == "P") { $propertiesSKU = null; if ($arCatalog['CATALOG_TYPE'] == "X" || $arCatalog['CATALOG_TYPE'] == "P") { $iblockOffer = CCatalogSKU::GetInfoByProductIBlock($iblock["ID"]); $db_properties = CIBlock::GetProperties($iblockOffer['IBLOCK_ID'], Array()); while($prop = $db_properties->Fetch()) $propertiesSKU[] = $prop; $oldPropertySKU = null; if (isset($IBLOCK_PROPERTY_SKU[$iblock['ID']])) { foreach ($iblockPropertiesName as $key => $prop) {
COption::SetOptionString('catalog', 'default_use_store_control', $strUseStoreControl); /* $strDiscountVat = (!empty($_REQUEST['discount_vat']) && $_REQUEST['discount_vat'] == 'N' ? 'N' : 'Y'); COption::SetOptionString('catalog', 'discount_vat', $strDiscountVat); */ $bNeedAgent = false; $boolFlag = true; $arCurrentIBlocks = array(); $arNewIBlocksList = array(); $rsIBlocks = CIBlock::GetList(array()); while ($arOneIBlock = $rsIBlocks->Fetch()) { // Current info $arIBlockItem = array(); $arOneCatalog = CCatalog::GetByIDExt($arOneIBlock['ID']); $arIBlockSitesList = array(); $rsIBlockSites = CIBlock::GetSite($arOneIBlock['ID']); while ($arIBlockSite = $rsIBlockSites->Fetch()) { $arIBlockSitesList[] = htmlspecialcharsbx($arIBlockSite['SITE_ID']); } $strInfo = '['.$arOneIBlock['IBLOCK_TYPE_ID'].'] '.htmlspecialcharsbx($arOneIBlock['NAME']).' ('.implode(' ',$arIBlockSitesList).')'; $arIBlockItem = array( 'INFO' => $strInfo, 'ID' => $arOneIBlock['ID'], 'NAME' => $arOneIBlock['NAME'], 'SITE_ID' => $arIBlockSitesList, 'IBLOCK_TYPE_ID' => $arOneIBlock['IBLOCK_TYPE_ID'],
$rsIBlocks = CIBlock::GetList(array('IBLOCK_TYPE' => 'ASC', 'NAME' => 'ASC')); while ($arIBlock = $rsIBlocks->Fetch()) { if (false == array_key_exists($arIBlock['ID'], $arIBlockSitesList)) { $arLIDList = array(); $arWithLinks = array(); $arWithoutLinks = array(); $rsIBlockSites = CIBlock::GetSite($arIBlock['ID']); while ($arIBlockSite = $rsIBlockSites->Fetch()) { $arLIDList[] = $arIBlockSite['LID']; $arWithLinks[] = '<a href="/bitrix/admin/site_edit.php?LID=' . urlencode($arIBlockSite['LID']) . '&lang=' . LANGUAGE_ID . '" title="' . GetMessage("CO_SITE_ALT") . '">' . htmlspecialcharsbx($arIBlockSite["LID"]) . '</a>'; $arWithoutLinks[] = htmlspecialcharsbx($arIBlockSite['LID']); } $arIBlockSitesList[$arIBlock['ID']] = array('SITE_ID' => $arLIDList, 'WITH_LINKS' => implode(' ', $arWithLinks), 'WITHOUT_LINKS' => implode(' ', $arWithoutLinks)); } $arIBlockItem = array('ID' => $arIBlock['ID'], 'IBLOCK_TYPE_ID' => $arIBlock['IBLOCK_TYPE_ID'], 'SITE_ID' => $arIBlockSitesList[$arIBlock['ID']]['SITE_ID'], 'NAME' => htmlspecialcharsbx($arIBlock['NAME']), 'ACTIVE' => $arIBlock['ACTIVE'], 'FULL_NAME' => '[' . $arIBlock['IBLOCK_TYPE_ID'] . '] ' . htmlspecialcharsbx($arIBlock['NAME']) . ' (' . $arIBlockSitesList[$arIBlock['ID']]['WITHOUT_LINKS'] . ')', 'IS_CATALOG' => 'N', 'IS_CONTENT' => 'N', 'YANDEX_EXPORT' => 'N', 'VAT_ID' => 0, 'PRODUCT_IBLOCK_ID' => 0, 'SKU_PROPERTY_ID' => 0, 'OFFERS_IBLOCK_ID' => 0, 'IS_OFFERS' => 'N', 'OFFERS_PROPERTY_ID' => 0, 'CATALOG_TYPE' => ''); $ar_res1 = CCatalog::GetByIDExt($arIBlock['ID']); if (true == is_array($ar_res1)) { $arIBlockItem['IS_CATALOG'] = $ar_res1['CATALOG']; $arIBlockItem['IS_CONTENT'] = CBXFeatures::IsFeatureEnabled('SaleRecurring') ? $ar_res1['SUBSCRIPTION'] : 'N'; $arIBlockItem['YANDEX_EXPORT'] = $ar_res1['YANDEX_EXPORT']; $arIBlockItem['VAT_ID'] = $ar_res1['VAT_ID']; $arIBlockItem['PRODUCT_IBLOCK_ID'] = $ar_res1['PRODUCT_IBLOCK_ID']; $arIBlockItem['SKU_PROPERTY_ID'] = $ar_res1['SKU_PROPERTY_ID']; $arIBlockItem['OFFERS_IBLOCK_ID'] = $ar_res1['OFFERS_IBLOCK_ID']; $arIBlockItem['OFFERS_PROPERTY_ID'] = $ar_res1['OFFERS_PROPERTY_ID']; if (0 < $ar_res1['PRODUCT_IBLOCK_ID']) { $arIBlockItem['IS_OFFERS'] = 'Y'; } $arIBlockItem['CATALOG_TYPE'] = $ar_res1['CATALOG_TYPE']; if (!CBXFeatures::IsFeatureEnabled('SaleRecurring') && 'Y' == $ar_res1['SUBSCRIPTION']) { $arRecurring[] = '[' . $arIBlockItem['ID'] . '] ' . $arIBlockItem['NAME'];
function OnBeforeCatalogDelete($ID) { global $DB; global $APPLICATION; $arMsg = array(); $ID = intval($ID); if (0 >= $ID) { return true; } $arCatalog = CCatalog::GetByIDExt($ID); if (false == $arCatalog) { return true; } if (0 < intval($arCatalog['PRODUCT_IBLOCK_ID'])) { $arMsg[] = array('id' => 'PRODUCT_IBLOCK_ID', 'text' => GetMessage('BT_MOD_CATALOG_ERR_CANNOT_DELETE_SKU_IBLOCK')); $obError = new CAdminException($arMsg); $APPLICATION->ThrowException($obError); return false; } if (0 < intval($arCatalog['OFFERS_IBLOCK_ID'])) { $arMsg[] = array('id' => 'PRODUCT_IBLOCK_ID', 'text' => GetMessage('BT_MOD_CATALOG_ERR_CANNOT_DELETE_PRODUCT_IBLOCK')); $obError = new CAdminException($arMsg); $APPLICATION->ThrowException($obError); return false; } $db_events = GetModuleEvents("catalog", "OnBeforeCatalogDelete"); while ($arEvent = $db_events->Fetch()) { if (false === ExecuteModuleEventEx($arEvent, array($ID))) { $strError = GetMessage("MAIN_BEFORE_DEL_ERR") . ' ' . $arEvent['TO_NAME']; $ex = $APPLICATION->GetException(); if (is_object($ex)) { $strError .= ': ' . $ex->GetString(); } $APPLICATION->ThrowException($strError); return false; } } return true; }