[Mapbender-commits] r4520 - branches/mifan_dev/mapbender/http/php
svn_mapbender at osgeo.org
svn_mapbender at osgeo.org
Thu Aug 13 17:58:48 EDT 2009
Author: mifan
Date: 2009-08-13 17:58:48 -0400 (Thu, 13 Aug 2009)
New Revision: 4520
Modified:
branches/mifan_dev/mapbender/http/php/mod_searchCatQueryBuilder_server.php
Log:
trying to solve issues with builder
Modified: branches/mifan_dev/mapbender/http/php/mod_searchCatQueryBuilder_server.php
===================================================================
--- branches/mifan_dev/mapbender/http/php/mod_searchCatQueryBuilder_server.php 2009-08-13 21:57:35 UTC (rev 4519)
+++ branches/mifan_dev/mapbender/http/php/mod_searchCatQueryBuilder_server.php 2009-08-13 21:58:48 UTC (rev 4520)
@@ -1,3 +1,251 @@
<?php
+# $Id$
+# http://www.mapbender.org/index.php/class_wms
+# Copyright (C) 2002 CCGIS
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+require_once(dirname(__FILE__)."/../classes/class_connector.php");
+require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
+require_once(dirname(__FILE__)."/../classes/class_csw.php");
+require_once(dirname(__FILE__)."/../classes/class_cswrecord.php");
+require_once(dirname(__FILE__)."/../classes/class_administration.php");
+require_once(dirname(__FILE__)."/../classes/class_json.php");
+require_once(dirname(__FILE__)."/../../core/globalSettings.php");
+require_once(dirname(__FILE__)."/../classes/class_connector.php");
+
+/*
+ * get catalogs for gui
+ * get get/post url for catalog
+ * construct query on url via get/xml
+ * make queries sequentially
+ * parse responses
+ * show responses with cat-name in results
+ */
+
+$DEBUG_ = true;
+
+//Init Variables
+$userId = $_SESSION["mb_user_id"];
+$command = $_REQUEST["command"];
+$guiId = $_REQUEST["guiID"];
+$simplesearch = $_REQUEST['search'];
+$getrecords_type = $_REQUEST['getrecordsmedia'];
+$getrecords_query = $_REQUEST['getrecordsquery'];
+
+$admin = new administration();
+$guiIdArray = $admin->getGuisByPermission($userId, false);
+
+$resultObj = array();
+$resultObj['cats'] = array();
+
+if($DEBUG_)
+array_push($resultObj['cats'],array("id"=>'id',"title"=>'test'));
+
+if ($command == "getrecordssimple") {
+ //$resultObj["cats"] = array();
+ if($DEBUG_)
+ array_push($resultObj['cats'],array("id"=>'id2',"title"=>$getrecords_type));
+ $catalogIDs = array();
+
+ switch(mb_strtolower($getrecords_type)){
+ case 'get':
+ $guicats = get_catalogs_for_gui($guiId);
+ if($DEBUG_)
+ $guicats = array('13');
+ $catalogIDs = get_catalogs_by_supported_type($guicats,'getrecords','get');
+ //$catalogIDs = get_catalogs_by_supported_type(array(9,10),'getrecords','get');
+ //$catalogIDs['7']= 'ac';
+ if($DEBUG_)
+ array_push($resultObj['cats'],array("id"=>'id35'.$guiId,"title"=>$guicats[0]));
+ break;
+ case 'post':
+ $catalogIDs = get_catalogs_by_supported_type(get_catalogs_for_gui($guiId),'getrecords','post');
+ break;
+ case 'soap':
+ $catalogIDs = get_catalogs_by_supported_type(get_catalogs_for_gui($guiId),'getrecords','soap');
+ break;
+ default:
+ $catalogIDs = get_catalogs_by_supported_type(get_catalogs_for_gui($guiId),'getrecords','get');
+ }
+
+ //main controller
+ foreach($catalogIDs as $catalog_id=>$url){
+ //$cat_obj = new csw();
+ //$cat_obj->createCatObjFromDB($catalogs);
+ list($getrecordsurl,$getrecordsxml) = getrecords_get_build_query($url,$simplesearch);
+ if($DEBUG_)
+ array_push($resultObj['cats'],array("id"=>$catalog_id,"title"=>$getrecordsurl));
+ //Create Record Objects
+ $RecordObj = new cswrecord();
+ $RecordObj->createCSWRecordFromXML($getrecordsurl,$getrecordsxml);
+
+ //Populate JSON for each summary record for each catalog
+ foreach ($RecordObj->SummaryRecordsArray as $SummaryRecordObj){
+ $title = $SummaryRecordObj->getTitle();
+ $abstract = $SummaryRecordObj->getAbstract();
+ if($DEBUG_)
+ array_push($resultObj['cats'],array("id"=>$catalog_id,"title"=>$title));
+ }
+
+ }
+}
+
+/**
+ * Build Query
+ * @param $getrecords_url
+ * @return array URL and XML
+ */
+function getrecords_build_query($getrecords_url){
+
+ //CHECK FOR COMMAND, GET POST. HANDLE THINGS HERE
+ return array('url'=>$url,'xml'=>$xml);
+}
+
+/**
+ *
+ * @param $gui_id
+ * @param $getrecords_type
+ * @return array list of cats
+ */
+function get_catalogs_for_gui($gui_id){
+ $sql = "select fkey_cat_id from gui_cat where fkey_gui_id = $1";
+ $v = array($gui_id);
+ $t = array('s');
+ $res = db_prep_query($sql,$v,$t);
+ $list_of_cat = array();
+ while($row = db_fetch_array($res)){
+ array_push($list_of_cat,$row['fkey_cat_id']);
+ }
+ return $list_of_cat;
+}
+
+function get_url_for_operation($catalog_id,$operation_type,$fetch_mode){
+
+}
+
+function do_getrecords_get($catalog_id_array){
+
+}
+
+/**
+ * http://geomatics.nlr.nl/excat/csw?request=GetRecords&service=CSW&version=2.0.2&ResultType=results&TypeName=csw:Record&TYPENAMES=csw:dataset
+ * @param $url
+ * @param $search
+ * @return unknown_type
+ */
+function getrecords_get_build_query($url,$search){
+
+ $request = 'GetRecords';
+ $version = '2.0.2';
+ $resulttype = 'results';
+ $typename = 'csw:Record';
+ $service='CSW';
+
+ $url_encode = $url.'?request='.$request.'&service='.$service.'&ResultType='.$resulttype.'&TypeNames='.$typename.'&version='.$version;
+ //$url_encode = urlencode($url_encode);
+
+ return array($url_encode,null);
+}
+
+/**
+ * Get catalog URL which support fetch mode for operation type
+ * @param $cat_array array of catalogs for guis
+ * @param $operation_type getrecords,describerecords..
+ * @param $fetch_mode get|post|soap
+ * @return array of supported catalog ids
+ */
+function get_catalogs_by_supported_type($cat_array,$operation_type,$fetch_mode){
+
+ //array_push($resultObj['cats'],array("id"=>'id5',"title"=>$operation_type));
+ $cat_supported = array();
+ $sql = "select fk_cat_id,param_value from cat_op_conf where param_name=$1 and param_type=$2";
+ $v = array($fetch_mode,$operation_type);
+ $t = array('s','s');
+ $res = db_prep_query($sql,$v,$t);
+
+
+ while($row = db_fetch_array($res)){
+ //array_push($list_of_cat,$row['fkey_cat_id']);
+ if($DEBUG_)
+ array_push($resultObj['cats'],array("id"=>'id4',"title"=>$row));
+ if(in_array($row['fk_cat_id'],$cat_array,true)){
+ //array_push($cat_supported,$row['fk_cat_id']);
+ $cat_supported[$row['fk_cat_id']] = $row['param_value'];
+ }
+ }
+ return $cat_supported;
+}
+
+/**
+ * Build XML query for getrecords
+ * @return string xml file
+ * @todo: get values dynamically
+ */
+function build_getrecords_xml() {
+ $xml = '<?xml version="1.0" encoding="UTF-8"?>';
+ $xml .= '<GetRecords';
+ $xml .= 'service="CSW"';
+ $xml .= 'version="2.0.2"';
+ $xml .= 'maxRecords="5"';
+ $xml .= 'startPosition="1"';
+ $xml .= 'resultType="results"';
+ $xml .= 'outputFormat="application/xml"';
+ $xml .= 'outputSchema="http://www.opengis.net/cat/csw/2.0.2"';
+ $xml .= 'xmlns="http://www.opengis.net/cat/csw/2.0.2"';
+ $xml .= 'xmlns:csw="http://www.opengis.net/cat/csw/2.0.2"';
+ $xml .= 'xmlns:ogc="http://www.opengis.net/ogc"';
+ $xml .= 'xmlns:ows="http://www.opengis.net/ows"';
+ $xml .= 'xmlns:dc="http://purl.org/dc/elements/1.1/"';
+ $xml .= 'xmlns:dct="http://purl.org/dc/terms/"';
+ $xml .= 'xmlns:gml="http://www.opengis.net/gml"';
+ $xml .= 'xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"';
+ $xml .= 'xsi:schemaLocation="http://www.opengis.net/cat/csw/2.0.2/CSW-discovery.xsd">';
+ $xml .= '<Query typeNames="csw:Record">';
+ $xml .= '</Query>';
+ $xml .= '</GetRecords>';
+
+ return $xml;
+
+}
+
+function build_simple_query_get()
+{
+
+}
+
+
+function getrecords_post ($url, $postData) {
+ $connection = new connector();
+ $connection->set("httpType", "post");
+ $connection->set("httpContentType", "xml");
+ $connection->set("httpPostData", $postData);
+
+ $e = new mb_notice("CAT REQUEST: " . $url . "\n\n" . $postData);
+ $data = $connection->load($url);
+ if (!$data) {
+ $e = new mb_exception("CAT getrecords returned no result: " . $url . "\n" . $postData);
+ return null;
+ }
+ return $data;
+}
+
+
+
+$json = new Mapbender_JSON();
+$output = $json->encode($resultObj);
+echo $output;
+
?>
\ No newline at end of file
More information about the Mapbender_commits
mailing list