Source for file jSoapCoordinator.class.php

Documentation is available at jSoapCoordinator.class.php

  1. <?php
  2. /**
  3. @package      jelix
  4. @subpackage   core
  5. @author       Sylvain de Vathaire
  6. @contributor  Laurent Jouanneau
  7. @copyright    2008 Sylvain DE VATHAIRE, 2008-2012 Laurent Jouanneau
  8. @link         http://www.jelix.org
  9. @licence      GNU Lesser General Public Licence see LICENCE file or http://www.gnu.org/licenses/lgpl.html
  10. */
  11.  
  12.  
  13. /**
  14.  * jWSDL utility class
  15.  */
  16. require_once(JELIX_LIB_UTILS_PATH.'jWSDL.class.php');
  17.  
  18.  
  19. /**
  20.  * Specialisation of the main class of the jelix core for soap purpose
  21.  *
  22.  * @package  jelix
  23.  * @subpackage core
  24.  * @see jCoordinator
  25.  */
  26. class jSoapCoordinator extends jCoordinator {
  27.  
  28.     /**
  29.      * WSDL utility object
  30.      * @var jWSDL 
  31.      */
  32.     public $wsdl;
  33.  
  34.     /**
  35.      * Soap server reference
  36.      * @var SoapServer 
  37.      */
  38.     protected $soapServer;
  39.  
  40.     /**
  41.      * Intercept the soapServer method call in order to handle the call thrue the process method
  42.      * Return php variables, the soap server will transform it in a soap response
  43.      */
  44.     public function processSoap(){
  45.  
  46.         $this->wsdl = new jWSDL($this->request->params['module']$this->request->params['action']);
  47.  
  48.         $this->soapServer = $this->getSoapServer($this->wsdl);
  49.         $this->soapServer->setclass('jSoapHandler'$this);
  50.         $this->soapServer->handle($this->request->soapMsg);
  51.     }
  52.  
  53.     /**
  54.      * Init and return the soap server
  55.      * Use wsdl mode or not depending of the wsdl object param
  56.      * @param jWsdl $wsdl 
  57.      */
  58.     public function getSoapServer($wsdl null){
  59.  
  60.         if(is_null($this->soapServer)){
  61.             if(is_null($wsdl)){
  62.                 $this->soapServer = new SoapServer(nullarray('soap_version' => SOAP_1_1'encoding' => jApp::config()->charset'uri' => $_SERVER['PHP_SELF']));
  63.             }else{
  64.                 $this->soapServer = new SoapServer($wsdl->getWSDLFilePath()array('soap_version' => SOAP_1_1'encoding' => jApp::config()->charset));
  65.             }
  66.         }
  67.         return $this->soapServer;
  68.     }
  69. }
  70.  
  71.  
  72. /**
  73. * Handler for soap extension call
  74. @package  jelix
  75. @subpackage core_response
  76. */
  77. class jSoapHandler {
  78.  
  79.     /**
  80.     * Coordinator
  81.     * @var jSoapCoordinator 
  82.     */
  83.     protected $coord;
  84.  
  85.  
  86.     function __construct($coordinator{
  87.         $this->coord = $coordinator;
  88.     }
  89.  
  90.     /**
  91.      * Intercept the soapServer method call in order to handle the call thrue the process method oj the coordinator
  92.      * @param string $soapOperationName Soap operation name (ie action name)
  93.      * @param array $soapArgsSoap Params for the operation
  94.      * @return mixed data, the soap server will transform it in a soap response
  95.      *  Use of reflexion thrue jWSDL in order to map arg array to action params
  96.      */
  97.     function __call($soapOperationName,$soapArgs){
  98.  
  99.        $this->coord->request->params['action'.= ':'.$soapOperationName;
  100.  
  101.        $operationParams $this->coord->wsdl->getOperationParams($soapOperationName);
  102.        foreach(array_keys($operationParamsas $i=>$paramName){
  103.            $this->coord->request->params[$paramName$soapArgs[$i];
  104.        }
  105.         $this->coord->process($this->coord->request);
  106.         $response $this->coord->response;
  107.         if (($c get_class($response)) == 'jResponseRedirect'
  108.                 || $c == 'jResponseRedirectUrl')
  109.             return null;
  110.         return $this->coord->response->data;
  111.     }
  112. }

Documentation generated on Mon, 26 Oct 2015 21:56:25 +0100 by phpDocumentor 1.4.3