- Модуль: iblock
- Путь к файлу: ~/bitrix/modules/iblock/classes/general/iblock_rights.php
- Класс: CIBlockRights
- Вызов: CIBlockRights::ChangeParents
function ChangeParents($arOldParents, $arNewParents)
{
$obStorage = $this->_storage_object();
foreach($arOldParents as $id)
{
$ob = $this->_get_parent_object($id);
if(is_object($ob))
{
$arRights = $ob->GetRights();
foreach($arRights as $RIGHT_ID => $arRight)
{
if($arRight["DO_INHERIT"] === "Y")
{
$obStorage->DeleteSelfSet($RIGHT_ID, CIBlockRights::RIGHT_ID);
$obStorage->DeleteChildrenSet($RIGHT_ID, CIBlockRights::RIGHT_ID);
}
}
}
}
$arOwnGroupCodes = array();
$arDBRights = $this->GetRights();
foreach($arDBRights as $RIGHT_ID => $arOwnRight)
$arOwnGroupCodes[$arOwnRight["GROUP_CODE"]] = $RIGHT_ID;
foreach($arNewParents as $id)
{
$ob = $this->_get_parent_object($id);
if(is_object($ob))
{
$arRights = $ob->GetRights();
foreach($arRights as $RIGHT_ID => $arRight)
{
if(
$arRight["DO_INHERIT"] === "Y"
&& !array_key_exists($arRight["GROUP_CODE"], $arOwnGroupCodes)
)
{
$obStorage->_set_section($id);
$obStorage->AddSelfSet($RIGHT_ID, /*$bInherited=*/true);
$obStorage->AddChildrenSet($RIGHT_ID, $arRight["GROUP_CODE"], /*$bInherited=*/true);
}
}
}
}
}