if (!$res) { $strWarning .= GetMessage("IB_E_PROPERTY_ERROR") . ": " . $ibp->LAST_ERROR . "<br>"; $bVarsFromForm = true; } } } else { $PropID = (int) $ibp->Add($arProperty); if ($PropID <= 0) { $strWarning .= $ibp->LAST_ERROR . "<br>"; $bVarsFromForm = true; } } } /*******************************************/ if (!CIBlockSectionPropertyLink::HasIBlockLinks($ID)) { CIBlockSectionPropertyLink::DeleteByIBlock($ID); } if (!$bVarsFromForm && $arIBTYPE["IN_RSS"] == "Y") { CIBlockRSS::Delete($ID); $arNodesRSS = CIBlockRSS::GetRSSNodes(); foreach ($arNodesRSS as $key => $val) { if (strlen(${"RSS_NODE_VALUE_" . $key}) > 0) { CIBlockRSS::Add($ID, $val, ${"RSS_NODE_VALUE_" . $key}); } } } if (!$bVarsFromForm && !$bCreateRecord && $bBizproc) { $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";
/** * <p>Функция удаляет информационный блок.</p> * * * * * @param int $ID Код информационного блока. * * * * @return bool <a href="http://dev.1c-bitrix.ru/api_help/iblock/events/onbeforeiblockdelete.php">OnBeforeIBlockDelete</a><a * name="examples"></a> * * * <h4>Example</h4> * <pre> * <?<br>if($USER->IsAdmin())<br>{<br> $DB->StartTransaction();<br> if(!CIBlock::Delete($iblock_id))<br> {<br> $strWarning .= GetMessage("IBLOCK_DELETE_ERROR");<br> $DB->Rollback();<br> }<br> else<br> $DB->Commit();<br>}<br>?><br> * </pre> * * * @static * @link http://dev.1c-bitrix.ru/api_help/iblock/classes/ciblock/delete.php * @author Bitrix */ 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(); 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->Query("DROP TABLE b_iblock_element_prop_s" . $ID, true, $err_mess . __LINE__); $DB->Query("DROP TABLE b_iblock_element_prop_m" . $ID, true, $err_mess . __LINE__); $DB->Query("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; }
function ImportSectionProperties($XML_SECTION_PROPERTIES, $IBLOCK_ID, $SECTION_ID = 0) { if ($SECTION_ID == 0) { CIBlockSectionPropertyLink::DeleteByIBlock($IBLOCK_ID); $ib = new CIBlock(); $ib->Update($IBLOCK_ID, array("SECTION_PROPERTY" => "Y")); } $rs = $this->_xml_file->GetList(array("ID" => "asc"), array("PARENT_ID" => $XML_SECTION_PROPERTIES), array("ID")); while ($ar = $rs->Fetch()) { $iblockId = 0; $sectionId = 0; $arLink = array(); $rsP = $this->_xml_file->GetList(array("ID" => "asc"), array("PARENT_ID" => $ar["ID"])); while ($arP = $rsP->Fetch()) { if ($arP["NAME"] == $this->mess["IBLOCK_XML2_ID"]) { $arLink["XML_ID"] = $arP["VALUE"]; } elseif ($arP["NAME"] == $this->mess["IBLOCK_XML2_SMART_FILTER"]) { $arLink["SMART_FILTER"] = $arP["VALUE"] == "true" || intval($arP["VALUE"]) ? "Y" : "N"; } elseif ($arP["NAME"] == $this->mess["IBLOCK_XML2_SMART_FILTER_DISPLAY_TYPE"]) { $arLink["DISPLAY_TYPE"] = $arP["VALUE"]; } elseif ($arP["NAME"] == $this->mess["IBLOCK_XML2_SMART_FILTER_DISPLAY_EXPANDED"]) { $arLink["DISPLAY_EXPANDED"] = $arP["VALUE"] == "true" || intval($arP["VALUE"]) ? "Y" : "N"; } elseif ($arP["NAME"] == $this->mess["IBLOCK_XML2_SMART_FILTER_HINT"]) { $arLink["FILTER_HINT"] = $arP["VALUE"]; } elseif ($arP["NAME"] == $this->mess["IBLOCK_XML2_BX_LINKED_IBLOCK"]) { $iblockId = $this->GetIBlockByXML_ID($arP["VALUE"]); } elseif ($arP["NAME"] == $this->mess["IBLOCK_XML2_GROUP"] && $iblockId > 0) { $sectionId = $this->GetSectionByXML_ID($iblockId, $arP["VALUE"]); } } if ($iblockId > 0) { $arLink["IBLOCK_ID"] = $iblockId; } $rsProperty = CIBlockProperty::GetList(array(), array("IBLOCK_ID" => $IBLOCK_ID, "XML_ID" => $arLink["XML_ID"], "CHECK_PERMISSIONS" => "N")); if ($arDBProperty = $rsProperty->Fetch()) { CIBlockSectionPropertyLink::Add($sectionId ? $sectionId : $SECTION_ID, $arDBProperty["ID"], $arLink); } } return true; }
function ImportSectionProperties($XML_SECTION_PROPERTIES, $IBLOCK_ID, $SECTION_ID = 0) { if($SECTION_ID == 0) { CIBlockSectionPropertyLink::DeleteByIBlock($IBLOCK_ID); $ib = new CIBlock; $ib->Update($IBLOCK_ID, array("SECTION_PROPERTY" => "Y")); } $rs = $this->_xml_file->GetList( array("ID" => "asc"), array("PARENT_ID" => $XML_SECTION_PROPERTIES), array("ID") ); while($ar = $rs->Fetch()) { $arLink = array( ); $rsP = $this->_xml_file->GetList( array("ID" => "asc"), array("PARENT_ID" => $ar["ID"]) ); while($arP = $rsP->Fetch()) { if($arP["NAME"]==GetMessage("IBLOCK_XML2_ID")) $arLink["XML_ID"] = $arP["VALUE"]; elseif($arP["NAME"]==GetMessage("IBLOCK_XML2_SMART_FILTER")) $arLink["SMART_FILTER"] = ($arP["VALUE"]=="true") || intval($arP["VALUE"])? "Y": "N"; } $rsProperty = CIBlockProperty::GetList(array(), array("IBLOCK_ID"=>$IBLOCK_ID, "XML_ID"=>$arLink["XML_ID"], "CHECK_PERMISSIONS"=>"N")); if($arDBProperty = $rsProperty->Fetch()) CIBlockSectionPropertyLink::Add($SECTION_ID, $arDBProperty["ID"], $arLink); } return true; }