wms_title || $this->wms_title == ""){ echo "alert('Error: no valid capabilities-document !!');"; die; exit; } // wms_title and abstract have previously been urlencoded // this solution may not yet be the ultimate one $add_wms_string = "var wms_".$this->wms_id." = new OpenLayers.Layer.WMS.Untiled(" . "'" . addslashes($this->wms_title) . "'," . "'" . $this->wms_getmap ."'," ."{layers:'"; for($i=1;$iobjLayer);$i++){ $add_wms_string .= addslashes($this->objLayer[$i]->layer_name); if($i!=count($this->objLayer)-1) $add_wms_string .= ","; } $add_wms_string .= "', transparent: 'true'"; $add_wms_string .= ",format: '".$this->gui_wms_mapformat."'});"; if($base) $add_wms_string .= "wms_".$this->wms_id.".isBaseLayer=true;"; $add_wms_string .= "wms_".$this->wms_id.".setVisibility(".($this->gui_wms_visible=="1"?"true":"false").");"; $add_wms_string .= "ol_map.addLayer(wms_".$this->wms_id.");"; echo $add_wms_string; } /** * Compares this WMS to another WMS. * * @return boolean false, if * - the capabilities URLs don't match * - the layer count is different * - the layer names are different * * @param $anotherWms wms this is just another WMS object */ public function equals ($anotherWms) { // If the getMap URLs are not equal, the WMS are not equal. if ($this->wms_getmap != $anotherWms->wms_getmap) { // $e = new mb_notice($this . " != " . $anotherWms . " (getMap URL)"); return false; } // If the layer count is different, the WMS are not equal. if (count($this->objLayer) != count($anotherWms->objLayer)) { // $e = new mb_notice($this . " != " . $anotherWms . " (layer count: " . count($this->objLayer) . ":" . count($anotherWms->objLayer). ")"); return false; } // If the layer names are different, the WMS are not equal. for ($i = 0; $i < count($this->objLayer); $i++) { $name1 = $this->objLayer[$i]->layer_name; $name2 = $anotherWms->objLayer[$i]->layer_name; if ($name1 != $name2) { // $e = new mb_notice($this . " != " . $anotherWms . " (layer names, " . $name1 . " vs. " . $name2 . ")"); return false; } } // $e = new mb_notice($this . " == " . $anotherWms); return true; } /** * The other WMS must be the same as this WMS, but with different * application settings. These application settings are copied, * the local settings are overwritten. * * @return boolean true if the settings could be copied; false * when an error occured. * @param $anotherWms wms The same WMS with possibly other settings */ /* public function copyConfiguration ($anotherWms) { if (!$this->equals($anotherWms)) { $e = new mb_exception("class_wms.php: copyConfiguration(): parameters cannot be copied, it's a different WMS."); return false; } for ($i = 0; $i < count($this->objLayer); $i++) { $myCurrentLayer = $this->objLayer[$i]; $theirCurrentLayer = $anotherWms->objLayer[$i]; $myCurrentLayer->gui_layer_selectable = $theirCurrentLayer->gui_layer_selectable; $myCurrentLayer->gui_layer_visible = $theirCurrentLayer->gui_layer_visible; $myCurrentLayer->gui_layer_queryable = $theirCurrentLayer->gui_layer_queryable; $myCurrentLayer->gui_layer_querylayer = $theirCurrentLayer->gui_layer_querylayer; $myCurrentLayer->gui_layer_style = $theirCurrentLayer->gui_layer_style; } } */ /** * Removes duplicate WMS from an array of WMS. To find duplicates, * two WMS are compared via equals(). * * @return wms[] * @param $wmsArray wms[] */ public static function merge ($wmsArray) { $e = new mb_notice("before: " . implode(", ", $wmsArray)); if (!is_array($wmsArray)) { $e = new mb_exception("class_wms.php: merge(): parameter is NOT an array."); return array(); } if (count($wmsArray) == 0) { $e = new mb_exception("class_wms.php: merge(): parameter is an EMPTY array."); return array(); } $newWmsArray = array(); while (count($wmsArray) > 0) { $currentWms = array_pop($wmsArray); $isNewWms = true; if (get_class($currentWms) != "wms") { $e = new mb_exception("class_wms.php: merge(): current WMS is not a WMS object, but a " . get_class($currentWms)); } else { for ($i = 0; $i < count($newWmsArray) && $isNewWms; $i++) { if ($currentWms->equals($newWmsArray[$i])) { $isNewWms = false; } } if ($isNewWms) { // $e = new mb_notice("adding WMS " . $currentWms); array_push($newWmsArray, $currentWms); } } } // reversal of the array, because the elements were popped // from another array before. // $e = new mb_notice("after: " . implode(", ", array_reverse($newWmsArray))); return array_reverse($newWmsArray); } private function formatExists ($type, $format) { for ($i = 0; $i < count($this->data_type); $i++) { if ($type == $this->data_type[$i] && $format == $this->data_format[$i]) { $e = new mb_warning("WMS format already exists ($type, $format). Violation of WMS spec. Ignoring this WMS format."); return true; } } return false; } public function __toString () { return $this->wms_title; } function createObjFromXML($url){ $x = new connector($url); $data = $x->file; if(!$data){ $this->wms_status = false; return false; } else { $this->wms_status = true; } $values = null; $tags = null; $admin = new administration(); $this->wms_getcapabilities_doc = $data; $this->wms_upload_url = $url; $this->wms_id = ""; $parser = xml_parser_create(""); xml_parser_set_option($parser,XML_OPTION_CASE_FOLDING,0); xml_parser_set_option($parser,XML_OPTION_SKIP_WHITE,1); xml_parser_set_option($parser,XML_OPTION_TARGET_ENCODING,CHARSET); xml_parse_into_struct($parser,$data,$values,$tags); $code = xml_get_error_code($parser); if ($code) { $line = xml_get_current_line_number($parser); $mb_exception = new mb_exception(xml_error_string($code) . " in line " . $line); } xml_parser_free($parser); $section = null; $format = null; $cnt_format = 0; $parent = array(); $myParent = array(); $cnt_layer = -1; $request = null; $layer_style = array(); $cnt_styles = -1; $this->wms_getfeatureinfo = ""; $this->gui_wms_featureinfoformat = ""; foreach ($values as $element) { if(mb_strtoupper($element[tag]) == "WMT_MS_CAPABILITIES" && $element[type] == "open"){ $this->wms_version = $element[attributes][version]; } if(mb_strtoupper($element[tag]) == "TITLE" && $element[level] == '3'){ $this->wms_title = $this->stripEndlineAndCarriageReturn($element[value]); } if(mb_strtoupper($element[tag]) == "ABSTRACT" && $element[level] == '3'){ $this->wms_abstract = $this->stripEndlineAndCarriageReturn($element[value]); } if(mb_strtolower($element[tag]) == "fees"){ $this->fees = $element[value]; } if(mb_strtolower($element[tag]) == "accessconstraints"){ $this->accessconstraints = $element[value]; } if(mb_strtolower($element[tag]) == "contactperson"){ $this->contactperson = $element[value]; } if(mb_strtolower($element[tag]) == "contactposition"){ $this->contactposition = $element[value]; } if(mb_strtolower($element[tag]) == "contactorganization"){ $this->contactorganization = $element[value]; } if(mb_strtolower($element[tag]) == "address"){ $this->address = $element[value]; } if(mb_strtolower($element[tag]) == "city"){ $this->city = $element[value]; } if(mb_strtolower($element[tag]) == "stateorprovince"){ $this->stateorprovince = $element[value]; } if(mb_strtolower($element[tag]) == "postcode"){ $this->postcode = $element[value]; } if(mb_strtolower($element[tag]) == "country"){ $this->country = $element[value]; } if(mb_strtolower($element[tag]) == "contactvoicetelephone"){ $this->contactvoicetelephone = $element[value]; } if(mb_strtolower($element[tag]) == "contactfacsimiletelephone"){ $this->contactfacsimiletelephone = $element[value]; } if(mb_strtolower($element[tag]) == "contactelectronicmailaddress"){ $this->contactelectronicmailaddress = $element[value]; } if(mb_strtolower($element[tag]) == "keyword" && $section != 'layer'){ $this->wms_keyword[count($this->wms_keyword)] = $element[value]; } /*map section*/ if($this->wms_version == "1.0.0"){ if(mb_strtoupper($element[tag]) == "MAP" && $element[type] == "open"){ $section = "map"; } if($section == "map" && mb_strtoupper($element[tag]) == "GET"){ $this->wms_getmap = $element[attributes][onlineResource]; } if($section == "map" && mb_strtoupper($element[tag]) == "FORMAT" && $element[type] == "open"){ $format = "map"; } if(mb_strtoupper($element[tag]) != "FORMAT" && $section == "map" && $format == "map"){ if (!$this->formatExists("map", trim($element[tag]))) { $this->data_type[$cnt_format] = "map"; $this->data_format[$cnt_format] = trim($element[tag]); $cnt_format++; } } if(mb_strtoupper($element[tag]) == "FORMAT" && $element[type] == "close"){ $format = ""; } if(mb_strtoupper($element[tag]) == "MAP" && $element[type] == "close"){ $section = ""; } } else{ if(mb_strtoupper($element[tag]) == "GETMAP" && $element[type] == "open"){ $section = "map"; } if($section == "map" && mb_strtoupper($element[tag]) == "GET" && $element[type] == "open"){ $request = "get"; } if($section == "map" && $request == "get" && mb_strtoupper($element[tag]) == "ONLINERESOURCE"){ $this->wms_getmap = $element[attributes]["xlink:href"]; } if($section == "map" && mb_strtoupper($element[tag]) == "FORMAT"){ if (!$this->formatExists("map", trim($element[value]))) { $this->data_type[$cnt_format] = "map"; $this->data_format[$cnt_format] = trim($element[value]); $cnt_format++; } } if($section == "map" && mb_strtoupper($element[tag]) == "GET" && $element[type] == "close"){ $request = ""; } if(mb_strtoupper($element[tag]) == "GETMAP" && $element[type] == "close"){ $section = ""; } } /*capabilities section*/ if($this->wms_version == "1.0.0"){ if(mb_strtoupper($element[tag]) == "CAPABILITIES" && $element[type] == "open"){ $section = "capabilities"; } if($section == "capabilities" && mb_strtoupper($element[tag]) == "GET"){ $this->wms_getcapabilities = $element[attributes][onlineResource]; } if(mb_strtoupper($element[tag]) == "CAPABILITIES" && $element[type] == "close"){ $section = ""; } } else{ if(mb_strtoupper($element[tag]) == "GETCAPABILITIES" && $element[type] == "open"){ $section = "capabilities"; } if($section == "capabilities" && mb_strtoupper($element[tag]) == "GET" && $element[type] == "open"){ $request = "get"; } if($section == "capabilities" && $request == "get" && mb_strtoupper($element[tag]) == "ONLINERESOURCE"){ $this->wms_getcapabilities = $element[attributes]["xlink:href"]; } if($section == "capabilities" && mb_strtoupper($element[tag]) == "GET" && $element[type] == "close"){ $request = ""; } if(mb_strtoupper($element[tag]) == "GETCAPABILITIES" && $element[type] == "close"){ $section = ""; } } /*featureInfo section*/ if($this->wms_version == "1.0.0"){ if(mb_strtoupper($element[tag]) == "FEATUREINFO" && $element[type] == "open"){ $section = "featureinfo"; } if($section == "featureinfo" && mb_strtoupper($element[tag]) == "GET"){ $this->wms_getfeatureinfo = $element[attributes][onlineResource]; } if($section == "featureinfo" && mb_strtoupper($element[tag]) == "FORMAT" && $element[type] == "open"){ $format = "featureinfo"; } if(mb_strtoupper($element[tag]) != "FORMAT" && $section == "featureinfo" && $format == "featureinfo"){ if (!$this->formatExists("featureinfo", trim($element[tag]))) { $this->data_type[$cnt_format] = "featureinfo"; $this->data_format[$cnt_format] = trim($element[tag]); $cnt_format++; } } if(mb_strtoupper($element[tag]) == "FORMAT" && $element[type] == "close"){ $format = ""; } if(mb_strtoupper($element[tag]) == "FEATUREINFO" && $element[type] == "close"){ $section = ""; } } else{ if(mb_strtoupper($element[tag]) == "GETFEATUREINFO" && $element[type] == "open"){ $section = "featureinfo"; } if($section == "featureinfo" && mb_strtoupper($element[tag]) == "GET" && $element[type] == "open"){ $request = "get"; } if($section == "featureinfo" && $request == "get" && mb_strtoupper($element[tag]) == "ONLINERESOURCE"){ $this->wms_getfeatureinfo = $element[attributes]["xlink:href"]; } if($section == "featureinfo" && mb_strtoupper($element[tag]) == "FORMAT"){ if (!$this->formatExists("featureinfo", trim($element[value]))) { $this->data_type[$cnt_format] = "featureinfo"; $this->data_format[$cnt_format] = trim($element[value]); $cnt_format++; } } if($section == "featureinfo" && mb_strtoupper($element[tag]) == "GET" && $element[type] == "close"){ $request = ""; } if(mb_strtoupper($element[tag]) == "GETFEATUREINFO" && $element[type] == "close"){ $section = ""; } } /*exception section*/ if($this->wms_version == "1.0.0"){ if(mb_strtoupper($element[tag]) == "EXCEPTION" && $element[type] == "open"){ $section = "exception"; } if($section == "exception" && mb_strtoupper($element[tag]) == "FORMAT" && $element[type] == "open"){ $format = "exception"; } if(mb_strtoupper($element[tag]) != "FORMAT" && $section == "exception" && $format == "exception"){ $this->data_type[$cnt_format] = "exception"; $this->data_format[$cnt_format] = trim($element[tag]); $cnt_format++; } if($section == "exception" && mb_strtoupper($element[tag]) == "FORMAT" && $element[type] == "close"){ $format = ""; } if(mb_strtoupper($element[tag]) == "EXCEPTION" && $element[type] == "close"){ $section = ""; } } else{ if(mb_strtoupper($element[tag]) == "EXCEPTION" && $element[type] == "open"){ $section = "exception"; } if($section == "exception" && mb_strtoupper($element[tag]) == "FORMAT"){ $this->data_type[$cnt_format] = "exception"; $this->data_format[$cnt_format] = trim($element[value]); $cnt_format++; } if(mb_strtoupper($element[tag]) == "EXCEPTION" && $element[type] == "close"){ $section = ""; } } /*legend section*/ if($this->wms_version == "1.0.0"){ } else{ if(mb_strtoupper($element[tag]) == "GETLEGENDGRAPHIC" && $element[type] == "open"){ $section = "legend"; } if($section == "legend" && mb_strtoupper($element[tag]) == "GET" && $element[type] == "open"){ $request = "get"; } if($section == "legend" && $request == "get" && mb_strtoupper($element[tag]) == "ONLINERESOURCE"){ $this->wms_getlegendurl = $element[attributes]["xlink:href"]; } if($section == "legend" && mb_strtoupper($element[tag]) == "GET" && $element[type] == "close"){ $request = ""; } if(mb_strtoupper($element[tag]) == "GETLEGENDGRAPHIC" && $element[type] == "close"){ $section = ""; } } /* sld section */ if(mb_strtoupper($element[tag]) == "USERDEFINEDSYMBOLIZATION" && $element[type] == "complete"){ $this->wms_supportsld = $element[attributes]["SupportSLD"]; $this->wms_userlayer = $element[attributes]["UserLayer"]; $this->wms_userstyle = $element[attributes]["UserStyle"]; $this->wms_remotewfs = $element[attributes]["RemoteWFS"]; } /*layer section*/ if(mb_strtoupper($element[tag]) == "LAYER"){ $section = "layer"; if ($element[type] == "open") { $cnt_epsg = -1; $cnt_layer++; $parent[$element[level]+1] = $cnt_layer; $myParent[$cnt_layer]= $parent[$element[level]]; $this->addLayer($cnt_layer,$myParent[$cnt_layer]); $this->objLayer[$cnt_layer]->layer_queryable = $element[attributes][queryable]; } if ($element[type] == "close") { } } /* attribution */ if(mb_strtoupper($element[tag]) == "ATTRIBUTION"){ if ($element[type] == "open") { $section = "attribution"; } if ($element[type] == "close") { $section = "layer"; } } /* styles */ if(mb_strtoupper($element[tag]) == "STYLE"){ $section = "style"; if($cnt_layer != $layer_style){ $layer_style = $cnt_layer; $cnt_styles = -1; } if ($element[type] == "open") { $cnt_styles++; } if ($element[type] == "close") { $section = "layer"; } } if($section == "style"){ if(mb_strtoupper($element[tag]) == "NAME"){ $this->objLayer[$cnt_layer]->layer_style[$cnt_styles]["name"] = ($element[value] ? $element[value] : 'default'); } if(mb_strtoupper($element[tag]) == "TITLE"){ $this->objLayer[$cnt_layer]->layer_style[$cnt_styles]["title"] = ($element[value] ? $element[value] : ''); } if(mb_strtoupper($element[tag]) == "LEGENDURL" && $element[type] == "open"){ $legendurl = true; } if($legendurl && mb_strtoupper($element[tag]) == "FORMAT"){ $this->objLayer[$cnt_layer]->layer_style[$cnt_styles]["legendurlformat"] = $element[value]; } if($legendurl && mb_strtoupper($element[tag]) == "ONLINERESOURCE"){ $this->objLayer[$cnt_layer]->layer_style[$cnt_styles]["legendurl"] = $element[attributes]["xlink:href"]; } if(mb_strtoupper($element[tag]) == "LEGENDURL" && $element[type] == "close"){ $legendurl = false; } } /* end of styles */ if($section == "layer"){ if(mb_strtoupper($element[tag]) == "NAME"){ $this->objLayer[$cnt_layer]->layer_name = $element[value]; } if(mb_strtoupper($element[tag]) == "TITLE"){ $this->objLayer[$cnt_layer]->layer_title = $this->stripEndlineAndCarriageReturn($element[value]); } if(mb_strtoupper($element[tag]) == "ABSTRACT"){ $this->objLayer[$cnt_layer]->layer_abstract = $this->stripEndlineAndCarriageReturn($element[value]); } if(mb_strtoupper($element[tag]) == "KEYWORD"){ array_push($this->objLayer[$cnt_layer]->layer_keyword, trim($element[value])); } if(mb_strtoupper($element[tag]) == "DATAURL" && $element[type] == "open"){ $dataurl = true; } if($dataurl && mb_strtoupper($element[tag]) == "ONLINERESOURCE"){ $this->objLayer[$cnt_layer]->layer_dataurl_href = $element[attributes]["xlink:href"]; } if(mb_strtoupper($element[tag]) == "DATAURL" && $element[type] == "close"){ $dataurl = false; } if(mb_strtoupper($element[tag]) == "METADATAURL" && $element[type] == "open"){ $metadataurl = true; } if($metadataurl && mb_strtoupper($element[tag]) == "ONLINERESOURCE"){ $this->objLayer[$cnt_layer]->layer_metadataurl = $element[attributes]["xlink:href"]; } if(mb_strtoupper($element[tag]) == "METADATAURL" && $element[type] == "close"){ $metadataurl = false; } if(mb_strtoupper($element[tag]) == "SRS"){ $this->objLayer[$cnt_layer]->wms_srs1 = $element[value]; // unique srs only, see http://www.mapbender.org/index.php/Arrays_with_unique_entries $this->wms_srs = array_keys(array_flip(explode(" ", $this->objLayer[0]->wms_srs1))); } if(mb_strtoupper($element[tag]) == "LATLONBOUNDINGBOX"){ $cnt_epsg++; $this->objLayer[$cnt_layer]->layer_epsg[$cnt_epsg]["epsg"] = "EPSG:4326"; $this->objLayer[$cnt_layer]->layer_epsg[$cnt_epsg]["minx"] = $element[attributes][minx]; $this->objLayer[$cnt_layer]->layer_epsg[$cnt_epsg]["miny"] = $element[attributes][miny]; $this->objLayer[$cnt_layer]->layer_epsg[$cnt_epsg]["maxx"] = $element[attributes][maxx]; $this->objLayer[$cnt_layer]->layer_epsg[$cnt_epsg]["maxy"] = $element[attributes][maxy]; } if(mb_strtoupper($element[tag]) == "BOUNDINGBOX" && $element[attributes][SRS] != "EPSG:4326"){ $cnt_epsg++; $this->objLayer[$cnt_layer]->layer_epsg[$cnt_epsg]["epsg"] = $element[attributes][SRS]; $this->objLayer[$cnt_layer]->layer_epsg[$cnt_epsg]["minx"] = $element[attributes][minx]; $this->objLayer[$cnt_layer]->layer_epsg[$cnt_epsg]["miny"] = $element[attributes][miny]; $this->objLayer[$cnt_layer]->layer_epsg[$cnt_epsg]["maxx"] = $element[attributes][maxx]; $this->objLayer[$cnt_layer]->layer_epsg[$cnt_epsg]["maxy"] = $element[attributes][maxy]; // a default epsg for mapbender if($cnt_layer == 0 && $this->default_epsg == 0 && mb_strlen(trim($element[attributes][SRS]))>= 10){ $this->default_epsg = $cnt_epsg; } } if(mb_strtoupper($element[tag]) == "SCALEHINT"){ if($element[attributes][max]>1000) $max = 0; else $max = $element[attributes][max]; if($element[attributes][min]>1000) $min = 0; else $min = $element[attributes][min]; $this->objLayer[$cnt_layer]->layer_minscale = round(($min * 2004.3976484406788493955738891127)); $this->objLayer[$cnt_layer]->layer_maxscale = round(($max * 2004.3976484406788493955738891127)); } } else { continue; } } if(!$this->wms_title || $this->wms_title == "" || !$this->wms_getmap || $this->wms_getmap == ""){ $this->wms_status = false; $this->optimizeWMS(); $e = new mb_exception("class_wms: createObjFromXML: WMS " . $url . " could not be loaded."); return false; } else{ $this->wms_status = true; $this->optimizeWMS(); $e = new mb_notice("class_wms: createObjFromXML: WMS " . $url . " has been loaded successfully."); return true; } } /** * private function */ function optimizeWMS() { /*define defaults for wms-version 1.0.0*/ $map_default_ok = false; $featureinfo_default_ok = false; $exception_default_ok = false; if($this->wms_version == "1.0.0"){ $map_default = "PNG"; $featureinfo_default = "MIME"; $exception_default = "INIMAGE"; } /*define defaults for wms-version 1.1.0 and 1.1.1*/ else{ $map_default = "image/png"; $featureinfo_default = "text/html"; $exception_default = "application/vnd.ogc.se_inimage"; } #some default $this->gui_wms_visible = 1; $this->gui_wms_opacity = 100; /*if the rootlayer has no epsg...*/ if($this->objLayer[0]->layer_epsg[0]["epsg"] == ""){ $this->objLayer[0]->layer_epsg = $this->objLayer[1]->layer_epsg; for($i=0;$iobjLayer[0]->layer_epsg);$i++){ for($j=1; $jobjLayer); $j++){ if($this->objLayer[0]->layer_epsg[$i]["epsg"] == $this->objLayer[$j]->layer_epsg[$i]["epsg"]){ if($this->objLayer[$j]->layer_epsg[$i]["minx"]<$this->objLayer[0]->layer_epsg[$i]["minx"]){ $this->objLayer[0]->layer_epsg[$i]["minx"] = $this->objLayer[$j]->layer_epsg[$i]["minx"]; } if($this->objLayer[$j]->layer_epsg[$i]["miny"]<$this->objLayer[0]->layer_epsg[$i]["miny"]){ $this->objLayer[0]->layer_epsg[$i]["miny"] = $this->objLayer[$j]->layer_epsg[$i]["miny"]; } if($this->objLayer[$j]->layer_epsg[$i]["maxx"]>$this->objLayer[0]->layer_epsg[$i]["maxx"]){ $this->objLayer[0]->layer_epsg[$i]["maxx"] = $this->objLayer[$j]->layer_epsg[$i]["maxx"]; } if($this->objLayer[$j]->layer_epsg[$i]["maxy"]>$this->objLayer[0]->layer_epsg[$i]["maxy"]){ $this->objLayer[0]->layer_epsg[$i]["maxy"] = $this->objLayer[$j]->layer_epsg[$i]["maxy"]; } } } } } for($i=0;$iobjLayer);$i++){ if(count($this->objLayer[$i]->layer_epsg) == 0 && count($this->objLayer[0]->layer_epsg) > 0){ $this->objLayer[$i]->layer_epsg = $this->objLayer[0]->layer_epsg; } if(!is_int($this->objLayer[$i]->layer_parent)){ $this->objLayer[$i]->layer_abstract = $this->wms_abstract; for ($r = 0; $r < count($this->wms_keyword); $r++) { array_push($this->objLayer[$i]->layer_keyword, trim($this->wms_keyword[$r])); } } if($this->objLayer[$i]->layer_name == ""){ $this->objLayer[$i]->layer_name = $this->objLayer[$i]->layer_title; } if($this->objLayer[$i]->layer_minscale == ""){ $this->objLayer[$i]->layer_minscale = 0; } if($this->objLayer[$i]->layer_maxscale == ""){ $this->objLayer[$i]->layer_maxscale = 0; } if($this->objLayer[$i]->layer_queryable == ""){ $this->objLayer[$i]->layer_queryable = 0; } $this->objLayer[$i]->gui_layer_minscale = $this->objLayer[$i]->layer_minscale; $this->objLayer[$i]->gui_layer_maxscale = $this->objLayer[$i]->layer_maxscale; } for($i=0;$idata_format);$i++){ if(mb_strtolower($this->data_type[$i]) == 'map' && mb_strtoupper($this->data_format[$i]) == mb_strtoupper($map_default)){ $this->gui_wms_mapformat = mb_strtolower($map_default); $map_default_ok = true; } if(mb_strtolower($this->data_type[$i]) == 'featureinfo' && mb_strtoupper($this->data_format[$i]) == mb_strtoupper($featureinfo_default)){ $this->gui_wms_featureinfoformat = mb_strtolower($featureinfo_default); $featureinfo_default_ok = true; } if(mb_strtolower($this->data_type[$i]) == 'exception' && mb_strtolower($this->data_format[$i]) == mb_strtolower($exception_default)){ $this->gui_wms_exceptionformat = mb_strtolower($exception_default); $exception_default_ok = true; } } if($map_default_ok == false){ for($i=0;$idata_format);$i++){ if(mb_strtolower($this->data_type[$i]) == "map" ){$this->gui_wms_mapformat = $this->data_format[$i]; break;} } } if($featureinfo_default_ok == false){ for($i=0;$idata_format);$i++){ if(mb_strtolower($this->data_type[$i]) == "featureinfo" ){$this->gui_wms_featureinfoformat = $this->data_format[$i]; break;} } } if($exception_default_ok == false){ for($i=0;$idata_format);$i++){ if(mb_strtolower($this->data_type[$i]) == "exception" ){$this->gui_wms_exceptionformat = $this->data_format[$i]; break;} } } if(count($this->objLayer[0]->layer_epsg)>1){ $this->gui_wms_epsg = $this->objLayer[0]->layer_epsg[$this->default_epsg][epsg]; } else{ $this->gui_wms_epsg = $this->objLayer[0]->layer_epsg[0][epsg]; } /*the queryable layers*/ for($i=0; $iobjLayer); $i++){ if($this->objLayer[$i]->layer_queryable == 1){ $this->objLayer[$i]->gui_layer_queryable = 1; } else{ $this->objLayer[$i]->gui_layer_queryable = 0; } } for($i=0; $iobjLayer); $i++){ $this->objLayer[$i]->layer_pos=$i; } /* fill sld variables when empty */ if($this->wms_supportsld == ""){ $this->wms_supportsld = 0; } if($this->wms_userlayer == ""){ $this->wms_userlayer = 0; } if($this->wms_userstyle == ""){ $this->wms_userstyle = 0; } if($this->wms_remotewfs == ""){ $this->wms_remotewfs = 0; } } function displayWMS(){ echo "
id: " . $this->wms_id . "
"; echo "version: " . $this->wms_version . "
"; echo "title: " . $this->wms_title . "
"; echo "abstract: " . $this->wms_abstract . "
"; echo "maprequest: " . $this->wms_getmap . "
"; echo "capabilitiesrequest: " . $this->wms_getcapabilities . "
"; echo "featureinforequest: " . $this->wms_getfeatureinfo . "
"; echo "gui_wms_mapformat: " . $this->gui_wms_mapformat . "
"; echo "gui_wms_featureinfoformat: " . $this->gui_wms_featureinfoformat . "
"; echo "gui_wms_exceptionformat: " . $this->gui_wms_exceptionformat . "
"; echo "gui_wms_epsg: " . $this->gui_wms_epsg . "
"; echo "wms_srs: " . $this->objLayer[0]->wms_srs1 . "
"; echo "gui_wms_visible: " . $this->gui_wms_visible . "
"; echo "gui_wms_opacity: " . $this->gui_wms_opacity . "
"; echo "support_sld: " . $this->wms_supportsld . "
"; for($i=0; $idata_type);$i++){ echo $this->data_type[$i]. " -> ".$this->data_format[$i]. "
"; } for($i=0; $iobjLayer); $i++){ echo "
"; echo "id: ".$this->objLayer[$i]->layer_id ." parent: ".$this->objLayer[$i]->layer_parent." name: ".$this->objLayer[$i]->layer_name; echo " title: ".$this->objLayer[$i]->layer_title. " queryable: ".$this->objLayer[$i]->layer_queryable." minScale: ". $this->objLayer[$i]->layer_minscale." maxScale: ".$this->objLayer[$i]->layer_maxscale.""; echo "
dataurl: ".$this->objLayer[$i]->layer_dataurl_href. ""; echo "
metadataurl: ".$this->objLayer[$i]->layer_metadataurl. ""; echo ""; for($j=0; $jobjLayer[$i]->layer_epsg);$j++){ echo ""; echo ""; echo ""; } echo "
".$this->objLayer[$i]->layer_epsg[$j][epsg]."".$this->objLayer[$i]->layer_epsg[$j][minx]."".$this->objLayer[$i]->layer_epsg[$j][miny]."".$this->objLayer[$i]->layer_epsg[$j][maxx]."".$this->objLayer[$i]->layer_epsg[$j][maxy]."
"; echo "layerstyle:"; echo ""; echo ""; for($j=0; $jobjLayer[$i]->layer_style);$j++){ echo ""; } echo "
nametitlelegendurllegendurlformat
".$this->objLayer[$i]->layer_style[$j][name]."".$this->objLayer[$i]->layer_style[$j][title]."".$this->objLayer[$i]->layer_style[$j][legendurl]."".$this->objLayer[$i]->layer_style[$j][legendurlformat]."
"; echo "
"; echo "
"; } } function addLayer($id,$parent){ $this->objLayer[count($this->objLayer)] = new layer($id,$parent); } /** * private function */ function stripEndlineAndCarriageReturn($string) { return preg_replace("/\n/", "", preg_replace("/\r/", " ", $string)); } function createJsObjFromWMS($parent=0){ echo $this->createJsObjFromWMS_($parent); } function newLayer ($currentLayer, $currentExtent) { $pos = $currentLayer["extension"]["LAYER_POS"]; $parent = $currentLayer["extension"]["LAYER_PARENT"]; $this->addLayer($pos, $parent); // set layer data $layerIndex = count($this->objLayer) - 1; $newLayer = $this->objLayer[$layerIndex]; $newLayer->layer_uid = $currentLayer["extension"]["LAYER_ID"]; $newLayer->layer_name = $currentLayer["name"]; $newLayer->layer_title = $currentLayer["title"]; $newLayer->layer_dataurl_href = $currentLayer["dataurl"]; $newLayer->layer_pos = $currentLayer["extension"]["LAYER_POS"]; $newLayer->layer_queryable = $currentLayer["queryable"]; $newLayer->layer_minscale = $currentLayer["extension"]["MINSCALE"]; $newLayer->layer_maxscale = $currentLayer["extension"]["MAXSCALE"]; $newLayer->layer_metadataurl = $currentLayer["metadataurl"]; $newLayer->gui_layer_wms_id = $currentLayer["extension"]["WMS_ID"]; $newLayer->gui_layer_status = $currentLayer["extension"]["GUI_STATUS"]; $newLayer->gui_layer_style = ""; // TODO: Add correct data $newLayer->gui_layer_selectable = $currentLayer["extension"]["GUI_SELECTABLE"]; if (isset($currentLayer["extension"]["OVERVIEWHIDDEN"])) { $newLayer->gui_layer_visible = ($currentLayer["extension"]["OVERVIEWHIDDEN"] === "1") ? false : true; } else { $newLayer->gui_layer_visible = $currentLayer["visible"]; } $newLayer->gui_layer_queryable = $currentLayer["extension"]["GUI_QUERYABLE"]; $newLayer->gui_layer_querylayer = $currentLayer["extension"]["QUERYLAYER"]; $newLayer->gui_layer_minscale = $currentLayer["extension"]["GUI_MINSCALE"]; $newLayer->gui_layer_maxscale = $currentLayer["extension"]["GUI_MAXSCALE"]; if (isset($currentLayer["extension"]["WFSFEATURETYPE"])) { $newLayer->gui_layer_wfs_featuretype = $currentLayer["extension"]["WFSFEATURETYPE"]; } $newLayer->layer_abstract = $currentLayer["abstract"]; // // set layer epsg // $newLayer->layer_epsg = array(); if ($currentLayer["extension"]["EPSG"]) { $layerEpsgArray = array(); $layerMinXArray = array(); $layerMinYArray = array(); $layerMaxXArray = array(); $layerMaxYArray = array(); if (!is_array($currentLayer["extension"]["EPSG"])) { $layerEpsgArray[0] = $currentLayer["extension"]["EPSG"]; $layerMinXArray[0] = $currentLayer["extension"]["MINX"]; $layerMinYArray[0] = $currentLayer["extension"]["MINY"]; $layerMaxXArray[0] = $currentLayer["extension"]["MAXX"]; $layerMaxYArray[0] = $currentLayer["extension"]["MAXY"]; } else { $layerEpsgArray = $currentLayer["extension"]["EPSG"]; $layerMinXArray = $currentLayer["extension"]["MINX"]; $layerMinYArray = $currentLayer["extension"]["MINY"]; $layerMaxXArray = $currentLayer["extension"]["MAXX"]; $layerMaxYArray = $currentLayer["extension"]["MAXY"]; } for ($i=0; $i < count($layerEpsgArray); $i++) { $currentLayerEpsg = array(); $currentLayerEpsg["epsg"] = $layerEpsgArray[$i]; $currentLayerEpsg["minx"] = floatval($layerMinXArray[$i]); $currentLayerEpsg["miny"] = floatval($layerMinYArray[$i]); $currentLayerEpsg["maxx"] = floatval($layerMaxXArray[$i]); $currentLayerEpsg["maxy"] = floatval($layerMaxYArray[$i]); array_push($newLayer->layer_epsg, $currentLayerEpsg); } } // // set layer style // for ($i = 0; $i < count($currentLayer["style"]); $i++) { $layerStyleIndex = count($newLayer->gui_layer_style) - 1; $newLayer->layer_style[$layerStyleIndex] = array(); $newLayer->layer_style[$layerStyleIndex]["name"] = $currentLayer["style"][$i]["name"]; $newLayer->layer_style[$layerStyleIndex]["title"] = $currentLayer["style"][$i]["title"]; $newLayer->layer_style[$layerStyleIndex]["legendurl"] = $currentLayer["style"][$i]["legendurl"]; $newLayer->layer_style[$layerStyleIndex]["legendurl_format"] = $currentLayer["style"][$i]["legendurl_type"]; } } function createJsObjFromWMS_($parent=0){ $str = ""; if(!$this->wms_title || $this->wms_title == ""){ $str .= "alert('Error: no valid capabilities-document !!');"; die; exit; } if($parent){ $str .= "parent."; } // wms_title and abstract have previously been urlencoded // this solution may not yet be the ultimate one $add_wms_string = "add_wms(" . "'" . $this->wms_id ."'," . "'" . $this->wms_version ."'," . "'" . addslashes($this->wms_title) . "'," . "'" . addslashes($this->wms_abstract) ."'," . "'" . $this->wms_getmap ."'," . "'" . $this->wms_getfeatureinfo ."'," . "'" . $this->wms_getlegendurl ."'," . "'" . $this->wms_filter ."'," . "'" . $this->gui_wms_mapformat . "'," . "'" . $this->gui_wms_featureinfoformat . "'," . "'" . $this->gui_wms_exceptionformat . "'," . "'" . $this->gui_wms_epsg ."'," . "'" . $this->gui_wms_visible ."'," . "'" . $this->gui_wms_opacity ."'," . "'" . $this->gui_wms_sldurl ."" . "');"; $str .= $add_wms_string; for($i=0;$idata_format);$i++){ if($parent){ $str .= "parent."; } $str .= "wms_add_data_type_format('". $this->data_type[$i] ."','". $this->data_format[$i] ."');"; } for($i=0; $iobjLayer); $i++){ if($parent){ $str .= "parent."; } $str .= "wms_add_layer('". $this->objLayer[$i]->layer_parent ."','". $this->objLayer[$i]->layer_uid ."','". addslashes($this->objLayer[$i]->layer_name) . "','". addslashes($this->objLayer[$i]->layer_title) ."','". $this->objLayer[$i]->layer_dataurl_href ."','". $this->objLayer[$i]->layer_pos ."','". $this->objLayer[$i]->layer_queryable ."','". $this->objLayer[$i]->layer_minscale . "','". $this->objLayer[$i]->layer_maxscale ."','". $this->objLayer[$i]->layer_metadataurl ."','". $this->objLayer[$i]->gui_layer_wms_id ."','". $this->objLayer[$i]->gui_layer_status ."','". $this->objLayer[$i]->gui_layer_style ."','". $this->objLayer[$i]->gui_layer_selectable ."','". $this->objLayer[$i]->gui_layer_visible ."','". $this->objLayer[$i]->gui_layer_queryable ."','". $this->objLayer[$i]->gui_layer_querylayer ."','". $this->objLayer[$i]->gui_layer_minscale ."','". $this->objLayer[$i]->gui_layer_maxscale ."','". $this->objLayer[$i]->gui_layer_wfs_featuretype ."');"; for($j=0; $jobjLayer[$i]->layer_epsg);$j++){ if($i==0){ if($parent){ $str .= "parent."; } $str .= "wms_addSRS('". $this->objLayer[$i]->layer_epsg[$j]["epsg"] ."','". $this->objLayer[$i]->layer_epsg[$j]["minx"] ."','". $this->objLayer[$i]->layer_epsg[$j]["miny"] ."','". $this->objLayer[$i]->layer_epsg[$j]["maxx"] ."','". $this->objLayer[$i]->layer_epsg[$j]["maxy"] ."');"; } if($parent){ $str .= "parent."; } $str .= "layer_addEpsg('". $this->objLayer[$i]->layer_epsg[$j]["epsg"] ."','". $this->objLayer[$i]->layer_epsg[$j]["minx"] ."','". $this->objLayer[$i]->layer_epsg[$j]["miny"] ."','". $this->objLayer[$i]->layer_epsg[$j]["maxx"] ."','". $this->objLayer[$i]->layer_epsg[$j]["maxy"] ."');"; } for($j=0; $jobjLayer[$i]->layer_style);$j++){ if($parent){ $str .= "parent."; } $str .= "wms_addLayerStyle('".$this->objLayer[$i]->layer_style[$j]["name"]. "', '".$this->objLayer[$i]->layer_style[$j]["title"]. "', ".$j. ",".$i. ",'".$this->objLayer[$i]->layer_style[$j]["legendurl"]. "', '".$this->objLayer[$i]->layer_style[$j]["legendformat"]."');"; } } return $str; } function createJsLayerObjFromWMS($parent=0, $layer_name){ if(!$this->wms_title || $this->wms_title == ""){ echo " alert('Error: no valid capabilities-document !!');"; die; exit; } if($parent){ echo "parent."; } // wms_title and abstract have previously been urlencoded // this solution may not yet be the ultimate one print("add_wms('". $this->wms_id ."','". $this->wms_version ."','". preg_replace("/'/", "", $this->wms_title) ."','". preg_replace("/'/", "", $this->wms_abstract) ."','". $this->wms_getmap ."','" . $this->wms_getfeatureinfo ."','". $this->wms_getlegendurl ."','". $this->wms_filter ."','". $this->gui_wms_mapformat ."','". $this->gui_wms_featureinfoformat ."','". $this->gui_wms_exceptionformat . "','". $this->gui_wms_epsg ."','". $this->gui_wms_visible ."','". $this->gui_wms_opacity ."','". $this->gui_wms_sldurl ."');"); for($i=0;$idata_format);$i++){ if($parent){ echo "parent."; } echo "wms_add_data_type_format('". $this->data_type[$i] ."','". $this->data_format[$i] ."');"; } for($i=0; $iobjLayer); $i++){ if($this->objLayer[$i]->layer_name == $layer_name|| $this->objLayer[$i]->layer_pos == 0){ if($parent){ echo "parent."; } print ("wms_add_layer('". $this->objLayer[$i]->layer_parent ."','". $this->objLayer[$i]->layer_uid ."','". $this->objLayer[$i]->layer_name . "','". addslashes($this->objLayer[$i]->layer_title) ."','". $this->objLayer[$i]->layer_dataurl_href ."','". $this->objLayer[$i]->layer_pos ."','". $this->objLayer[$i]->layer_queryable ."','". $this->objLayer[$i]->layer_minscale . "','". $this->objLayer[$i]->layer_maxscale ."','". $this->objLayer[$i]->layer_metadataurl ."','". $this->objLayer[$i]->gui_layer_wms_id ."','". $this->objLayer[$i]->gui_layer_status ."','". $this->objLayer[$i]->gui_layer_style ."','". $this->objLayer[$i]->gui_layer_selectable ."','". $this->objLayer[$i]->gui_layer_visible ."','". $this->objLayer[$i]->gui_layer_queryable ."','". $this->objLayer[$i]->gui_layer_querylayer ."','". $this->objLayer[$i]->gui_layer_minscale ."','". $this->objLayer[$i]->gui_layer_maxscale ."','". $this->objLayer[$i]->gui_layer_wfs_featuretype ."');"); for($j=0; $jobjLayer[$i]->layer_epsg);$j++){ if($i==0){ if($parent){ echo "parent."; } print("wms_addSRS('". $this->objLayer[$i]->layer_epsg[$j]["epsg"] ."','". $this->objLayer[$i]->layer_epsg[$j]["minx"] ."','". $this->objLayer[$i]->layer_epsg[$j]["miny"] ."','". $this->objLayer[$i]->layer_epsg[$j]["maxx"] ."','". $this->objLayer[$i]->layer_epsg[$j]["maxy"] ."');"); } if($parent){ echo "parent."; } print("layer_addEpsg('". $this->objLayer[$i]->layer_epsg[$j]["epsg"] ."','". $this->objLayer[$i]->layer_epsg[$j]["minx"] ."','". $this->objLayer[$i]->layer_epsg[$j]["miny"] ."','". $this->objLayer[$i]->layer_epsg[$j]["maxx"] ."','". $this->objLayer[$i]->layer_epsg[$j]["maxy"] ."');"); } for($j=0; $jobjLayer[$i]->layer_style);$j++){ if($parent){ echo "parent."; } print("wms_addLayerStyle('".$this->objLayer[$i]->layer_style[$j]["name"]."', '".$this->objLayer[$i]->layer_style[$j]["title"]."', ".$j.",".$i.",'".$this->objLayer[$i]->layer_style[$j]["legendurl"]."', '".$this->objLayer[$i]->layer_style[$j]["legendformat"]."');"); } } } } /** * writeObjInDB * * this function exports the information from the xml to the mapbender database */ function writeObjInDB($gui_id){ global $con; $admin = new administration(); $this->checkObj(); db_begin(); # TABLE wms $sql = "INSERT INTO wms (wms_version, wms_title, wms_abstract, wms_getcapabilities, wms_getmap, "; $sql.= "wms_getfeatureinfo, wms_getlegendurl, wms_getcapabilities_doc, wms_upload_url, fees, "; $sql .= "accessconstraints, contactperson, contactposition, contactorganization, address, city, "; $sql .= "stateorprovince, postcode, country, contactvoicetelephone, contactfacsimiletelephone, contactelectronicmailaddress, "; $sql .= "wms_owner,wms_timestamp, "; $sql .= "wms_supportsld, wms_userlayer, wms_userstyle, wms_remotewfs) "; $sql .= "VALUES($1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$20,$21,$22,$23,$24,$25,$26,$27,$28)"; $v = array($this->wms_version,$this->wms_title,$this->wms_abstract,$this->wms_getcapabilities, $this->wms_getmap,$this->wms_getfeatureinfo,$this->wms_getlegendurl,$admin->char_encode($this->wms_getcapabilities_doc), $this->wms_upload_url,$this->fees,$this->accessconstraints,$this->contactperson,$this->contactposition, $this->contactorganization,$this->address,$this->city,$this->stateorprovince,$this->postcode,$this->country, $this->contactvoicetelephone,$this->contactfacsimiletelephone,$this->contactelectronicmailaddress, $_SESSION['mb_user_id'],strtotime("now"), $this->wms_supportsld,$this->wms_userlayer,$this->wms_userstyle,$this->wms_remotewfs ); $t = array('s','s','s','s','s','s','s','s','s','s','s','s','s','s','s','s','s','s','s','s','s','s','i','i','s','s','s','s'); $res = db_prep_query($sql,$v,$t); if(!$res){ db_rollback(); } $myWMS = db_insert_id($con,'wms', 'wms_id'); # TABLE layer and gui_layer for($i=0; $iobjLayer); $i++){ $this->insertLayer($i,$myWMS,$gui_id); $this->insertGuiLayer($i,$myWMS,$gui_id); } #TABLE wms_srs $this->insertSRS($myWMS); # TABLE wms_format $this->insertFormat($myWMS); # TABLE gui_wms $sql ="SELECT MAX(gui_wms_position) AS pos FROM gui_wms WHERE fkey_gui_id = $1"; $v = array($gui_id); $t = array('s'); $res = db_prep_query($sql,$v,$t); if(db_result($res, 0,"pos") > -1){ $position = db_result($res, 0,"pos") + 1; } else{ $position = 0; } $sql ="INSERT INTO gui_wms (fkey_gui_id, fkey_wms_id, gui_wms_position, gui_wms_mapformat, "; $sql .= "gui_wms_featureinfoformat, gui_wms_exceptionformat, gui_wms_epsg)"; $sql .= "VALUES($1,$2,$3,$4,$5,$6,$7)"; $v = array($gui_id,$myWMS,$position,$this->gui_wms_mapformat,$this->gui_wms_featureinfoformat, $this->gui_wms_exceptionformat,$this->gui_wms_epsg ); $t = array('s','i','i','s','s','s','s'); $res = db_prep_query($sql,$v,$t); if(!$res){ db_rollback(); } db_commit(); #Changes JW $this->wms_id = $myWMS; } function insertLayer($i,$myWMS){ global $con; $sql = "INSERT INTO layer(fkey_wms_id, layer_pos, layer_parent, layer_name, layer_title, "; $sql .= " layer_queryable, layer_minscale, layer_maxscale,layer_dataurl,layer_metadataurl,layer_abstract) "; $sql .= "VALUES($1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11)"; if($this->objLayer[$i]->layer_id != null){ $tmpPos = $this->objLayer[$i]->layer_id; } else { $tmpPos .= 0; } if($this->objLayer[$i]->layer_parent == '' && $this->objLayer[$i]->layer_parent != '0'){ $this->objLayer[$i]->layer_parent = ''; } $v = array($myWMS,$tmpPos,$this->objLayer[$i]->layer_parent,$this->objLayer[$i]->layer_name, $this->objLayer[$i]->layer_title, $this->objLayer[$i]->layer_queryable,$this->objLayer[$i]->layer_minscale, $this->objLayer[$i]->layer_maxscale,$this->objLayer[$i]->layer_dataurl_href, $this->objLayer[$i]->layer_metadataurl,$this->objLayer[$i]->layer_abstract); $t = array('i','i','s','s','s','i','i','i','s','s','s'); $res = db_prep_query($sql,$v,$t); if(!$res){ db_rollback(); } else { # save the id of each layer: set param2 true $this->objLayer[$i]->db_id = db_insert_id($con, 'layer','layer_id'); $this->insertLayerEPSG($i); # TABLE layer_style for each layer $this->insertLayerStyle($i); # insert Keywords $this->insertLayerKeyword($i); } } function updateLayer($i,$myWMS){ $sql = "SELECT layer_id FROM layer WHERE fkey_wms_id = $1 AND layer_name = $2"; $v = array($myWMS,$this->objLayer[$i]->layer_name); $t = array('i','s'); $res = db_prep_query($sql,$v,$t); if($row = db_fetch_array($res)){ $l_id = $row['layer_id']; } else{ db_rollback(); $e = new mb_exception("Not found: ".$this->objLayer[$i]->layer_name); return; } $sql = "UPDATE layer SET "; $sql .= "layer_pos = $1, "; $sql .= "layer_parent = $2, "; $sql .= "layer_title = $3, "; $sql .= "layer_queryable = $4, "; $sql .= "layer_minscale = $5, "; $sql .= "layer_maxscale = $6, "; $sql .= "layer_dataurl = $7, "; $sql .= "layer_metadataurl = $8, "; $sql .= "layer_abstract = $9 "; $sql .= "WHERE layer_id = $10"; if($this->objLayer[$i]->layer_id != null){ $tmpPos = $this->objLayer[$i]->layer_id; } else { $tmpPos .= 0; } if($this->objLayer[$i]->layer_parent == '' && $this->objLayer[$i]->layer_parent != '0'){ $this->objLayer[$i]->layer_parent = ''; } $v = array($tmpPos,$this->objLayer[$i]->layer_parent, $this->objLayer[$i]->layer_title, $this->objLayer[$i]->layer_queryable,$this->objLayer[$i]->layer_minscale, $this->objLayer[$i]->layer_maxscale,$this->objLayer[$i]->layer_dataurl_href, $this->objLayer[$i]->layer_metadataurl,$this->objLayer[$i]->layer_abstract, $l_id ); $t = array('i','s','s','i','i','i','s','s','s','i'); $res = db_prep_query($sql,$v,$t); if($this->overwrite == true){ $sql = "UPDATE layer SET "; $sql .= "layer_title = $1, "; $sql .= "layer_abstract = $2 "; $sql .= "WHERE layer_id = $3"; $v = array($this->objLayer[$i]->layer_title,$this->objLayer[$i]->layer_abstract, $l_id); $t = array('s','s','i'); $res = db_prep_query($sql,$v,$t); } if(!$res){ db_rollback(); } else { # save the id of each layer: set param2 true $this->objLayer[$i]->db_id = $l_id; $this->insertLayerEPSG($i); # TABLE layer_style for each layer $this->insertLayerStyle($i); if($this->overwrite == true){ $this->insertLayerKeyword($i); } } } function insertGuiLayer($i,$myWMS,$gui_id){ # table gui_layer $sql = "INSERT INTO gui_layer (fkey_gui_id, fkey_layer_id, gui_layer_wms_id, "; $sql .= "gui_layer_status, gui_layer_selectable, gui_layer_visible, gui_layer_queryable, "; $sql .= "gui_layer_querylayer,gui_layer_minscale,gui_layer_maxscale, gui_layer_priority, gui_layer_style) "; $sql .= "VALUES($1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12)"; if(count($this->objLayer[$i]->layer_style)>0){ $layer_style_name = $this->objLayer[$i]->layer_style[0]["name"]; } else{ $layer_style_name = NULL; } $v = array($gui_id,$this->objLayer[$i]->db_id,$myWMS,1,1,1,$this->objLayer[$i]->layer_queryable, $this->objLayer[$i]->layer_queryable,$this->objLayer[$i]->layer_minscale,$this->objLayer[$i]->layer_maxscale,$i,$layer_style_name); $t = array('s','i','i','i','i','i','i','i','i','i','i','s'); $res = db_prep_query($sql,$v,$t); #$e = new mb_exception("name des insert styles und fkey_layer_id: ".$layer_style_name." --- ".$this->objLayer[$i]->db_id); if(!$res){ db_rollback(); } } function appendGuiLayer($i,$myWMS,$gui_id){ # table gui_layer $sql = "INSERT INTO gui_layer (fkey_gui_id, fkey_layer_id, gui_layer_wms_id, "; $sql .= "gui_layer_status, gui_layer_selectable, gui_layer_visible, gui_layer_queryable, "; $sql .= "gui_layer_querylayer,gui_layer_minscale,gui_layer_maxscale, gui_layer_priority, gui_layer_style) "; $sql .= "VALUES($1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12)"; if(count($this->objLayer[$i]->layer_style)>0){ $layer_style_name = $this->objLayer[$i]->layer_style[0]["name"]; } else{ $layer_style_name = NULL; } $v = array($gui_id,$this->objLayer[$i]->db_id,$myWMS,0,0,0,$this->objLayer[$i]->layer_queryable, $this->objLayer[$i]->layer_queryable,$this->objLayer[$i]->layer_minscale,$this->objLayer[$i]->layer_maxscale,$i,$layer_style_name); $t = array('s','i','i','i','i','i','i','i','i','i','i','s'); $res = db_prep_query($sql,$v,$t); if(!$res){ db_rollback(); } } function insertSRS($myWMS){ for($i=0; $iwms_srs);$i++){ $sql ="INSERT INTO wms_srs (fkey_wms_id, wms_srs) values($1,$2)"; $v = array($myWMS,mb_strtoupper($this->wms_srs[$i])); $t = array('i','s'); $res = db_prep_query($sql,$v,$t); if(!$res){ db_rollback(); } } } function insertFormat($myWMS){ for($i=0; $idata_type);$i++){ $sql ="INSERT INTO wms_format (fkey_wms_id, data_type, data_format) "; $sql .= " VALUES($1,$2,$3)"; $v = array($myWMS,$this->data_type[$i],$this->data_format[$i]); $t = array('i','s','s'); $res = db_prep_query($sql,$v,$t); if(!$res){ db_rollback(); } } } function insertLayerEPSG($i){ $sql = "DELETE FROM layer_epsg WHERE fkey_layer_id = $1"; $v = array($this->objLayer[$i]->db_id); $t = array('i'); $res = db_prep_query($sql,$v,$t); for($j=0; $jobjLayer[$i]->layer_epsg);$j++){ $sql = "INSERT INTO layer_epsg (fkey_layer_id, epsg, minx, miny, maxx, maxy) "; $sql .= "VALUES($1,$2,$3,$4,$5,$6)"; $v = array($this->objLayer[$i]->db_id,$this->objLayer[$i]->layer_epsg[$j][epsg], $this->objLayer[$i]->layer_epsg[$j][minx],$this->objLayer[$i]->layer_epsg[$j][miny], $this->objLayer[$i]->layer_epsg[$j][maxx],$this->objLayer[$i]->layer_epsg[$j][maxy] ); $t = array('i','s','d','d','d','d'); $res = db_prep_query($sql,$v,$t); if(!$res){ db_rollback(); } } } function insertLayerStyle($i){ $sql = "DELETE FROM layer_style WHERE fkey_layer_id = $1"; $v = array($this->objLayer[$i]->db_id); $t = array('i'); $res = db_prep_query($sql,$v,$t); for($j=0; $jobjLayer[$i]->layer_style);$j++){ $sql = "INSERT INTO layer_style (fkey_layer_id, name, title, legendurl, legendurlformat) "; $sql .= "VALUES($1,$2,$3,$4,$5)"; $v = array($this->objLayer[$i]->db_id,$this->objLayer[$i]->layer_style[$j]["name"], $this->objLayer[$i]->layer_style[$j]["title"],$this->objLayer[$i]->layer_style[$j]["legendurl"], $this->objLayer[$i]->layer_style[$j]["legendurlformat"] ); $t = array('i','s','s','s','s'); $res = db_prep_query($sql,$v,$t); if(!$res){ db_rollback(); } } } function insertLayerKeyword($i){ global $con; $sql = "DELETE FROM layer_keyword WHERE fkey_layer_id = $1"; $v = array($this->objLayer[$i]->db_id); $t = array('i'); $res = db_prep_query($sql,$v,$t); // var_dump($this); $k = $this->objLayer[$i]->layer_keyword; // var_dump($k); for($j=0; $jobjLayer[$i]->db_id, $keyword_id); $t = array('i', 'i'); $res_layerKeywordExists = db_prep_query($sql_layerKeywordExists, $v, $t); $row = db_fetch_array($res_layerKeywordExists); //print_r($row); if (!$row) { $sql1 = "INSERT INTO layer_keyword (fkey_keyword_id,fkey_layer_id)"; $sql1 .= "VALUES ($1,$2)"; $v1 = array($keyword_id,$this->objLayer[$i]->db_id); $t1 = array('i','i'); $res1 = db_prep_query($sql1,$v1,$t1); if(!$res1){ db_rollback(); } } } } function updateObjInDB($myWMS){ $admin = new administration(); db_begin(); $sql = "UPDATE wms SET "; $sql .= "wms_version = $1 ,"; $sql .= "wms_getcapabilities = $2 ,"; $sql .= "wms_getmap = $3 ,"; $sql .= "wms_getfeatureinfo = $4 ,"; $sql .= "wms_getlegendurl = $5 ,"; $sql .= "wms_getcapabilities_doc = $6 ,"; $sql .= "wms_upload_url = $7, "; $sql .= "wms_owner = $8, "; $sql .= "wms_timestamp = $9, "; $sql .= "wms_supportsld = $10, "; $sql .= "wms_userlayer = $11, "; $sql .= "wms_userstyle = $12, "; $sql .= "wms_remotewfs = $13 "; $sql .= " WHERE wms_id = $14"; $v = array($this->wms_version,$this->wms_getcapabilities, $this->wms_getmap,$this->wms_getfeatureinfo,$this->wms_getlegendurl, $admin->char_encode($this->wms_getcapabilities_doc),$this->wms_upload_url,$_SESSION["mb_user_id"],strtotime("now"), $this->wms_supportsld,$this->wms_userlayer,$this->wms_userstyle,$this->wms_remotewfs,$myWMS); $t = array('s','s','s','s','s','s','s','i','i','s','s','s','s','i'); $res = db_prep_query($sql,$v,$t); if(!$res){ db_rollback(); } if($this->overwrite == true){ $sql = "UPDATE wms SET "; $sql .= "wms_title = $1 ,"; $sql .= "wms_abstract = $2 ,"; $sql .= "fees = $3, "; $sql .= "accessconstraints = $4, "; $sql .= "contactperson = $5, "; $sql .= "contactposition = $6, "; $sql .= "contactorganization = $7, "; $sql .= "address = $8, "; $sql .= "city = $9, "; $sql .= "stateorprovince = $10, "; $sql .= "postcode = $11, "; $sql .= "country = $12, "; $sql .= "contactvoicetelephone = $13, "; $sql .= "contactfacsimiletelephone = $14, "; $sql .= "contactelectronicmailaddress = $15 "; $sql .= " WHERE wms_id = $16"; $v = array($this->wms_title,$this->wms_abstract,$this->fees,$this->accessconstraints, $this->contactperson,$this->contactposition,$this->contactorganization,$this->address, $this->city,$this->stateorprovince,$this->postcode,$this->country,$this->contactvoicetelephone, $this->contactfacsimiletelephone,$this->contactelectronicmailaddress,$myWMS); $t = array('s','s','s','s','s','s','s','s','s','s','s','s','s','s','s','i'); $res = db_prep_query($sql,$v,$t); if(!$res){ db_rollback(); } } # delete and refill srs and formats $sql = "DELETE FROM wms_srs WHERE fkey_wms_id = $1 "; $v = array($myWMS); $t = array('i'); $res = db_prep_query($sql,$v,$t); if(!$res){ db_rollback(); } $this->insertSRS($myWMS); $sql = "DELETE FROM wms_format WHERE fkey_wms_id = $1 "; $v = array($myWMS); $t = array('i'); $res = db_prep_query($sql,$v,$t); if(!$res){ db_rollback(); } $this->insertFormat($myWMS); # update gui_wms $this->update_gui_wms($myWMS); # update TABLE layer # delete all layer which are outdated $v = array($myWMS); $t = array('i'); $c = 2; $sql = "DELETE FROM layer WHERE fkey_wms_id = $1 AND NOT layer_name IN("; for($i=0; $iobjLayer); $i++){ if($i>0){$sql .= ',';} $sql .= "$".$c; array_push($v,$this->objLayer[$i]->layer_name); array_push($t,'s'); $c++; } $sql .= ")"; $res = db_prep_query($sql,$v,$t); if(!$res){ db_rollback(); } # update or insert? $sql = "SELECT layer_name FROM layer WHERE fkey_wms_id = $1"; $v = array($myWMS); $t = array('i'); $res = db_prep_query($sql,$v,$t); $exLayer = array(); while($row = db_fetch_array($res)){ array_push($exLayer,$row["layer_name"]); } $sql = "SELECT fkey_gui_id FROM gui_wms WHERE fkey_wms_id = $1"; $v = array($myWMS); $t = array('i'); $res = db_prep_query($sql,$v,$t); $exGui = array(); while($row = db_fetch_array($res)){ array_push($exGui,$row["fkey_gui_id"]); } for($i=0; $iobjLayer); $i++){ if(in_array($this->objLayer[$i]->layer_name,$exLayer)){ //echo "
update: ".$this->objLayer[$i]->layer_name; $this->updateLayer($i,$myWMS); for($j=0; $jupdateGuiLayer($i,$myWMS,$exGui[$j]); } } else{ //echo "
append: ".$this->objLayer[$i]->layer_name; $this->insertLayer($i,$myWMS); for($j=0; $jappendGuiLayer($i,$myWMS,$exGui[$j]); } } } db_commit(); return; } function updateGuiLayer($i,$myWMS,$gui_id){ $sql = "SELECT layer_id FROM layer WHERE fkey_wms_id = $1 AND layer_name = $2"; $v = array($myWMS,$this->objLayer[$i]->layer_name); $t = array('i','s'); $res = db_prep_query($sql,$v,$t); if($row = db_fetch_array($res)){ $l_id = $row['layer_id']; } else{ db_rollback(); $e = new mb_exception("Not found: ".$this->objLayer[$i]->layer_name. " in gui: ".$gui_id); return; } $sql = "SELECT * FROM gui_layer WHERE fkey_layer_id = $1 and fkey_gui_id = $2"; $v = array($l_id,$gui_id); $t = array('i','s'); $res = db_prep_query($sql,$v,$t); while($row = db_fetch_array($res)){ if($this->objLayer[$i]->layer_queryable == 0){ $sql1 = "UPDATE gui_layer set gui_layer_queryable = 0, gui_layer_querylayer = 0 "; $sql1 .= "WHERE fkey_layer_id = $1 and fkey_gui_id = $2"; $v = array($l_id,$gui_id); $t = array('i','s'); $res1 = db_prep_query($sql1,$v,$t); if(!$res1){ db_rollback(); } } if($this->objLayer[$i]->layer_queryable == 1){ $sql1 = "UPDATE gui_layer set gui_layer_queryable = 1 "; $sql1 .= "WHERE fkey_layer_id = $1 and fkey_gui_id = $2"; $v = array($l_id,$gui_id); $t = array('i','s'); $res1 = db_prep_query($sql1,$v,$t); if(!$res1){ db_rollback(); } } if($row["gui_layer_minscale"] < $this->objLayer[$i]->layer_minscale){ $sql1 = "UPDATE gui_layer set gui_layer_minscale = $1 "; $sql1 .= "WHERE fkey_layer_id = $2 and fkey_gui_id = $3"; $v = array($this->objLayer[$i]->layer_minscale,$l_id,$gui_id); $t = array('i','i','s'); $res1 = db_prep_query($sql1,$v,$t); if(!$res1){db_rollback(); } } if($row["gui_layer_maxscale"] > $this->objLayer[$i]->layer_maxscale){ $sql1 = "UPDATE gui_layer set gui_layer_maxscale = $1 "; $sql1 .= "WHERE fkey_layer_id = $2 and fkey_gui_id = $3"; $v = array($this->objLayer[$i]->layer_maxscale,$l_id,$gui_id); $t = array('i','i','s'); $res1 = db_prep_query($sql1,$v,$t); if(!$res1){db_rollback(); } } } } function update_gui_wms($myWMS){ $mySubmit = null; $sql = "SELECT * FROM gui_wms where fkey_wms_id = $1"; $v = array($myWMS); $t = array('i'); $res = db_prep_query($sql,$v,$t); $cnt = 0; while($row = db_fetch_array($res)){ unset($mySubmit); $myGUI[$cnt] = $row["fkey_gui_id"]; $sql = "UPDATE gui_wms SET "; $v = array(); $t = array(); $paramCount = 0; for($i=0; $idata_type); $i++){ # gui_wms_mapformat if(mb_strtolower($this->data_type[$i]) == "map" && mb_strtolower($this->data_format[$i]) == mb_strtolower($row["gui_wms_mapformat"])){ $myMapFormat = true; } # gui_wms_featureinfoformat if(mb_strtolower($this->data_type[$i]) == "featureinfo" && mb_strtolower($this->data_format[$i]) == mb_strtolower($row["gui_wms_featureinfoformat"])){ $myFeatureInfoFormat = true; } # gui_wms_exceptionformat if(mb_strtolower($this->data_type[$i]) == "exception" && mb_strtolower($this->data_format[$i]) == mb_strtolower($row["gui_wms_exceptionformat"])){ $myExceptionFormat = true; } } if(!$myMapFormat){ $paramCount++; $sql .= "gui_wms_mapformat = $" . $paramCount . " "; $mySubmit = true; array_push($v, $this->gui_wms_mapformat); array_push($t, "s"); } if(!$myFeatureInfoFormat){ if($mySubmit){ $sql .= ",";} $paramCount++; $sql .= "gui_wms_featureinfoformat = $" . $paramCount . " "; array_push($v, $this->gui_wms_featureinfoformat); array_push($t, "s"); $mySubmit = true; } if(!$myExceptionFormat){ if($mySubmit){ $sql .= ",";} $paramCount++; $sql .= "gui_wms_exceptionformat = $" . $paramCount ." "; array_push($v, $this->gui_wms_exceptionformat); array_push($t, "s"); $mySubmit = true; } # gui_wms_epsg for($j=0; $jobjLayer[0]->layer_epsg);$j++){ if($this->objLayer[0]->layer_epsg[$j][epsg] == mb_strtoupper($row["gui_wms_epsg"])){ $myGUI_EPSG = true; } } if(!$myGUI_EPSG){ if($mySubmit){ $sql .= ",";} $paramCount++; $sql .= "gui_wms_epsg = $" . $paramCount . " "; array_push($v, $this->gui_wms_epsg); array_push($t, "s"); $mySubmit = true; } $paramCount++; $sql .= " WHERE fkey_gui_id = $" . $paramCount . " "; array_push($v, $row["fkey_gui_id"]); array_push($t, "s"); $paramCount++; $sql .= "AND fkey_wms_id = $" . $paramCount; array_push($v, $myWMS); array_push($t, "i"); if($mySubmit){ $res = db_prep_query($sql,$v,$t); if(!$res){ db_rollback(); echo "
".$sql."


"; echo db_error(); echo "
UPDATE ERROR -> KILL PROCESS AND ROLLBACK....................no update

"; $e = new mb_exception("class_wms.php: transaction: Transaction aborted, rollback."); } } $cnt++; } } function getVersion() { return $this->wms_version; } function getCapabilities() { return $this->wms_getcapabilities; } function getCapabilitiesDoc() { return $this->wms_getcapabilities_doc; } /** * creatObjfromDB * */ function createObjFromDB($gui_id,$wms_id){ $sql = "Select * from gui_wms where fkey_wms_id = $1 AND fkey_gui_id = $2"; $v = array($wms_id,$gui_id); $t = array('i','s'); $res = db_prep_query($sql,$v,$t); $count=0; #$res_count=db_num_rows($res); while($row = db_fetch_array($res)){ $this->gui_wms_mapformat=$row["gui_wms_mapformat"]; $this->gui_wms_featureinfoformat=$row["gui_wms_featureinfoformat"]; $this->gui_wms_exceptionformat=$row["gui_wms_exceptionformat"]; $this->gui_wms_epsg=$row["gui_wms_epsg"]; $this->gui_wms_visible = $row["gui_wms_visible"]; $this->gui_wms_opacity = $row["gui_wms_opacity"]; $this->gui_wms_sldurl = $row["gui_wms_sldurl"]; $sql = "Select * from wms where wms_id = $1 "; $v = array($wms_id); $t = array('i'); $res_wms = db_prep_query($sql,$v,$t); $count_wms=0; while($row2 = db_fetch_array($res_wms)){ $this->wms_id = $row2["wms_id"]; $this->wms_version = $row2["wms_version"]; $this->wms_title = administration::convertIncomingString($this->stripEndlineAndCarriageReturn($row2["wms_title"])); $this->wms_abstract = administration::convertIncomingString($this->stripEndlineAndCarriageReturn($row2["wms_abstract"])); $wmsowsproxy = $row2["wms_owsproxy"]; #$wmsowsproxy = "test"; if($wmsowsproxy != ""){ $owsproxyurl = OWSPROXY."/".session_id()."/".$wmsowsproxy."?"; $this->wms_getmap = $owsproxyurl; $this->wms_getcapabilities = $owsproxyurl; $this->wms_getfeatureinfo = $owsproxyurl; $this->wms_getlegendurl = $owsproxyurl; } else{ $this->wms_getmap = $row2["wms_getmap"]; $this->wms_getcapabilities = $row2["wms_getcapabilities"]; $this->wms_getfeatureinfo = $row2["wms_getfeatureinfo"]; $this->wms_getlegendurl = $row2["wms_getlegendurl"]; } // TO DO: Capabilities document needs to // be encoded to the original encoding // if different from the database encoding $this->wms_getcapabilities_doc = $row2["wms_getcapabilities_doc"]; $this->wms_filter = $row2["wms_filter"]; $this->wms_supportsld = $row2["wms_supportsld"]; $this->wms_userlayer = $row2["wms_userlayer"]; $this->wms_userstyle = $row2["wms_userstyle"]; $this->wms_remotewfs = $row2["wms_remotewfs"]; $count_wms++; } ### formats $sql = "SELECT * FROM wms_format WHERE fkey_wms_id = $1 "; $v = array($wms_id); $t = array('i'); $res_wms = db_prep_query($sql,$v,$t); $count_format=0; while($row3 = db_fetch_array($res_wms)){ $this->data_type[$count_format] = $row3["data_type"]; $this->data_format[$count_format] = $row3["data_format"]; $count_format++; } $count++; } #layer $sql = "Select * from gui_layer where gui_layer_wms_id = $1 AND fkey_gui_id = $2 "; $sql .= " AND gui_layer_status = 1 ORDER BY gui_layer_priority;"; $v = array($wms_id,$gui_id); $t = array('i','s'); $res = db_prep_query($sql,$v,$t); $count=0; while($row = db_fetch_array($res)){ $layer_id = $row["fkey_layer_id"]; $sql = "Select * from layer where layer_id = $1"; $v = array($layer_id); $t = array('i'); $res_layer = db_prep_query($sql,$v,$t); $count_layer=0; while($row2 = db_fetch_array($res_layer)){ $this->addLayer($row2["layer_pos"],$row2["layer_parent"]); $layer_cnt=count($this->objLayer)-1; $this->objLayer[$layer_cnt]->layer_uid = $layer_id; $this->objLayer[$layer_cnt]->layer_name = administration::convertIncomingString($row2["layer_name"]); $this->objLayer[$layer_cnt]->layer_title = administration::convertIncomingString($row2["layer_title"]); $this->objLayer[$layer_cnt]->layer_dataurl_href =$row2["layer_dataurl"]; $this->objLayer[$layer_cnt]->layer_metadataurl =$row2["layer_metadataurl"]; $this->objLayer[$layer_cnt]->layer_pos =$row2["layer_pos"]; $this->objLayer[$layer_cnt]->layer_queryable =$row2["layer_pos"]; $this->objLayer[$layer_cnt]->layer_queryable =$row2["layer_queryable"]; $this->objLayer[$layer_cnt]->layer_minscale =$row2["layer_minscale"]; $this->objLayer[$layer_cnt]->layer_maxscale = $row2["layer_maxscale"]; $count_layer++; } $this->objLayer[$layer_cnt]->layer_uid = $layer_id; $this->objLayer[$layer_cnt]->gui_layer_wms_id = $row["gui_layer_wms_id"]; $this->objLayer[$layer_cnt]->gui_layer_selectable = $row["gui_layer_selectable"]; $this->objLayer[$layer_cnt]->gui_layer_visible = $row["gui_layer_visible"]; $this->objLayer[$layer_cnt]->gui_layer_queryable = $row["gui_layer_queryable"]; $this->objLayer[$layer_cnt]->gui_layer_querylayer = $row["gui_layer_querylayer"]; $this->objLayer[$layer_cnt]->gui_layer_minscale = $row["gui_layer_minscale"]; $this->objLayer[$layer_cnt]->gui_layer_maxscale = $row["gui_layer_maxscale"]; $this->objLayer[$layer_cnt]->gui_layer_style = $row["gui_layer_style"]; $this->objLayer[$layer_cnt]->gui_layer_wfs_featuretype = $row["gui_layer_wfs_featuretype"]; $sql = "Select * from layer_epsg where fkey_layer_id = $1 ORDER BY fkey_layer_id"; $v = array($layer_id); $t = array('i'); $res_layer_epsg = db_prep_query($sql,$v,$t); $count_layer_epsg=0; while($row2 = db_fetch_array($res_layer_epsg)){ $this->objLayer[$layer_cnt]->layer_epsg[$count_layer_epsg]["epsg"]=$row2["epsg"]; $this->objLayer[$layer_cnt]->layer_epsg[$count_layer_epsg]["minx"]=$row2["minx"]; $this->objLayer[$layer_cnt]->layer_epsg[$count_layer_epsg]["miny"]=$row2["miny"]; $this->objLayer[$layer_cnt]->layer_epsg[$count_layer_epsg]["maxx"]=$row2["maxx"]; $this->objLayer[$layer_cnt]->layer_epsg[$count_layer_epsg]["maxy"]=$row2["maxy"]; $count_layer_epsg++; } ### handle styles $sql = "SELECT * FROM layer_style WHERE fkey_layer_id = $1 "; $v = array($layer_id); $t = array('i'); $res_style = db_prep_query($sql,$v,$t); $count_layer_style = 0; while($row2 = db_fetch_array($res_style)){ $this->objLayer[$layer_cnt]->layer_style[$count_layer_style]["name"] = $row2["name"] ? $row2["name"] : "default"; $this->objLayer[$layer_cnt]->layer_style[$count_layer_style]["title"]=$row2["title"]; if($wmsowsproxy != ""){ if($row2["legendurl"]!=''){ $this->objLayer[$layer_cnt]->layer_style[$count_layer_style]["legendurl"]=$owsproxyurl. "REQUEST=getlegendgraphic&VERSION=".$this->wms_version."&LAYER=".$this->objLayer[$layer_cnt]->layer_name."&FORMAT=".$row2["legendurlformat"]. "&STYLE=".$row2["name"]; } } else{ if($row2["legendurl"]!=''){ $this->objLayer[$layer_cnt]->layer_style[$count_layer_style]["legendurl"]=$row2["legendurl"]; #$e = new mb_exception("legendurl = ".$this->objLayer[$layer_cnt]->layer_style[$count_layer_style]["legendurl"]); } } $this->objLayer[$layer_cnt]->layer_style[$count_layer_style]["legendurlformat"]=$row2["legendurlformat"]; $count_layer_style++; } $count++; } } /** end createObjfromDB **/ /** * creatObjfromDBNoGui * */ function createObjFromDBNoGui($wms_id){ $sql = "Select * from wms where wms_id = $1 "; $v = array($wms_id); $t = array('i'); $res_wms = db_prep_query($sql,$v,$t); $count_wms=0; while($row2 = db_fetch_array($res_wms)){ $this->wms_id = $row2["wms_id"]; $this->wms_version = $row2["wms_version"]; $this->wms_title = $this->stripEndlineAndCarriageReturn($row2["wms_title"]); $this->wms_abstract = $this->stripEndlineAndCarriageReturn($row2["wms_abstract"]); $wmsowsproxy = $row2["wms_owsproxy"]; #$wmsowsproxy = "test"; if($wmsowsproxy != ""){ $owsproxyurl = OWSPROXY."/".session_id()."/".$wmsowsproxy."?"; $this->wms_getmap = $owsproxyurl; $this->wms_getcapabilities = $owsproxyurl; $this->wms_getfeatureinfo = $owsproxyurl; $this->wms_getlegendurl = $owsproxyurl; } else{ $this->wms_getmap = $row2["wms_getmap"]; $this->wms_getcapabilities = $row2["wms_getcapabilities"]; $this->wms_getfeatureinfo = $row2["wms_getfeatureinfo"]; $this->wms_getlegendurl = $row2["wms_getlegendurl"]; } // TO DO: Capabilities document needs to // be encoded to the original encoding // if different from the database encoding $this->wms_getcapabilities_doc = $row2["wms_getcapabilities_doc"]; $this->wms_filter = $row2["wms_filter"]; $this->wms_supportsld = $row2["wms_supportsld"]; $this->wms_userlayer = $row2["wms_userlayer"]; $this->wms_userstyle = $row2["wms_userstyle"]; $this->wms_remotewfs = $row2["wms_remotewfs"]; #some default $this->gui_wms_visible = 1; $this->gui_wms_opacity = 100; $this->gui_wms_epsg=$row["gui_wms_epsg"]; $this->gui_wms_sldurl = $row["gui_wms_sldurl"]; if($this->wms_version == "1.0.0"){ $this->gui_wms_mapformat = "PNG"; $this->gui_wms_featureinfoformat = "MIME"; $this->gui_wms_exceptionformat = "INIMAGE"; } /*define defaults for wms-version 1.1.0 and 1.1.1*/ else{ $this->gui_wms_mapformat = "image/png"; $this->gui_wms_featureinfoformat = "text/html"; $this->gui_wms_exceptionformat = "application/vnd.ogc.se_inimage"; } $count_wms++; } ### formats $sql = "SELECT * FROM wms_format WHERE fkey_wms_id = $1 "; $v = array($wms_id); $t = array('i'); $res_wms = db_prep_query($sql,$v,$t); $count_format=0; while($row3 = db_fetch_array($res_wms)){ $this->data_type[$count_format] = $row3["data_type"]; $this->data_format[$count_format] = $row3["data_format"]; $count_format++; } $sql = "Select * from layer where fkey_wms_id = $1"; $v = array($wms_id); $t = array('i'); $res_layer = db_prep_query($sql,$v,$t); $count_layer=0; while($row2 = db_fetch_array($res_layer)){ $this->addLayer($row2["layer_pos"],$row2["layer_parent"]); $layer_cnt=count($this->objLayer)-1; $this->objLayer[$layer_cnt]->layer_uid = $row2["layer_id"]; $this->objLayer[$layer_cnt]->layer_name =$row2["layer_name"]; $this->objLayer[$layer_cnt]->layer_title =$row2["layer_title"]; $this->objLayer[$layer_cnt]->layer_dataurl_href =$row2["layer_dataurl"]; $this->objLayer[$layer_cnt]->layer_metadataurl =$row2["layer_metadataurl"]; $this->objLayer[$layer_cnt]->layer_pos =$row2["layer_pos"]; $this->objLayer[$layer_cnt]->layer_queryable =$row2["layer_pos"]; $this->objLayer[$layer_cnt]->layer_queryable =$row2["layer_queryable"]; $this->objLayer[$layer_cnt]->layer_minscale =$row2["layer_minscale"]; $this->objLayer[$layer_cnt]->layer_maxscale = $row2["layer_maxscale"]; if($this->objLayer[$layer_cnt]->layer_minscale == ""){ $this->objLayer[$layer_cnt]->layer_minscale = 0; } if($this->objLayer[$layer_cnt]->layer_maxscale == ""){ $this->objLayer[$layer_cnt]->layer_maxscale = 0; } $this->objLayer[$layer_cnt]->gui_layer_minscale = $this->objLayer[$layer_cnt]->layer_minscale; $this->objLayer[$layer_cnt]->gui_layer_maxscale = $this->objLayer[$layer_cnt]->layer_maxscale; $sql = "Select * from layer_epsg where fkey_layer_id = $1 ORDER BY fkey_layer_id"; $v = array($this->objLayer[$layer_cnt]->layer_uid); $t = array('i'); $res_layer_epsg = db_prep_query($sql,$v,$t); $count_layer_epsg=0; while($row2 = db_fetch_array($res_layer_epsg)){ $this->objLayer[$layer_cnt]->layer_epsg[$count_layer_epsg]["epsg"]=$row2["epsg"]; $this->objLayer[$layer_cnt]->layer_epsg[$count_layer_epsg]["minx"]=$row2["minx"]; $this->objLayer[$layer_cnt]->layer_epsg[$count_layer_epsg]["miny"]=$row2["miny"]; $this->objLayer[$layer_cnt]->layer_epsg[$count_layer_epsg]["maxx"]=$row2["maxx"]; $this->objLayer[$layer_cnt]->layer_epsg[$count_layer_epsg]["maxy"]=$row2["maxy"]; $count_layer_epsg++; } ### handle styles $sql = "SELECT * FROM layer_style WHERE fkey_layer_id = $1 "; $v = array($this->objLayer[$layer_cnt]->layer_uid); $t = array('i'); $res_style = db_prep_query($sql,$v,$t); $count_layer_style = 0; while($row2 = db_fetch_array($res_style)){ $this->objLayer[$layer_cnt]->layer_style[$count_layer_style]["name"]=$row2["name"]; $this->objLayer[$layer_cnt]->layer_style[$count_layer_style]["title"]=$row2["title"]; if($wmsowsproxy != ""){ if($row2["legendurl"]!=''){ $this->objLayer[$layer_cnt]->layer_style[$count_layer_style]["legendurl"]=$owsproxyurl. "REQUEST=getlegendgraphic&VERSION=".$this->wms_version."&LAYER=".$this->objLayer[$layer_cnt]->layer_name."&FORMAT=".$row2["legendurlformat"]. "&STYLE=".$row2["name"]; } } else{ if($row2["legendurl"]!=''){ $this->objLayer[$layer_cnt]->layer_style[$count_layer_style]["legendurl"]=$row2["legendurl"]; #$e = new mb_exception("legendurl = ".$this->objLayer[$layer_cnt]->layer_style[$count_layer_style]["legendurl"]); } } $this->objLayer[$layer_cnt]->layer_style[$count_layer_style]["legendurlformat"]=$row2["legendurlformat"]; $count_layer_style++; } $count_layer++; } } /** end createObjfromDBNoGui **/ /** * function checkObjExistsInDB() * * this function checks wether the onlineresource already exists in the database. */ function checkObjExistsInDB(){ $sql = "Select * from wms where wms_getcapabilities = $1"; $v = array($this->wms_getcapabilities); $t = array('s'); $res = db_prep_query($sql,$v,$t); $res_count= db_num_rows($res); $wms_id=0; if($res_count>0){ $count=0; while($row = db_fetch_array($res)){ $wms_id=$row["wms_id"]; $count++; } } return $wms_id; } function displayDBInformation(){ echo $this->wms_getcapabilities; $sql="Select * from wms where wms_getcapabilities = $1"; $v = array($this->wms_getcapabilities); $t = array('s'); $res = db_prep_query($sql,$v,$t); $count=0; while($row = db_fetch_array($res)){ echo "count: ".$count."
"; $wms_id=$row["wms_id"]; echo "version: " .$wms_id."
"; echo "title: " .$row["wms_version"]. "
"; echo "abstract: " . $row["wms_title"] . "
"; echo "maprequest: " .$row["wms_abstract"] . "
"; echo "capabilitiesrequest: " . $row["wms_getcapabilities"] . "
"; echo "featureinforequest: " . $row["wms_getmap"]. "
"; echo "gui_wms_mapformat: " . $row["wms_getfeatureinfo"] . "
---------
"; $count++; } echo "----
wms_id: ".$wms_id."
"; $sql = "Select * from gui_wms where fkey_wms_id = $1"; $v = array($wms_id); $t = array('i'); echo "sql: ".$sql."
---------
"; $res = db_prep_query($sql,$v,$t); $res_count= db_num_rows($res); echo "result count: ".$res_count."
---------
"; $count=0; while($row = db_fetch_array($res)){ echo "gui_wms_featureinfoformat: " . $row["gui_wms_featureinfoformat"]."
"; echo "gui_wms_exceptionformat: " . $row["gui_wms_exceptionformat"]. "
"; echo "gui_wms_epsg: " . $row["gui_wms_epsg"]. "
"; $count++; } #db_close($connect); } function checkObj(){ if($this->wms_getcapabilities == '' || $this->wms_getmap == '' ){ echo "
Missing parameters:
"; $this->displayWMS(); print_r($this); echo "
Data not committed
"; die(); } } /** * Selects all WMS of the current user from the database. * Then it creates the corresponding WMS object and returns * these objects as an array. * * @return wms[] * @param $appId String */ public static function selectMyWmsByApplication ($appId) { // check if user is permitted to access the application $currentUser = new User($_SESSION["mb_user_id"]); $appArray = $currentUser->getApplicationsByPermission(false); if (!in_array($appId, $appArray)) { $e = new mb_warning("class_wms.php: selectMyWmsByApplication(): User '" . $currentUser . "' is not allowed to acces application '" . $appId . "'."); return array(); } // get WMS of this application $sql = "SELECT fkey_wms_id FROM gui_wms WHERE " . "fkey_gui_id = $1 ORDER BY gui_wms_position"; $v = array($appId); $t = array('s'); $res = db_prep_query($sql,$v,$t); // instantiate PHP objects and store in array $wmsArray = array(); while ($row = db_fetch_array($res)) { $currentWms = new wms(); $currentWms->createObjFromDB($appId, $row["fkey_wms_id"]); array_push($wmsArray, $currentWms); } return $wmsArray; } } class layer extends wms { var $layer_id; var $layer_parent; var $layer_name; var $layer_title; var $layer_abstract; var $layer_pos; var $layer_queryable; var $layer_minscale; var $layer_maxscale; var $layer_dataurl_href; var $layer_metadataurl; var $layer_keyword = array(); var $layer_epsg = array(); var $layer_style = array(); var $gui_layer_wms_id; var $gui_layer_status = 1; var $gui_layer_selectable = 1; var $gui_layer_visible = 0; var $gui_layer_queryable = 0; var $gui_layer_querylayer = 0; var $gui_layer_style = NULL; function layer($id,$parent){ $this->layer_id = $id; $this->layer_parent = $parent; //var_dump($this); } public function __toString () { $e = new mb_exception("TITLE: " . $this->layer_title); return $this->layer_title; } } ?>