$str_SKU_PROPERTY_ID = 0; $str_IPROPERTY_TEMPLATES = array(); $str_SKU_RIGHTS = 'N'; $boolRecurringError = false; $bCurrentBPDisabled = true; $ib_result = CIBlock::GetList(array(), array("=ID" => $ID, "CHECK_PERMISSIONS" => "N")); if (!$ib_result->ExtractFields("str_")) { $ID = 0; } else { $bCurrentBPDisabled = $str_BIZPROC != 'Y'; $str_LID = array(); $db_LID = CIBlock::GetSite($ID); while ($ar_LID = $db_LID->Fetch()) { $str_LID[] = $ar_LID["LID"]; } $ipropTemlates = new \Bitrix\Iblock\InheritedProperty\IblockTemplates($ID); $str_IPROPERTY_TEMPLATES = $ipropTemlates->findTemplates(); $str_IPROPERTY_TEMPLATES["SECTION_PICTURE_FILE_NAME"] = \Bitrix\Iblock\Template\Helper::convertModifiersToArray($str_IPROPERTY_TEMPLATES["SECTION_PICTURE_FILE_NAME"]); $str_IPROPERTY_TEMPLATES["SECTION_DETAIL_PICTURE_FILE_NAME"] = \Bitrix\Iblock\Template\Helper::convertModifiersToArray($str_IPROPERTY_TEMPLATES["SECTION_DETAIL_PICTURE_FILE_NAME"]); $str_IPROPERTY_TEMPLATES["ELEMENT_PREVIEW_PICTURE_FILE_NAME"] = \Bitrix\Iblock\Template\Helper::convertModifiersToArray($str_IPROPERTY_TEMPLATES["ELEMENT_PREVIEW_PICTURE_FILE_NAME"]); $str_IPROPERTY_TEMPLATES["ELEMENT_DETAIL_PICTURE_FILE_NAME"] = \Bitrix\Iblock\Template\Helper::convertModifiersToArray($str_IPROPERTY_TEMPLATES["ELEMENT_DETAIL_PICTURE_FILE_NAME"]); if ($bCatalog) { $arCatalog = CCatalog::GetByIDExt($ID); if (false !== $arCatalog) { $str_IS_CATALOG = $arCatalog['CATALOG']; $str_CATALOG_TYPE = $arCatalog['CATALOG_TYPE']; if ('Y' == $arCatalog['CATALOG']) { $str_SUBSCRIPTION = $arCatalog['SUBSCRIPTION']; if (!CBXFeatures::IsFeatureEnabled('SaleRecurring') && 'Y' == $str_SUBSCRIPTION) { $str_SUBSCRIPTION = 'N'; $boolRecurringError = true;
public static function Delete($ID) { $err_mess = "FILE: ".__FILE__."<br>LINE: "; /** @global CDatabase $DB */ global $DB; /** @global CMain $APPLICATION */ global $APPLICATION; /** @global CUserTypeManager $USER_FIELD_MANAGER */ global $USER_FIELD_MANAGER; /** @global CCacheManager $CACHE_MANAGER */ global $CACHE_MANAGER; $ID = IntVal($ID); $APPLICATION->ResetException(); foreach(GetModuleEvents("iblock", "OnBeforeIBlockDelete", true) as $arEvent) { if(ExecuteModuleEventEx($arEvent, array($ID)) === false) { $err = GetMessage("MAIN_BEFORE_DEL_ERR").' '.$arEvent['TO_NAME']; $ex = $APPLICATION->GetException(); if(is_object($ex)) $err .= ': '.$ex->GetString(); $APPLICATION->throwException($err); return false; } } foreach (GetModuleEvents("iblock", "OnIBlockDelete", true) as $arEvent) ExecuteModuleEventEx($arEvent, array($ID)); $iblockSections = CIBlockSection::GetList(Array(), Array( "IBLOCK_ID" => $ID, "DEPTH_LEVEL" => 1, "CHECK_PERMISSIONS" => "N", ), false, Array("ID")); while($iblockSection = $iblockSections->Fetch()) { if(!CIBlockSection::Delete($iblockSection["ID"], false)) return false; } $iblockElements = CIBlockElement::GetList(Array(), Array( "IBLOCK_ID" => $ID, "SHOW_NEW" => "Y", "CHECK_PERMISSIONS" => "N", ), false, false, array("IBLOCK_ID", "ID")); while($iblockElement = $iblockElements->Fetch()) { if(!CIBlockElement::Delete($iblockElement["ID"])) return false; } $props = CIBlockProperty::GetList(array(), array( "IBLOCK_ID" => $ID, "CHECK_PERMISSIONS" =>"N", )); while($property = $props->Fetch()) { if(!CIBlockProperty::Delete($property["ID"])) return false; } $seq = new CIBlockSequence($ID); $seq->Drop(true); $obIBlockRights = new CIBlockRights($ID); $obIBlockRights->DeleteAllRights(); $ipropTemplates = new \Bitrix\Iblock\InheritedProperty\IblockTemplates($ID); $ipropTemplates->delete(); CIBlockSectionPropertyLink::DeleteByIBlock($ID); $DB->Query("delete from b_iblock_offers_tmp where PRODUCT_IBLOCK_ID=".$ID, false, $err_mess.__LINE__); $DB->Query("delete from b_iblock_offers_tmp where OFFERS_IBLOCK_ID=".$ID, false, $err_mess.__LINE__); if(!$DB->Query("DELETE FROM b_iblock_messages WHERE IBLOCK_ID = ".$ID, false, $err_mess.__LINE__)) return false; if(!$DB->Query("DELETE FROM b_iblock_fields WHERE IBLOCK_ID = ".$ID, false, $err_mess.__LINE__)) return false; $USER_FIELD_MANAGER->OnEntityDelete("IBLOCK_".$ID."_SECTION"); if(!$DB->Query("DELETE FROM b_iblock_group WHERE IBLOCK_ID=".$ID, false, $err_mess.__LINE__)) return false; if(!$DB->Query("DELETE FROM b_iblock_rss WHERE IBLOCK_ID=".$ID, false, $err_mess.__LINE__)) return false; if(!$DB->Query("DELETE FROM b_iblock_site WHERE IBLOCK_ID=".$ID, false, $err_mess.__LINE__)) return false; if(!$DB->Query("DELETE FROM b_iblock WHERE ID=".$ID, false, $err_mess.__LINE__)) return false; $DB->DDL("DROP TABLE b_iblock_element_prop_s".$ID, true, $err_mess.__LINE__); $DB->DDL("DROP TABLE b_iblock_element_prop_m".$ID, true, $err_mess.__LINE__); $DB->DDL("DROP SEQUENCE sq_b_iblock_element_prop_m".$ID, true, $err_mess.__LINE__); CIBlock::CleanCache($ID); if(defined("BX_COMP_MANAGED_CACHE")) $CACHE_MANAGER->ClearByTag("iblock_id_".$ID); $_SESSION["SESS_RECOUNT_DB"] = "Y"; return true; }