• Модуль: xmpp
  • Путь к файлу: ~/bitrix/modules/xmpp/classes/factory_classes/iq.php
  • Класс: CXMPPReceiveIQ
  • Вызов: CXMPPReceiveIQ::ReceiveMessage
public function ReceiveMessage($senderJId, array $arMessage, CXMPPClient $senderClient)
	{
		if (!$senderClient->IsAuthenticated())
			return false;
		if ($senderJId == '')
			return false;

		if (!array_key_exists("iq", $arMessage))
			return false;

		$to = "";
		if (array_key_exists("to", $arMessage["iq"]["."]))
			$to = $arMessage["iq"]["."]["to"];

		if ($to <> '' && mb_strpos($to, "@") !== false)
		{
			$arResult = true;

			$arMessage["iq"]["."]["to"] = CXMPPUtility::GetJIdWithResource($arMessage["iq"]["."]["to"], "");

			$server = CXMPPServer::GetServer();
			$server->Send($to, $arMessage, $senderClient->GetClientDomain());
		}
		else
		{
			if ($arMessage["iq"]["."]["type"] == "get" && $arMessage["iq"]["query"]["."]["xmlns"] == "http://jabber.org/protocol/disco#items")
			{
				$arResult = array(
					"iq" => array(
						"." => array(
							"type" => "result",
							"from" => $senderClient->GetClientDomain(),
							"id" => $arMessage['iq']['.']['id'],
						),
						"query" => array(
							"." => array("xmlns" => "http://jabber.org/protocol/disco#items"),
						),
					),
				);
			}
			elseif ($arMessage["iq"]["."]["type"] == "set" && $arMessage["iq"]["session"]["."]["xmlns"] == "urn:ietf:params:xml:ns:xmpp-session")
			{
				$arResult = array(
					"iq" => array(
						"." => array(
							"type" => "result",
							"from" => $senderClient->GetClientDomain(),
							"id" => $arMessage['iq']['.']['id'],
						),
					),
				);
			}
			else
			{
				$arResult = array(
					"iq" => array(
						"." => array(
							"type" => "error",
							"from" => $senderClient->GetClientDomain(),
							"id" => $arMessage['iq']['.']['id'],
						),
						"error" => array(
							"." => array("type" => "cancel"),
							"feature-not-implemented" => array("." => array("xmlns" => "urn:ietf:params:xml:ns:xmpp-stanzas")),
						),
					),
				);
			}
			//$arResult = CXMPPUtility::GetErrorArray($senderJId, "iq", "cancel", "feature-not-implemented", "", $arMessage['iq']['.']['id'], "");
		}

		return $arResult;
	}