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; }