- Модуль: xmpp
- Путь к файлу: ~/bitrix/modules/xmpp/classes/factory.php
- Класс: CXMPPFactory
- Вызов: CXMPPFactory::__SendMessage
private function __SendMessage($senderId, $receiverId, $messageID, $type, $message, $domain = "")
{
if (!$this->isInitialized)
$this->Initialize();
$receiverId = intval($receiverId);
if ($receiverId <= 0)
return false;
$messageID = intval($messageID);
if ($messageID <= 0)
return false;
if (!in_array($type, array("P", "S")))
return false;
if ($message == '')
return false;
if (!CXMPPUtility::CheckXmppStatusOnline())
return false;
$senderJId = false;
$receiverJId = false;
$arUserID = array();
$arUserID[] = $receiverId;
$senderId = intval($senderId);
if ($senderId <= 0)
{
if ($senderId != -5)
return false;
$senderJId = self::GetSystemJId($domain);
}
else
{
$arUserID[] = $senderId;
}
if(!$arJID = CXMPPUtility::GetJIdByUserId($arUserID, $domain))
return false;
if($senderId > 0)
$senderJId = $arJID[$senderId];
$receiverJId = $arJID[$receiverId];
if (!$senderJId)
{
CXMPPUtility::Show("Error senderId=".$senderId.", receiverId=".$receiverId.", messageID=".$messageID." - Sender not found", 0);
return false;
}
if (!$receiverJId)
{
CXMPPUtility::Show("Error senderId=".$senderId.", receiverId=".$receiverId.", messageID=".$messageID." - Reseiver not found", 0);
return false;
}
$messageType = "chat";
if ($type == "S")
$messageType = "normal";
$arMessage = CXMPPUtility::GetMessageArray($senderJId, $receiverJId, $messageType, $message, $domain);
$result = false;
if (CXMPPServer::IsServerStarted())
{
$server = CXMPPServer::GetServer();
$result = $server->Send($receiverJId, $arMessage, $domain);
}
else
{
$result = CXMPPUtility::SendToServer($arMessage, $domain);
}
if ($result === true)
{
if (IsModuleInstalled("im") && CModule::IncludeModule("im"))
{
if ($type == "S")
{
$CIMNotify = new CIMNotify($receiverId);
$CIMNotify->MarkNotifyRead($messageID);
}
else
{
$CIMMessage = new CIMMessage($receiverId);
$CIMMessage->SetReadMessage($senderId);
}
}
else
{
CSocNetMessages::MarkMessageRead($receiverId, $messageID);
}
}
else
CXMPPUtility::Show("Error senderId=".$senderId.", receiverId=".$receiverId.", messageID=".$messageID." - Message was not send", 0);
return $result;
}