PHP   17

google.inc

Guest on 31st May 2021 10:13:50 PM

  1. <?
  2.  
  3. require_once('SOAP/Server.php');
  4. require_once('SOAP/Disco.php');
  5.  
  6. #--------------------------------------------------------------------------
  7. # Define the object we are going to publish and the methods it
  8. # will expose.
  9.  
  10. class OGCSearch
  11. {
  12.      var $__dispatch_map = array();
  13.      var $__typedef = array();
  14.  
  15.      function OGCSearch() {
  16.          // Necessary for WSDL creation
  17.          $this->__dispatch_map['findLayers'] =
  18.              array('in' => array('keywords' => 'string',
  19.                                  'servertype' => 'string',
  20.                                  'xmin' => 'double',
  21.                                  'ymin' => 'double',
  22.                                  'xmax' => 'double',
  23.                                  'ymax' => 'double'),
  24.                    'out' => array('results' => '{http://soapinterop.org/xsd}OGCLayerArray')
  25.                    );
  26.          $this->__typedef['{http://soapinterop.org/xsd}OGCLayer'] =
  27.                      array(
  28.                           'name'=>'string',
  29.                           'title'=>'string',
  30.                           'description'=>'string',
  31.                           'onlineresource'=>'string',
  32.                           'servertype'=>'string',
  33.                           'serverversion'=>'string'
  34.                           );
  35.  
  36.          $this->__typedef['{http://soapinterop.org/xsd}OGCLayerArray'] =
  37.             array(
  38.                 array(
  39.                     '{http://soapinterop.org/xsd}OGCLayer'
  40.                 )
  41.             );
  42.      }
  43.  
  44.      function findLayers($keywords, $servertype, $xmin, $ymin, $xmax, $ymax)  {
  45.  
  46.         require_once 'DB.php';
  47.  
  48.         $results = array();
  49.  
  50.         $user = 'pramsey';
  51.         $pass = 'pramsey';
  52.         $host = 'localhost';
  53.         $dbname = 'wms_google';
  54.  
  55.         $dsn = "pgsql://$user:$pass@$host/$dbname";
  56.  
  57.         $keywords = implode("&",explode(" ",trim($keywords)));
  58.  
  59.         $keywords = addslashes(trim($keywords));
  60.        
  61.         # Connect to the database
  62.        $db = DB::connect($dsn);
  63.         if( DB::isError($db) ) {
  64.             return new SOAP_Fault($db->getMessage(),'Client');
  65.         }
  66.        
  67.         # Execute the query
  68.        $box = "POLYGON(($xmin $ymin,$xmin $ymax,$xmax $ymax,$xmax $ymin,$xmin $ymin))";
  69.         $sql = "select layer_name, layer_title, layer_abstract, onlineresource, version from wms_server_layers,wms_servers where wms_server_layers.layer_tsidx @@ '$keywords'::tsquery and layer_bbox && geometryfromtext('$box',4326) and wms_servers.id = wms_server_layers.server_id";
  70.         $result = $db->query($sql);
  71.         if( DB::isError($db) ) {
  72.             return new SOAP_Fault($db->getMessage(),'Client');
  73.         }
  74.  
  75.         # Fetch results from the database
  76.        while ($row = $result->fetchRow()) {
  77.            $layer = array(
  78.                           'name'           => $row[0],
  79.                           'title'          => $row[1],
  80.                           'description'    => $row[2],
  81.                           'onlineresource' => $row[3],
  82.                           'servertype'     => 'WMS',
  83.                           'serverversion'  => $row[4]
  84.                          );
  85.            array_push($results,$layer);
  86.         }
  87.  
  88.         return new SOAP_Value('results','{http://soapinterop.org/xsd}OGCLayerArray',$results);
  89.      }
  90. }
  91.  
  92. $webservice = new OGCSearch();
  93.  
  94. #--------------------------------------------------------------------------
  95. # Set up the SOAP service and publish the object.
  96.  
  97. $server = new SOAP_Server();
  98. $server->addObjectMap($webservice, 'http://schemas.xmlsoap.org/soap/envelope/');
  99.  
  100. if (isset($_SERVER['REQUEST_METHOD'])  &&
  101.      $_SERVER['REQUEST_METHOD']=='POST') {
  102.      $server->service($HTTP_RAW_POST_DATA);
  103. } else {
  104.      // Create the DISCO server
  105.      $disco = new SOAP_DISCO_Server($server,'OGCSearch');
  106.      header("Content-type: text/xml");
  107.      if (isset($_SERVER['QUERY_STRING']) &&
  108.          strcasecmp($_SERVER['QUERY_STRING'],'wsdl') == 0) {
  109.          echo $disco->getWSDL();
  110.      } else {
  111.          echo $disco->getDISCO();
  112.      }
  113. }
  114.  
  115. ?>

Raw Paste


Login or Register to edit or fork this paste. It's free.