123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- <?php
- /* For licensing terms, see /license.txt */
- /**
- * @package chamilo.webservices
- */
- require_once __DIR__.'/../inc/global.inc.php';
- require_once __DIR__.'/webservice.php';
- /**
- * SOAP error handler. Handles an error sending a SOAP fault.
- */
- class WSSoapErrorHandler implements WSErrorHandler
- {
- /**
- * Handles the error by sending a SOAP fault through the server.
- *
- * @param WSError Error to handle
- */
- public function handle($error)
- {
- $server = WSSoapServer::singleton();
- $server->fault(strval($error->code), $error->message);
- }
- }
- /**
- * SOAP server wrapper implementing a Singleton.
- */
- class WSSoapServer
- {
- /**
- * SOAP server instance.
- *
- * @var soap_server
- */
- private static $_instance;
- /**
- * Constructor.
- */
- public function __construct()
- {
- }
- /**
- * Singleton method.
- */
- public static function singleton()
- {
- if (!isset(self::$_instance)) {
- self::$_instance = new soap_server();
- // Set the error handler
- WSError::setErrorHandler(new WSSoapErrorHandler());
- // Configure the service
- self::$_instance->configureWSDL('WSService', 'urn:WSService');
- }
- return self::$_instance;
- }
- }
- $s = WSSoapServer::singleton();
- $s->wsdl->addComplexType(
- 'result',
- 'complexType',
- 'struct',
- 'all',
- '',
- [
- 'code' => ['name' => 'code', 'type' => 'xsd:int'],
- 'message' => ['name' => 'message', 'type' => 'xsd:string'],
- ]
- );
- $s->wsdl->addComplexType(
- 'extras',
- 'complexType',
- 'struct',
- 'all',
- '',
- [
- 'field_name' => ['name' => 'field_name', 'type' => 'xsd:string'],
- 'field_value' => ['name' => 'field_value', 'type' => 'xsd:string'],
- ]
- );
- $s->wsdl->addComplexType(
- 'extra_field',
- 'complexType',
- 'array',
- '',
- 'SOAP-ENC:Array',
- [],
- [
- [
- 'ref' => 'SOAP-ENC:arrayType',
- 'wsdl:arrayType' => 'tns:extras[]',
- ],
- ],
- 'tns:extras'
- );
- /*
- $s->wsdl->addComplexType(
- 'extra_field',
- 'complexType',
- 'struct',
- 'all',
- '',
- array(
- 'field_name' => array('name' => 'field_name', 'type' => 'xsd:string'),
- 'field_value' => array('name' => 'field_value', 'type' => 'xsd:string')
- )
- );
- */
- $s->register(
- 'WS.test',
- [],
- ['return' => 'xsd:string']
- );
- require_once __DIR__.'/soap_user.php';
- require_once __DIR__.'/soap_course.php';
- require_once __DIR__.'/soap_session.php';
- require_once __DIR__.'/soap_report.php';
- // Use the request to (try to) invoke the service
- $HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '';
- $s->service($HTTP_RAW_POST_DATA);
|