• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/widget/custom/saletarget.php
  • Класс: Bitrix\Crm\Widget\Custom\SaleTarget
  • Вызов: SaleTarget::applyReadPermissions
private function applyReadPermissions(array &$configuration, $userId)
{
	if (!$configuration['id'] || \CCrmPerms::IsAdmin($userId))
	{
		return;
	}

	$permissions = new \CCrmPerms($userId);
	$permission = $permissions->GetPermType('SALETARGET', 'READ');

	if ($permission === $permissions::PERM_NONE)
	{
		$configuration['target']['totalGoal'] = -1;
		foreach ($configuration['target']['goal'] as $id => $value)
		{
			$configuration['target']['goal'][$id] = -1;
		}
	}
	elseif ($permission === $permissions::PERM_ALL || $configuration['type'] === static::TYPE_COMPANY)
	{
		return;
	}
	elseif ($configuration['type'] === static::TYPE_CATEGORY)
	{
		foreach ($configuration['target']['goal'] as $id => $value)
		{
			$dealPermission = $permissions->GetPermType($id > 0 ? 'DEAL_C'.$id : 'DEAL', 'READ');
			if ($dealPermission === $permissions::PERM_NONE)
			{
				$configuration['target']['goal'][$id] = -1;
			}
		}
	}
	elseif ($configuration['type'] === static::TYPE_USER)
	{
		$userIds = $this->splitUsersByPermission($userId, array_keys($configuration['target']['goal']), $permission);
		foreach ($configuration['target']['goal'] as $id => $value)
		{
			if (!in_array($id, $userIds))
			{
				$configuration['target']['goal'][$id] = -1;
			}
		}
	}
}