• Модуль: webservice
  • Путь к файлу: ~/bitrix/modules/webservice/classes/general/wsdl/wsdlcreator.php
  • Класс: CWSDLCreator
  • Вызов: CWSDLCreator::__createMessage
function __createMessage ($name, $returnType = false, $params = array())
{
	global $xsd_simple_type;
	$insoap = array();
	$outsoap = array();
	$message = new CXMLCreator("wsdl:message");
	$message->setAttribute("name", $name."SoapIn");
	$part = new CXMLCreator("wsdl:part");
	$part->setAttribute("name", "parameters");
	$part->setAttribute("element", "tns:".$name/*."Request"*/);
	$message->addChild($part);

	if (is_array($params)) {
		foreach ($params as $pname=>$param) {
			$type = isset($param["varType"]) ? $param["varType"]:"anyType";
			if (isset($xsd_simple_type[$type])) {
				$insoap[$pname] = $xsd_simple_type[$type];
				$type = "xsd:".$xsd_simple_type[$type];
			} else {
				$this->AddArrayType($pname, $param);
				$insoap[$pname] = $param["varType"];
				$type = "tns".":".$param["varType"];
			}
		}
	}
	$this->messages[] = $message;
	if ($returnType) {
		//foreach ($returnType as $pname=>$param) break;
		$message = new CXMLCreator("wsdl:message");
		$message->setAttribute("name", $name."SoapOut");
		$part = new CXMLCreator("wsdl:part");
		$part->setAttribute("name", "parameters");
		$part->setAttribute("element", "tns:".$name."Response");
		$message->addChild($part);

		//changed by Sigurd
		if (is_array($params))
		{
			foreach ($returnType as $pname=>$param)
			{
				$type = isset($param["varType"]) ? $param["varType"]:"anyType";
				if (isset($xsd_simple_type[$type])) {
					$outsoap[$pname] = $xsd_simple_type[$type];
					$type = "xsd:".$xsd_simple_type[$type];
				} else {
					if (isset($this->typeTypens[$type])) {
						$type = $this->typeTypens[$type].":".$type;
					} else {
						$this->AddArrayType($pname, $param);
						$outsoap[$pname] = $param["varType"];
						$type = "tns".":".$param["varType"];
					}
				}
			}
		}

		$this->messages[] = $message;
	} else {
		$message = new CXMLCreator("message");
		$message->setAttribute("name", $name."Response");
		$this->messages[] = $message;
	}

	$this->typensDefined[$name/*."Request"*/] = $name/*."Request"*/;
	$this->typensDefined[$name."Response"] = $name."Response";
	$this->typensVars[$name/*."Request"*/] = $insoap;
	$this->typensVars[$name."Response"] = $outsoap;
}