• Модуль: imopenlines
  • Путь к файлу: ~/bitrix/modules/imopenlines/lib/queue.php
  • Класс: BitrixImOpenLinesQueue
  • Вызов: Queue::getUserData
static function getUserData($lineId, $userId, $nullForUnprocessed = false)
{
	$result = null;

	if ($userId > 0)
	{
		$user = ImUser::getInstance($userId);

		if($user->isExists())
		{
			$currentUserData = [
				'ID' => (int)$userId,
				'NAME' => $user->getFullName(false),
				'FIRST_NAME' => $user->getName(false),
				'LAST_NAME' => $user->getLastName(false),
				'WORK_POSITION' => '',
				'GENDER' => $user->getGender(),
				'AVATAR' => $user->getAvatar(),
				'AVATAR_ID' => $user->getAvatarId(),
				'ONLINE' => $user->isOnline()
			];

			if ($user->isExtranet())
			{
				$result = $nullForUnprocessed? null: $currentUserData;
			}
			else
			{
				//TODO: Forced replacement of aliases.
				if (function_exists('customImopenlinesOperatorNames'))
				{
					$customData = customImopenlinesOperatorNames($lineId, [
						'ID' => (int)$currentUserData['ID'],
						'NAME' => $currentUserData['FIRST_NAME'],
						'FIRST_NAME' => '',
						'LAST_NAME' => $currentUserData['LAST_NAME'],
						'WORK_POSITION' => '',
						'GENDER' => $currentUserData['GENDER'],
						'AVATAR' => $currentUserData['AVATAR'],
						'AVATAR_ID' => $currentUserData['AVATAR_ID'],
						'EXTERNAL_AUTH_ID' => $user->getExternalAuthId(),
						'ONLINE' => $currentUserData['ONLINE']
					]);
					if (!$customData)
					{
						$result = $nullForUnprocessed? null: $currentUserData;
					}
					else
					{
						$result['ID'] = (int)$customData['ID'];
						$result['NAME'] = (string)ImUser::formatFullNameFromDatabase($customData);
						$result['FIRST_NAME'] = (string)ImUser::formatNameFromDatabase($customData);
						$result['LAST_NAME'] = (string)$customData['LAST_NAME'];
						$result['WORK_POSITION'] = (string)$customData['WORK_POSITION'];
						$result['AVATAR'] = (string)$customData['AVATAR'];
						$result['AVATAR_ID'] = (int)$customData['AVATAR_ID'];
						$result['ONLINE'] = (bool)$customData['ONLINE'];
					}
				}
				else
				{
					$result = self::setQueueUserData($lineId, $currentUserData);
					if (!$result)
					{
						$result = $nullForUnprocessed? null: $currentUserData;
					}
				}
			}

			if (!empty($result['AVATAR']))
			{
				$uri = new Uri($result['AVATAR']);
				if(empty($uri->getHost()))
				{
					$result['AVATAR'] = Common::getServerAddress() . $result['AVATAR'];
				}
			}
		}
	}

	return $result;
}