- Модуль: iblock
- Путь к файлу: ~/bitrix/modules/iblock/classes/general/cml2.php
- Класс: CIBlockCMLImport
- Вызов: CIBlockCMLImport::DeactivateElement
function DeactivateElement($action, $start_time, $interval)
{
$counter = array(
"DEL" => 0,
"DEA" => 0,
"NON" => 0,
);
if(array_key_exists("bUpdateOnly", $this->next_step) && $this->next_step["bUpdateOnly"])
return $counter;
if($action!="D" && $action!="A")
return $counter;
$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 $counter;
$arFilter = array(
">ID" => $this->next_step["LAST_ID"],
"IBLOCK_ID" => $IBLOCK_ID,
);
if(!$bDelete)
$arFilter["ACTIVE"] = "Y";
$obElement = new CIBlockElement;
$rsElement = $obElement->GetList(
Array("ID"=>"asc"),
$arFilter,
false, false,
Array("ID", "ACTIVE")
);
while($arElement = $rsElement->Fetch())
{
$rs = $this->_xml_file->GetList(
array(),
array("PARENT_ID+0" => 0, "LEFT_MARGIN" => $arElement["ID"]),
array("ID")
);
$ar = $rs->Fetch();
if(!$ar)
{
if($bDelete)
{
$obElement->Delete($arElement["ID"]);
$counter["DEL"]++;
}
else
{
$elementFields = array("ACTIVE"=>"N");
if ((string)BitrixMainConfigOption::get('iblock', 'change_user_by_group_active_modify') === 'Y')
{
$elementFields['MODIFIED_BY'] = $this->currentUserId;
}
$obElement->Update($arElement["ID"], $elementFields);
$counter["DEA"]++;
}
}
else
{
$counter["NON"]++;
}
$this->next_step["LAST_ID"] = $arElement["ID"];
if($interval > 0 && (time()-$start_time) > $interval)
break;
}
return $counter;
}