- Модуль: webdav
- Путь к файлу: ~/bitrix/modules/webdav/classes/tools.php
- Класс: CWebDavTools
- Вызов: CWebDavTools::removeRights
static function removeRights(CIBlockRights $ibRights, array $removedRights, array $tasks)
{
$taskIdToLetter = array_flip($tasks);
$letterToTaskId = $tasks;
$newRights = array();
$existsRights = $ibRights->GetRights();
$removedRightsGroupCode = array();
foreach ($removedRights as $k => $right)
{
$removedRightsGroupCode[$right['GROUP_CODE']] = $k;
}
unset($right);
foreach ($existsRights as $existsRight)
{
if(!empty($removedRightsGroupCode[$existsRight['GROUP_CODE']]) && $existsRight['IS_INHERITED'] != 'Y')
{
$keyOfAppendRight = $removedRightsGroupCode[$existsRight['GROUP_CODE']];
//if new right == exists right, remove this
if($taskIdToLetter[$removedRights[$keyOfAppendRight]['TASK_ID']] == $taskIdToLetter[$existsRight['TASK_ID']])
{
continue;
}
else
{
$newRights[] = array(
'GROUP_CODE' => $existsRight['GROUP_CODE'],
'TASK_ID' => $existsRight['TASK_ID'],
);
}
unset($removedRights[$keyOfAppendRight]);
}
else
{
$newRights[] = array(
'GROUP_CODE' => $existsRight['GROUP_CODE'],
'TASK_ID' => $existsRight['TASK_ID'],
);
}
}
unset($existsRight);
$returnRights = array();
$i = 0;
foreach ($newRights as $right)
{
$returnRights['n' . $i++] = $right;
}
unset($right);
return $returnRights;
}