• Модуль: controller
  • Путь к файлу: ~/bitrix/modules/controller/lib/authgrant.php
  • Класс: BitrixControllerAuthGrantTable
  • Вызов: AuthGrantTable::getGranteeUserList
static function getGranteeUserList($currentUserId)
{
	$tasks = array();
	$groups = array();
	$users = array();

	$tasksList = BitrixMainTaskOperationTable::getList(array(
		"select" => array("TASK_ID"),
		"filter" => array(
			"=OPERATION.NAME" => "controller_member_view",
		),
	));
	while($a = $tasksList->fetch())
	{
		$tasks[$a['TASK_ID']] = $a['TASK_ID'];
	}

	if ($tasks)
	{
		$groupsList = BitrixMainGroupTaskTable::getList(array(
			"select" => array("GROUP_ID"),
			"filter" => array(
				"=TASK_ID" => $tasks,
			),
		));
		while($a = $groupsList->fetch())
		{
			$groups[$a['GROUP_ID']] = $a['GROUP_ID'];
		}
	}

	if ($groups)
	{
		$usersList = BitrixMainUserGroupTable::getList(array(
			"select" => array(
				"ID" => "USER.ID",
				"LOGIN" => "USER.LOGIN",
				"NAME" => "USER.NAME",
				"LAST_NAME" => "USER.LAST_NAME",
			),
			"filter" => array(
				"=GROUP_ID" => $groups,
				array(
					"LOGIC" => "OR",
					"=DATE_ACTIVE_FROM" => false,
					"<=DATE_ACTIVE_FROM" => new BitrixMainTypeDateTime(),
				),
				array(
					"LOGIC" => "OR",
					"=DATE_ACTIVE_TO" => false,
					">=DATE_ACTIVE_TO" => new BitrixMainTypeDateTime(),
				),
			),
		));
		while($a = $usersList->fetch())
		{
			if ($a['ID'] != $currentUserId)
			{
				$users[$a['ID']] = $a['LAST_NAME'].' '.$a['NAME'].' ('.$a['LOGIN'].')';
			}
		}
	}

	asort($users);
	return $users;
}