• Модуль: im
  • Путь к файлу: ~/bitrix/modules/im/lib/department.php
  • Класс: BitrixImDepartment
  • Вызов: Department::getColleagues
static function getColleagues($userId = null, $options = array())
{
	$userId = BitrixImCommon::getUserId($userId);
	if (!$userId)
	{
		return false;
	}

	$pagination = isset($options['LIST'])? true: false;

	$limit = isset($options['LIST']['LIMIT'])? intval($options['LIST']['LIMIT']): 50;
	$offset = isset($options['LIST']['OFFSET'])? intval($options['LIST']['OFFSET']): 0;

	$list = Array();

	$departments = BitrixImUser::getInstance($userId)->getDepartments();
	$managers = self::getManagers($departments);
	foreach ($managers as $departmentId => $users)
	{
		foreach ($users as $uid)
		{
			if ($userId == $uid)
				continue;

			$list[$uid] = $uid;
		}
	}

	$employees = self::getEmployees($departments);
	foreach ($employees as $departmentId => $users)
	{
		foreach ($users as $uid)
		{
			if ($userId == $uid)
				continue;

			$list[$uid] = $uid;
		}
	}

	$result = self::getDepartmentYouManage($userId);
	if (!empty($result))
	{
		$managers = self::getManagers(null);
		foreach ($managers as $departmentId => $users)
		{
			foreach ($users as $uid)
			{
				if ($userId == $uid)
					continue;

				$list[$uid] = $uid;
			}
		}
	}

	$count = count($list);

	$list = array_slice($list, $offset, $limit);

	$jsonOption = $options['JSON'] ?? null;
	$userDataOption = $options['USER_DATA'] ?? null;

	if ($userDataOption === 'Y')
	{
		$result = Array();

		$getOptions = Array();
		if ($jsonOption === 'Y')
		{
			$getOptions['JSON'] = 'Y';
		}

		foreach ($list as $userId)
		{
			$result[] = BitrixImUser::getInstance($userId)->getArray($getOptions);
		}
	}
	else
	{
		$result = array_values($list);
	}


	if ($jsonOption === 'Y')
	{
		$result = $pagination? Array('total' => $count, 'result' => $result): $result;
	}
	else
	{
		$result = $pagination? Array('TOTAL' => $count, 'RESULT' => $result): $result;
	}

	return $result;
}