- Модуль: 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);
}
}