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

		if (!array_key_exists("iq", $arMessage) || !array_key_exists("bind", $arMessage["iq"])
			|| ($arMessage['iq']['bind']['.']['xmlns'] != 'urn:ietf:params:xml:ns:xmpp-bind'))
			return false;

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

		if ($type == "set")
		{
			$resource = $arMessage["iq"]["bind"]["resource"]["#"];
			if ($resource == '')
				$resource = "bx";

			$senderClient->SetResource($resource);

			$arMessageTmp = array(
				"iq" => array(
					"." => array(
						"type" => "result",
						"to" => htmlspecialcharsbx($senderClient->GetClientDomain())."/".$senderClient->GetStreamId(),
						"id" => $arMessage['iq']['.']['id'],
					),
					"bind" => array(
						"." => array("xmlns" => "urn:ietf:params:xml:ns:xmpp-bind"),
						"jid" => array("#" => $senderJId."/".$resource),
					),
				),
			);

			$messageTmp = CXMPPParser::ToXml($arMessageTmp);
			$senderClient->__Send($messageTmp);
		}
		else
		{
			$arMessageTmp = array(
				"iq" => array(
					"." => array(
						"type" => "result",
						"from" => $senderClient->GetClientDomain(),
						"id" => $arMessage['iq']['.']['id'],
					),
				),
			);

			$messageTmp = CXMPPParser::ToXml($arMessageTmp);
			$senderClient->__Send($messageTmp);
		}

		return true;
	}