<?php
class SOAP_Interop_GroupI {

    function echoString($inputString)
    {
    	if (isset($inputString->inputString)) {
	      return array("return"=>$inputString->inputString);
	    } else {
	      return $inputString;
	    }
    }

    function echoInteger($inputInteger)
    {
      return array("return"=>$inputInteger->inputInteger);
    }

    function echoFloat($inputFloat)
    {
      return array("return"=>$inputFloat->inputFloat);
    }

    function echoVoid()
    {
    }

    function echoBase64($inputBase64)
    {
    	if (isset($inputBase64->inputBase64)) {
	      return array("return"=>$inputBase64->inputBase64);
	    } else {
	      return $inputBase64;
	    }
    }

    function echoDate($timeInstant)
    {
      return array("return"=>$timeInstant->inputDate);
    }

    function echoComplexType($inputComplexType)
    {
    	if (isset($inputComplexType->inputComplexType)) {
	      return array("return"=>$inputComplexType->inputComplexType);
	    } else {
	      return $inputComplexType;
	    }
    }

    function echoIntegerMultiOccurs($input)
    {
    	if (isset($input->inputIntegerMultiOccurs->int)) {
	      return array("return"=>$input->inputIntegerMultiOccurs->int);
	    } else {
	      return array();
	    }
    }

    function echoFloatMultiOccurs($input)
    {
    	if (isset($input->inputFloatMultiOccurs->float)) {
	      return array("return"=>$input->inputFloatMultiOccurs->float);
	    } else {
	      return array();
	    }
    }

    function echoStringMultiOccurs($input)
    {
    	if (isset($input->inputStringMultiOccurs->string)) {
	      return array("return"=>$input->inputStringMultiOccurs->string);
	    } else {
	      return array();
	    }
    }

    function echoComplexTypeMultiOccurs($input)
    {
    	if (isset($input->inputComplexTypeMultiOccurs->SOAPComplexType)) {
	      return array("return"=>$input->inputComplexTypeMultiOccurs->SOAPComplexType);
	    } else {
	      return array();
	    }
    }

    function echoHexBinary($hb)
    {
    	if (isset($hb->inputHexBinary)) {
	      return array("return"=>$hb->inputHexBinary);
	    } else {
	      return $hb;
	    }
    }

    function echoDecimal($dec)
    {
      return array("return"=>$dec->inputDecimal);
    }

    function echoBoolean($boolean)
    {
      return array("return"=>$boolean->inputBoolean);
    }

    function echoComplexTypeAsSimpleTypes($input) 
    {
    	if (isset($input->inputComplexType)) {
    	  $ret = array("outputInteger" => $input->inputComplexType->varInt,
    	               "outputFloat"   => $input->inputComplexType->varFloat);
    	  if (isset($input->inputComplexType->varString)) {
    	    $ret["outputString"] = $input->inputComplexType->varString;
    	  }
	      return $ret;
	    } else {
	      return array();
	    }
	  }

    function echoSimpleTypesAsComplexType($input) 
    {
   	  $ret = array("varInt"   => $input->inputInteger,
   	               "varFloat" => $input->inputFloat);
   	  if (isset($input->inputString)) {
   	    $ret["varString"] = $input->inputString;
   	  }
   	  return array("return"=>$ret);
    }

    function echoNestedComplexType($inputComplexType)
    {
    	if (isset($inputComplexType->inputComplexType)) {
	      return array("return"=>$inputComplexType->inputComplexType);
	    } else {
	      return $inputComplexType;
	    }
    }

    function echoNestedMultiOccurs($inputComplexType)
    {
    	if (isset($inputComplexType->inputComplexType)) {
	      return array("return"=>$inputComplexType->inputComplexType);
	    } else {
	      return $inputComplexType;
	    }
    }

    function echoChoice($input)
    {
    	if (isset($input->inputChoice)) {
	      return array("return"=>$input->inputChoice);
	    } else {
	      return $input;
	    }
    }

    function echoEnum($input)
    {
      return array("return"=>$input->inputEnum);
    }

    function echoAnyType($input)
    {
    	if (isset($input->inputAnyType)) {
	      return array("return"=>$input->inputAnyType);
	    } else {
	      return $input;
	    }
    }

    function echoAnyElement($input)
    {
    	if (isset($input->inputAny)) {
	      return array("return"=>$input->inputAny);
	    } else {
	      return $input;
	    }
    }

    function echoVoidSoapHeader()
    {
    }

    function echoMeStringRequest($input)
    {
      return new SoapHeader("http://soapinterop.org/","echoMeStringResponse",$input);
    }

    function echoMeComplexTypeRequest($input)
    {
      return new SoapHeader("http://soapinterop.org/","echoMeComplexTypeResponse",$input);
    }

}

$server = new SoapServer(dirname(__FILE__)."/round4_groupI_xsd.wsdl");
$server->setClass("SOAP_Interop_GroupI");
$server->handle($HTTP_RAW_POST_DATA);
?>
