• Модуль: iblock
  • Путь к файлу: ~/bitrix/modules/iblock/classes/general/cml2.php
  • Класс: CIBlockCMLImport
  • Вызов: CIBlockCMLImport::DeactivateSections
function DeactivateSections($action)
{
	if(array_key_exists("bUpdateOnly", $this->next_step) && $this->next_step["bUpdateOnly"])
		return;
	if(!$this->next_step["XML_SECTIONS_PARENT"])
		return;

	if($action!="D" && $action!="A")
		return;

	$bDelete = $action=="D";

	//This will protect us from deactivating when next_step is lost
	$IBLOCK_ID = intval($this->next_step["IBLOCK_ID"]);
	if($IBLOCK_ID < 1)
		return;

	$arFilter = array(
		"IBLOCK_ID" => $IBLOCK_ID,
	);
	if(!$bDelete)
		$arFilter["ACTIVE"] = "Y";

	$obSection = new CIBlockSection;
	$rsSection = $obSection->GetList(array("ID"=>"asc"), $arFilter, false, ['ID', 'IBLOCK_ID']);

	while($arSection = $rsSection->Fetch())
	{
		$rs = $this->_xml_file->GetList(
			array(),
			array("PARENT_ID+0" => 0, "LEFT_MARGIN" => $arSection["ID"]),
			array("ID")
		);
		$ar = $rs->Fetch();
		if(!$ar)
		{
			if($bDelete)
			{
				$obSection->Delete($arSection["ID"]);
			}
			else
			{
				$obSection->Update($arSection["ID"], array("ACTIVE"=>"N"));
			}
		}
		else
		{
			$this->_xml_file->Delete($ar["ID"]);
		}
	}
	return;
}