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