/** * Generate a server fault * * Note that the arguments are the reverse of those used by SoapFault. * * Moodle note: the difference with the Zend server is that we throw a SoapFault exception * with the debuginfo integrated in the exception message when DEBUG >= NORMAL * * If an exception is passed as the first argument, its message and code * will be used to create the fault object if it has been registered via * {@Link registerFaultException()}. * * @link http://www.w3.org/TR/soap12-part1/#faultcodes * @param string|Exception $fault * @param string $code SOAP Fault Codes * @return SoapFault */ public function fault($fault = null, $code = "Receiver") { //intercept any exceptions with debug info and transform it in Moodle exception if ($fault instanceof Exception) { //add the debuginfo to the exception message if debuginfo must be returned if (debugging() and isset($fault->debuginfo)) { $fault = new SoapFault('Receiver', $fault->getMessage() . ' | DEBUG INFO: ' . $fault->debuginfo); } } return parent::fault($fault, $code); }
/** * Generate a server fault * * Note that the arguments are reverse to those of SoapFault. * * note: the difference with the Zend server is that we throw a SoapFault exception * with the debuginfo integrated to the exception message when DEBUG >= NORMAL * * If an exception is passed as the first argument, its message and code * will be used to create the fault object if it has been registered via * {@Link registerFaultException()}. * * @link http://www.w3.org/TR/soap12-part1/#faultcodes * @param string|Exception $fault * @param string $code SOAP Fault Codes * @return SoapFault */ public function fault($fault = null, $code = "Receiver") { //run the zend code that clean/create a soapfault $soapfault = parent::fault($fault, $code); //intercept any exceptions and add the errorcode and debuginfo (optional) $actor = null; $details = null; if ($fault instanceof Exception) { //add the debuginfo to the exception message if debuginfo must be returned if (ws_debugging() and isset($fault->debuginfo)) { $details = $fault->debuginfo; } } return new SoapFault($soapfault->faultcode, $soapfault->getMessage() . ' | ERRORCODE: ' . (isset($fault->errorcode) ? $fault->errorcode : $code), $actor, $details); }
/** * @group ZF-3958 */ public function testFaultWithIntegerFailureCodeDoesNotBreakClassSoapFault() { $server = new Zend_Soap_Server(); $fault = $server->fault("Faultmessage!", 5000); $this->assertTrue($fault instanceof SOAPFault); }