'xsd:int', 'string' => 'xsd:string', 'binary' => 'xsd:base64Binary', ); function wsdl() { ContentNegotiator::disable(); header("Content-type: text/xml"); return array(); } function getWSDLURL() { return Director::absoluteBaseURLWithAuth() . $this->class . "/wsdl"; } function Methods() { foreach($this->stat('methods') as $methodName => $arguments) { $returnType = $arguments['_returns']; unset($arguments['_returns']); $processedArguments = array(); foreach($arguments as $argument => $type) { $processedArguments[] = new ArrayData(array( "Name" => $argument, "Type" => self::$xsd_types[$type], )); } $methods[] = new ArrayData(array( "Name" => $methodName, "Arguments" => new DataObjectSet($processedArguments), "ReturnType" => self::$xsd_types[$returnType], )); } return new DataObjectSet($methods); } function TargetNamespace() { return Director::absoluteBaseURL(); } function ServiceURL() { return Director::absoluteBaseURLWithAuth() . $this->class . '/'; } function index() { $s = new SoapServer($this->getWSDLURL()); $s->setClass($this->class); $s->handle(); } } ?>