<?php
class Soap12test {
	public $header;

	function echoOk($x) {
  	return $x;
	}

	function echoString($inputString) {
		return $inputString;
	}

	function echoStringArray($inputStringArray) {
		return $inputStringArray;
	}

	function echoInteger($inputInteger) {
		return $inputInteger;
	}

	function echoIntegerArray($inputIntegerArray) {
		return $inputIntegerArray;
	}

	function echoFloat($inputFloat) {
		return $inputFloat;
	}

	function echoFloatArray($inputFloatArray) {
		return $inputFloatArray;
  }

	function echoStruct($x) {
  	return $x;
	}

	function echoStructArray($x) {
  	return $x;
	}

	function echoVoid() {
		return NULL;
	}

	function echoBase64($b_encoded) {
		return $b_encoded;
  }

	function echoDate($timeInstant) {
		return $timeInstant;
	}

	function echoHexBinary($hb) {
		return $hb;
	}

	function echoDecimal($dec) {
		return $dec;
	}

	function echoBoolean($boolean) {
		return $boolean;
	}

	function echoStructAsSimpleTypes ($struct) {
		 return array('outputString'  => $struct->varString,
		              'outputInteger' => $struct->varInt,
		              'outputFloat'   => $struct->varFloat);
	}

	function echoSimpleTypesAsStruct($string, $int, $float) {
		return (object)array("varString" => $string,
		 										 "varInt"    => $int,
	  										 "varFloat"  => $float);
	}

	function echoNestedStruct($struct) {
		return $struct;
	}

	function echo2DStringArray($ary) {
		return $ary;
	}

	function echoNestedArray($ary) {
		return $ary;
	}

	function countItems($input) {
		return count($input);
	}

	function isNil($input) {
		return is_null($input);
	}

	function returnVoid() {
	}

	function emptyBody() {
	}

	function requiredHeader($x) {
		$this->header = $x;
	}

	function echoHeader() {
	  return $this->header;
	}

	function echoResolvedRef($ref) {
	  return $ref->RelativeReference->base.$ref->RelativeReference->href;
	}

	function validateCountryCode($code) {
		if (strlen($code) != 2) {
		  return new SoapFault("Client", "Not a valid country code", NULL, NULL, NULL, new SoapHeader("http://example.org/ts-tests", "validateCountryCodeFault", "Country code must be 2 letters."));
		} else {
			return "OK";
		}
	}

}

ini_set("soap.wsdl_cache_enabled",0);
$server = new soapserver(dirname(__FILE__)."/soap12-test.wsdl", array('soap_version'=>SOAP_1_2,'actor'=>"http://example.org/ts-tests/C"));
$server->setClass("Soap12test");

$server->handle($HTTP_RAW_POST_DATA);
echo "ok\n";
?>
