• Модуль: disk
  • Путь к файлу: ~/bitrix/modules/disk/lib/rightsmanager.php
  • Класс: BitrixDiskRightsManager
  • Вызов: RightsManager::uniqualizeRightsOnObject
private function uniqualizeRightsOnObject(array $rights)
{
	$idToDelete = array();
	$rights = array_values($rights);
	foreach ($rights as $i => $right)
	{
		foreach(array_slice($rights, $i+1, null, true) as $j => $upRight)
		{
			if($this->isOpposite($right, $upRight))
			{
				$idToDelete[$j] = $j;
				$idToDelete[$i] = $i;
			}
		}
		unset($upRight);
	}
	unset($right);

	foreach($idToDelete as $id)
	{
		unset($rights[$id]);
	}
	unset($id);

	$byKey = array();
	foreach($rights as $right)
	{
		$uniqueKey = $right['ACCESS_CODE'] . '-' . $right['TASK_ID'] . '-' . $right['NEGATIVE'];
		if(!isset($byKey[$uniqueKey]))
		{
			$byKey[$uniqueKey] = $right;
		}
	}
	unset($right);

	return array_values($byKey);
}