• Модуль: 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;
}