• Модуль: im
  • Путь к файлу: ~/bitrix/modules/im/lib/controller/call.php
  • Класс: Bitrix\Im\Controller\Call
  • Вызов: Call::inviteUsers
public function inviteUsers(\Bitrix\Im\Call\Call $call, $userIds, $isLegacyMobile, $isVideo, $isRepeated)
{
	$usersToInvite = [];
	foreach ($userIds as $userId)
	{
		$userId = (int)$userId;
		if (!$userId)
		{
			continue;
		}
		if(!$call->hasUser($userId))
		{
			if(!$call->addUser($userId))
			{
				continue;
			}
		}
		$usersToInvite[] = $userId;
		$callUser = $call->getUser($userId);
		if($callUser->getState() != CallUser::STATE_READY)
		{
			$callUser->updateState(CallUser::STATE_CALLING);
		}
	}

	if (count($usersToInvite) === 0)
	{
		$this->addError(new Error("No users to invite", "empty_users"));
		return null;
	}

	$sendPush = $isRepeated !== true;

	// send invite to the ones being invited.
	$call->inviteUsers(
		$this->getCurrentUser()->getId(),
		$usersToInvite,
		$isLegacyMobile,
		$isVideo,
		$sendPush
	);

	// send userInvited to everyone else.
	$allUsers = $call->getUsers();
	$otherUsers = array_diff($allUsers, $userIds);
	$call->getSignaling()->sendUsersInvited(
		$this->getCurrentUser()->getId(),
		$otherUsers,
		$usersToInvite
	);

	if($call->getState() === \Bitrix\Im\Call\Call::STATE_NEW)
	{
		$call->updateState(\Bitrix\Im\Call\Call::STATE_INVITING);
	}
}