0)return substr($s,$c+1); return $s; } /** * Implementation of a Web Map Context Document, WMC 1.1.0 */ class wmc { var $xml; var $wmc_id; var $wmc_version; var $wmc_windowWidth; var $wmc_windowHeight; var $wmc_bBox_SRS; var $wmc_bBox_minx; var $wmc_bBox_maxx; var $wmc_bBox_miny; var $wmc_bBox_maxy; var $wmc_name; var $wmc_title; var $wmc_abstract; var $wmc_general_extension = array(); var $wmc_logourl; var $wmc_logourl_format; var $wmc_logourl_type; var $wmc_logourl_width; var $wmc_logourl_height; var $wmc_descriptionurl; var $wmc_descriptionurl_format; var $wmc_descriptionurl_type; var $wmc_keyword = array(); var $wmc_contactposition; var $wmc_contactvoicetelephone; var $wmc_contactemail; var $wmc_contactfacsimiletelephone; var $wmc_contactperson; var $wmc_contactorganization; var $wmc_contactaddresstype; var $wmc_contactaddress; var $wmc_contactcity; var $wmc_contactstateorprovince; var $wmc_contactpostcode; var $wmc_contactcountry; var $wmc_wms_title = array(); var $wmc_layer_queryable = array(); var $wmc_layer_hidden = array(); var $wmc_wms_id = array(); var $wmc_wms_service = array(); var $wmc_wms_version = array(); var $wmc_wms_layer_id = array(); var $wmc_layer_wfs_featuretype = array(); var $wmc_layer_id = array(); var $wmc_layer_pos = array(); var $wmc_layer_parent = array(); var $wmc_layer_querylayer = array(); var $wmc_layer_title = array(); var $wmc_layer_name = array(); var $wmc_layer_abstract = array(); var $wmc_layer_srs = array(); var $wmc_wms_serviceURL = array(); var $wmc_layer_format_current = array(); var $wmc_layer_dataurl = array(); var $wmc_layer_metadataurl = array(); var $wmc_layer_minscale = array(); var $wmc_layer_maxscale = array(); var $wmc_gui_layer_minscale = array(); var $wmc_gui_layer_maxscale = array(); var $wmc_layer_format = array(); var $wmc_layer_style_current = array(); var $wmc_layer_style_name = array(); var $wmc_layer_style_title = array(); var $wmc_layer_style_legendurl = array(); var $wmc_layer_style_legendurl_width = array(); var $wmc_layer_style_legendurl_height = array(); var $wmc_layer_style_legendurl_format = array(); var $wmc_layer_style_legendurl_type = array(); var $wmc_layer_style_sld_url = array(); var $wmc_layer_style_sld_type = array(); var $wmc_layer_style_sld_title = array(); var $wmc_wms_count = 0; /* var $data_type = array(); var $data_format = array(); var $objLayer = array(); var $gui_wms_mapformat; var $gui_wms_featureinfoformat; var $gui_wms_exceptionformat; var $gui_wms_epsg; var $default_epsg = 0; */ var $monitoringIsOn = false; function wmc() { } /** * Saves the current WMC in the log folder. * * @return string the filename of the WMC document. */ function saveAsFile() { $filename = "wmc_" . date("Y_m_d_H_i_s") . ".log"; $logfile = "../../log/" . $filename; if($h = fopen($logfile,"a")){ $content = $this->xml; if(!fwrite($h,$content)){ $e = new mb_exception("class_wmc.php: failed to write wmc."); return false; } fclose($h); } return $filename; } /** * @return string the title of the WMC. */ function getTitle() { return $this->wmc_title; } /** * @return Integer the number of (unique?) WMS contained in this WMC. */ function getNumberOfWms () { return $this->wmc_wms_count; } /** * Creates a WMC object from a JS map object {@see map.js} * * @param object $mapObject a map object * @param integer $user_id the ID of the current user * @param string $generalTitle the desired title of the WMC * @param object $extensionData data exclusive to Mapbender, which will be * mapped into the extension part of the WMC */ function createWMCFromObj($mapObject, $user_id, $generalTitle, $extensionData) { $this->wmc_id = $user_id . '_' . time(); $generalWidth = $mapObject->width; $generalHeight = $mapObject->height; $generalBboxSrs = $mapObject->epsg; $arrayBBox = explode(",", $mapObject->extent); $generalBboxMinx = floatval($arrayBBox[0]); $generalBboxMiny = floatval($arrayBBox[1]); $generalBboxMaxx = floatval($arrayBBox[2]); $generalBboxMaxy = floatval($arrayBBox[3]); $generalName = "Mapbender WMC"; // TO do : insert proper data $generalKeywords = array("Mapbender", "WMC"); // TO do : insert proper data $generalAbstract = ""; // TO do : insert proper data $generalLogoUrl = ""; // TO do : insert proper data $generalLogoUrlWidth = ""; // TO do : insert proper data $generalLogoUrlHeight = ""; // TO do : insert proper data $generalLogoUrlFormat = ""; // TO do : insert proper data $generalDescriptionUrl = ""; // TO do : insert proper data $generalContactPerson = ""; $generalContactOrganization = ""; $generalContactPosition = ""; $generalContactAddressType = ""; $generalContactAddress = ""; $generalContactCity = ""; $generalContactStateOrProvince = ""; $generalContactPostCode = ""; $generalContactCountry = ""; $generalContactVoiceTelephone = ""; $generalContactFacsimileTelephone = ""; $generalContactElectronicMailAddress = ""; $extension_namespace = "mapbender"; // LayerList variables $layerHidden = ""; $layerQueryable = ""; $layerAbstract = ""; $layerName = ""; $layerSrs = ""; $layerDataUrl = ""; $layerMetadataUrl = ""; $layerFormat = ""; $layerFormat_current = ""; $layerStyle_current = ""; $layerStyle_name = ""; $layerStyle_title = ""; $layerStyle_legendURL = ""; $layerStyle_legendURL_width = ""; $layerStyle_legendURL_height = ""; $layerStyle_legendURL_format = ""; // generate XML $doc = new DOMDocument("1.0", CHARSET); $doc->preserveWhiteSpace = false; // ViewContext $e_view_context = $doc->createElementNS("http://www.opengis.net/context", "ViewContext"); $e_view_context->setAttribute("version", "1.0.0"); $e_view_context->setAttribute("id", $this->wmc_id); $e_view_context->setAttribute("xmlns:xlink", "http://www.w3.org/1999/xlink"); $e_view_context->setAttribute("xmlns:mapbender", "http://www.mapbender.org"); $e_view_context->setAttribute("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance"); $e_view_context->setAttribute("xsi:SchemaLocation", "http://schemas.opengis.net/context/1.0.0/context.xsd"); // General $e_general = $doc->createElement("General"); $e_window = $doc->createElement("Window"); if (!empty($generalWidth) && !empty($generalHeight)) { $e_window->setAttribute("width", $generalWidth); $e_window->setAttribute("height", $generalHeight); } $e_general->appendChild($e_window); $e_bbox = $doc->createElement("BoundingBox"); $e_bbox->setAttribute("SRS", $generalBboxSrs); $e_bbox->setAttribute("minx", $generalBboxMinx); $e_bbox->setAttribute("miny", $generalBboxMiny); $e_bbox->setAttribute("maxx", $generalBboxMaxx); $e_bbox->setAttribute("maxy", $generalBboxMaxy); $e_general->appendChild($e_bbox); $e_name = $doc->createElement("Name", $generalName); $e_general->appendChild($e_name); $e_title = $doc->createElement("Title", $generalTitle); $e_general->appendChild($e_title); $e_keyword_list = $doc->createElement("KeywordList"); for ($i=0; $i < count($generalKeywords); $i++) { $e_keyword = $doc->createElement("Keyword", $generalKeywords[$i]); $e_keyword_list->appendChild($e_keyword); } $e_general->appendChild($e_keyword_list); if ($generalAbstract){ $e_abstract = $doc->createElement("Abstract", $generalAbstract); $e_general->appendChild($e_abstract); } if ($generalLogoUrlWidth && $generalLogoUrlHeight && $generalLogoUrlFormat && $generalLogoUrl){ $e_logo_url = $doc->createElement("LogoURL"); $e_logo_url->setAttribute("width", $generalLogoUrlWidth); $e_logo_url->setAttribute("height", $generalLogoUrlHeight); $e_logo_url->setAttribute("format", $generalLogoUrlFormat); $e_logo_url_or = $doc->createElement("OnlineResource"); $e_logo_url_or->setAttributeNS("http://www.opengis.net/context", "xmlns:xlink", "http://www.w3.org/1999/xlink"); $e_logo_url_or->setAttribute("xlink:type", "simple"); $e_logo_url_or->setAttribute("xlink:href", $generalLogoUrl); $e_logo_url->appendChild($e_logo_url_or); $e_general->appendChild($e_logo_url); } if ($generalDescriptionUrl){ $e_description_url = $doc->createElement("DescriptionURL"); $e_description_url_or = $doc->createElement("OnlineResource"); $e_description_url_or->setAttributeNS("http://www.opengis.net/context", "xmlns:xlink", "http://www.w3.org/1999/xlink"); $e_description_url_or->setAttribute("xlink:type", "simple"); $e_description_url_or->setAttribute("xlink:href", $generalDescriptionUrl); $e_description_url->appendChild($e_description_url_or); $e_general->appendChild($e_description_url); } if ($generalContactElectronicMailAddress || $generalContactOrganization || $generalContactPerson || $generalContactPosition || $generalContactAddressType || $generalContactAddress || $generalContactCity || $generalContactStateOrProvince || $generalContactPostCode || $generalContactCountry || $generalContactVoiceTelephone || $generalContactFacsimileTelephone || $generalContactElectronicMailAddress) { $e_contact = $doc->createElement("ContactInformation"); if ($generalContactPerson || $generalContactOrganization){ $e_contact_person_primary = $doc->createElement("ContactPersonPrimary"); if ($generalContactPerson){ $e_contact_person = $doc->createElement("ContactPerson", $generalContactPerson); $e_contact_person_primary->appendChild($e_contact_person); } if ($generalContactOrganization){ $e_contact_organization = $doc->createElement("ContactOrganization", $generalContactOrganization); $e_contact_person_primary->appendChild($e_contact_organization); } $e_contact->appendChild($e_contact_person_primary); } if ($generalContactPosition){ $e_contact_position = $doc->createElement("ContactPosition", $generalContactPosition); $e_contact->appendChild($e_contact_position); } if ($generalContactAddressType || $generalContactAddress || $generalContactCity || $generalContactStateOrProvince || $generalContactPostCode || $generalContactCountry) { $e_contact_address = $doc->createElement("ContactAddress"); if ($generalContactAddressType){ $e_address_type = $doc->createElement("AddressType", $generalContactAddressType); $e_contact_address->appendChild($e_address_type); } if ($generalContactAddress){ $e_address = $doc->createElement("Address", $generalContactAddress); $e_contact_address->appendChild($e_address); } if ($generalContactCity){ $e_city = $doc->createElement("City", $generalContactCity); $e_contact_address->appendChild($e_city); } if ($generalContactStateOrProvince){ $e_state = $doc->createElement("StateOrProvince", $generalContactStateOrProvince); $e_contact_address->appendChild($e_state); } if ($generalContactPostCode){ $e_postcode = $doc->createElement("PostCode", $generalContactPostCode); $e_contact_address->appendChild($e_postcode); } if ($generalContactCountry){ $e_country = $doc->createElement("Country", $generalContactCountry); $e_contact_address->appendChild($e_country); } $e_contact->appendChild($e_contact_address); } if ($generalContactVoiceTelephone){ $e_voice_telephone = $doc->createElement("ContactVoiceTelephone", $generalContactVoiceTelephone); $e_contact->appendChild($e_voice_telephone); } if ($generalContactFacsimileTelephone){ $e_facsimile_telephone = $doc->createElement("ContactFacsimileTelephone", $generalContactFacsimileTelephone); $e_contact->appendChild($e_facsimile_telephone); } if ($generalContactElectronicMailAddress){ $e_email = $doc->createElement("ContactElectronicMailAddress", $generalContactElectronicMailAddress); $e_contact->appendChild($e_email); } $e_general->appendChild($e_contact); } if (count($extensionData) > 0) { //$e = new mb_exception("writing wmc..."); $e_extensionGeneral = $doc->createElement("Extension"); foreach ($extensionData as $keyExtensionData => $valueExtensionData) { $e_currentExtensionTag = $doc->createElement($extension_namespace.":".$keyExtensionData, $valueExtensionData); $e_extensionGeneral->appendChild($e_currentExtensionTag); } $e_general->appendChild($e_extensionGeneral); } $e_view_context->appendChild($e_general); // LayerList $e_layer_list = $doc->createElement("LayerList"); for ($i=0; $i < count($mapObject->wms); $i++){ $wmsId = $mapObject->wms[$i]->wms_id; $wms_epsg = array(); $wms_epsg[0] = $mapObject->epsg; if ($mapObject->wms[$i]->gui_wms_epsg != $mapObject->epsg){ $wms_epsg[1] = $mapObject->wms[$i]->gui_wms_epsg; } for ($q = 0; $q < count($mapObject->wms[$i]->gui_epsg); $q++){ $isInArray = false; for ($r=0 ; $r < count($wms_epsg); $r++){ if ($wms_epsg[$r] == $mapObject->wms[$i]->gui_epsg[$q]){ $isInArray = true; } } if ($isInArray == false){ array_push($wms_epsg, $mapObject->wms[$i]->gui_epsg[$q]); } } for ($j = 0; $j < count($mapObject->wms[$i]->objLayer); $j++){ if ($mapObject->wms[$i]->objLayer[$j]->layer_parent != ''){ if ($mapObject->wms[$i]->objLayer[$j]->gui_layer_visible == "1"){ $layerHidden = 0; } else{ $layerHidden = 1; } $layerQueryable = $mapObject->wms[$i]->objLayer[$j]->layer_queryable; $layerQuerylayer = $mapObject->wms[$i]->objLayer[$j]->gui_layer_querylayer; $layerId = $mapObject->wms[$i]->objLayer[$j]->layer_uid; $layerName = $mapObject->wms[$i]->objLayer[$j]->layer_name; $layerTitle = $mapObject->wms[$i]->objLayer[$j]->layer_title; $layerAbstract = $mapObject->wms[$i]->wms_abstract; //To Do: insert actual abstract $layerDataUrl = $mapObject->wms[$i]->objLayer[$j]->layer_dataurl_href; $layerMetadataUrl = $mapObject->wms[$i]->objLayer[$j]->layer_metadataurl; $layerMinscale = $mapObject->wms[$i]->objLayer[$j]->layer_minscale; $layerMaxscale = $mapObject->wms[$i]->objLayer[$j]->layer_maxscale; $guiLayerMinscale = $mapObject->wms[$i]->objLayer[$j]->gui_layer_minscale; $guiLayerMaxscale = $mapObject->wms[$i]->objLayer[$j]->gui_layer_maxscale; $wmsVersion = $mapObject->wms[$i]->wms_version; $wmsTitle = $mapObject->wms[$i]->wms_title; $wmsLayerId = $mapObject->wms[$i]->objLayer[0]->layer_uid; $wmsOnlineResource = $mapObject->wms[$i]->wms_getmap; $layerPos = $mapObject->wms[$i]->objLayer[$j]->layer_pos; $layerParent = $mapObject->wms[$i]->objLayer[$j]->layer_parent; $queryLayer = $mapObject->wms[$i]->objLayer[$j]->gui_layer_querylayer; $wfsFeatureType = $mapObject->wms[$i]->objLayer[$j]->gui_layer_wfs_featuretype; $e_layer = $doc->createElement("Layer"); $e_layer->setAttribute("queryable", $layerQueryable); $e_layer->setAttribute("hidden", $layerHidden); $e_service = $doc->createElement("Server"); $e_service->setAttribute("service", "OGC:WMS"); $e_service->setAttribute("version", $wmsVersion); $e_service->setAttribute("title", $wmsTitle); $e_service_or = $doc->createElement("OnlineResource"); $e_service_or->setAttribute("xmlns:xlink", "http://www.w3.org/1999/xlink"); $e_service_or->setAttribute("xlink:type", "simple"); $e_service_or->setAttribute("xlink:href", $wmsOnlineResource); $e_service->appendChild($e_service_or); $e_layer->appendChild($e_service); $e_layer_name = $doc->createElement("Name", $layerName); $e_layer->appendChild($e_layer_name); $e_layer_title = $doc->createElement("Title", $layerTitle); $e_layer->appendChild($e_layer_title); if ($layerAbstract){ $e_layer_abstract = $doc->createElement("Abstract", $layerAbstract); $e_layer->appendChild($e_layer_abstract); } $e_layer_srs = $doc->createElement("SRS", implode(" ", $wms_epsg)); $e_layer->appendChild($e_layer_name); if ($layerDataUrl){ $e_layer_data_url = $doc->createElement("DataURL"); $e_layer_data_url_or = $doc->createElement("OnlineResource"); $e_layer_data_url_or->setAttribute("xmlns:xlink", "http://www.w3.org/1999/xlink"); $e_layer_data_url_or->setAttribute("xlink:type", "simple"); $e_layer_data_url_or->setAttribute("xlink:href", $layerDataUrl); $e_layer_data_url->appendChild($e_layer_data_url_or); $e_layer->appendChild($e_layer_data_url); } if ($layerMetadataUrl){ $e_layer_metadata_url = $doc->createElement("MetadataURL"); $e_layer_metadata_url_or = $doc->createElement("OnlineResource"); $e_layer_metadata_url_or->setAttribute("xmlns:xlink", "http://www.w3.org/1999/xlink"); $e_layer_metadata_url_or->setAttribute("xlink:type", "simple"); $e_layer_metadata_url_or->setAttribute("xlink:href", $layerMetadataUrl); $e_layer_metadata_url->appendChild($e_layer_metadata_url_or); $e_layer->appendChild($e_layer_metadata_url); } $e_extension = $doc->createElement("Extension"); $e_scalehint = $doc->createElement($extension_namespace.":ScaleHint"); $e_scalehint->setAttribute("min", $layerMinscale); $e_scalehint->setAttribute("max", $layerMaxscale); $e_extension->appendChild($e_scalehint); $e_gui_scalehint = $doc->createElement($extension_namespace.":guiScaleHint"); $e_gui_scalehint->setAttribute("min", $guiLayerMinscale); $e_gui_scalehint->setAttribute("max", $guiLayerMaxscale); $e_extension->appendChild($e_gui_scalehint); $e_layer_id = $doc->createElement($extension_namespace.":layer_id", $layerId); $e_extension->appendChild($e_layer_id); $e_wms_layer_id = $doc->createElement($extension_namespace.":wms_layer_id", $wmsLayerId); $e_extension->appendChild($e_wms_layer_id); $e_layer_pos = $doc->createElement($extension_namespace.":layer_pos", $layerPos); $e_extension->appendChild($e_layer_pos); $e_layer_parent = $doc->createElement($extension_namespace.":layer_parent", $layerParent); $e_extension->appendChild($e_layer_parent); $e_wms_id = $doc->createElement($extension_namespace.":wms_id", $wmsId); $e_extension->appendChild($e_wms_id); $e_querylayer = $doc->createElement($extension_namespace.":querylayer", $layerQuerylayer); $e_extension->appendChild($e_querylayer); if ($wfsFeatureType) { $e_wfsFeatureType = $doc->createElement($extension_namespace.":wfsFeatureType", $wfsFeatureType); $e_extension->appendChild($e_wfsFeatureType); } $e_layer->appendChild($e_extension); //layerFormat $e_layer_format = $doc->createElement("FormatList"); $data_format_current = false; for ($k = 0; $k < count($mapObject->wms[$i]->data_format); $k++){ if ($mapObject->wms[$i]->data_type[$k] == "map") { $layerFormat = $mapObject->wms[$i]->data_format[$k]; $e_format = $doc->createElement("Format", $layerFormat); if ($data_format_current == false && ( ($mapObject->wms[$i]->data_format[$k] == $mapObject->wms[$i]->gui_wms_mapformat) || ($k == (count($mapObject->wms[$i]->data_format)-1)) )){ $e_format->setAttribute("current", "1"); $data_format_current = true; } $e_layer_format->appendChild($e_format); } } $e_layer->appendChild($e_layer_format); // LayerStyle $e_layer_stylelist = $doc->createElement("StyleList"); for ($k = 0; $k < count($mapObject->wms[$i]->objLayer[$j]->layer_style); $k++){ if ($k == 0){ $layerStyle_current = 1; // To do: insert proper data } else{ $layerStyle_current = 0; // To do: insert proper data } $e_layer_style = $doc->createElement("Style"); $layerStyleSLD = ""; if ($layerStyleSLD){ $layerStyleSLDUrl = ""; // To Do: Insert Proper Data $e_layer_style_or = $doc->createElement("OnlineResource"); $e_layer_style_or->setAttribute("xmlns:xlink", "http://www.w3.org/1999/xlink"); $e_layer_style_or->setAttribute("xlink:type", "simple"); $e_layer_style_or->setAttribute("xlink:href", $layerStyleSLDUrl); $e_layer_style->appendChild($e_layer_style_or); } else{ //TODO: determine correct layer style entries $layerStyle_name = $mapObject->wms[$i]->objLayer[$j]->layer_style[$k]->name; $layerStyle_title = $mapObject->wms[$i]->objLayer[$j]->layer_style[$k]->title; $layerStyle_legendUrl = $mapObject->wms[$i]->objLayer[$j]->layer_style[$k]->legendurl; $layerStyle_legendUrl_width = ""; // To Do: add proper data $layerStyle_legendUrl_height = ""; // To Do: add proper data $layerStyle_legendUrl_format = ""; // To Do: add proper data if ($layerStyle_current == 1){ $e_layer_style->setAttribute("current", "1"); } $e_layer_style_name = $doc->createElement("Name", $layerStyle_name); $e_layer_style->appendChild($e_layer_style_name); $e_layer_style_title = $doc->createElement("Title", $layerStyle_title); $e_layer_style->appendChild($e_layer_style_title); $e_layer_style_legendurl = $doc->createElement("LegendUrl"); $e_layer_style_legendurl->setAttribute("width", $layerStyle_legendUrl_width); $e_layer_style_legendurl->setAttribute("height", $layerStyle_legendUrl_height); $e_layer_style_legendurl->setAttribute("format", $layerStyle_legendUrl_format); $e_layer_style_legendurl_or = $doc->createElement("OnlineResource"); $e_layer_style_legendurl_or->setAttribute("xmlns:xlink", "http://www.w3.org/1999/xlink"); $e_layer_style_legendurl_or->setAttribute("xlink:type", "simple"); $e_layer_style_legendurl_or->setAttribute("xlink:href", $layerStyle_legendUrl); $e_layer_style_legendurl->appendChild($e_layer_style_legendurl_or); $e_layer_style->appendChild($e_layer_style_legendurl); } $e_layer_stylelist->appendChild($e_layer_style); } $e_layer->appendChild($e_layer_stylelist); $e_layer_list->appendChild($e_layer); } } } $e_view_context->appendChild($e_layer_list); $doc->appendChild($e_view_context); $this->xml = $doc->saveXML(); // for debugging: saving WMC as file // (comment when no longer needed) $filename = $this->saveAsFile(); if ($filename) { $e = new mb_notice("class_wmc: saving WMC as file " . $filename); } } /** * Loads a WMC from the database. * * @param integer $wmc_id the ID of the WMC document in the database table "mb_user_wmc" */ function createObjFromWMC_id($wmc_id){ global $DBSERVER,$DB,$OWNER,$PW; $con = db_connect($DBSERVER,$OWNER,$PW); db_select_db(DB, $con); $sql = "SELECT wmc FROM mb_user_wmc WHERE wmc_id = $1"; $v = array($wmc_id); $t = array("s"); $res = db_prep_query($sql, $v, $t); $wmc = db_fetch_row($res); $this->createObjFromWMC_xml($wmc[0]); $this->monitoringIsOn = true; } /** * Loads a WMC from an actual WMC XML document. * * @param string $data the data from the XML file */ function createObjFromWMC_xml($data){ # $data = str_replace("&", "&", $data); // store xml $this->xml = $data; // for debugging: saving WMC as file // (comment when no longer needed) $filename = $this->saveAsFile(); if ($filename) { $e = new mb_notice("class_wmc: saving WMC as file " . $filename); } $values = NULL; $tags = NULL; $parser = xml_parser_create(CHARSET); 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); return false; } xml_parser_free($parser); $section = NULL; $format = NULL; $cnt_format = 0; $parent = array(); $myParent = array(); $cnt_layer = -1; $request = NULL; $layer_style = array(); $extension = false; $general = false; $layerlist = false; $layer = false; $formatlist = false; $dataurl = false; $metadataurl = false; $stylelist = false; $cnt_style = -1; foreach ($values as $element) { $verbose .= "."; if(strtoupper($element[tag]) == "VIEWCONTEXT" && $element[type] == "open"){ $this->wmc_id = $element[attributes]["id"]; $this->wmc_version = $element[attributes]["version"]; } if(strtoupper($element[tag]) == "GENERAL" && $element[type] == "open"){ $general = true; } if(strtoupper($element[tag]) == "LAYERLIST" && $element[type] == "open"){ $layerlist = true; } if ($general) { if(strtoupper($element[tag]) == "WINDOW"){ $this->wmc_windowWidth = $element[attributes]["width"]; $this->wmc_windowHeight = $element[attributes]["height"]; } if(strtoupper($element[tag]) == "BOUNDINGBOX"){ $this->wmc_bBox_SRS = $element[attributes]["SRS"]; $this->wmc_bBox_minx = $element[attributes]["minx"]; $this->wmc_bBox_miny = $element[attributes]["miny"]; $this->wmc_bBox_maxx = $element[attributes]["maxx"]; $this->wmc_bBox_maxy = $element[attributes]["maxy"]; } if(strtoupper($element[tag]) == "NAME"){ $this->wmc_name = mb_utf8_decode(html_entity_decode($element[value])); } if(strtoupper($element[tag]) == "TITLE"){ $this->wmc_title = mb_utf8_decode(html_entity_decode($element[value])); } if(strtoupper($element[tag]) == "ABSTRACT"){ $this->wmc_abstract = mb_utf8_decode(html_entity_decode($element[value])); } if(strtoupper($element[tag]) == "CONTACTINFORMATION" && $element['type'] == "open"){ $contactinformation = true; } if ($contactinformation) { if(strtoupper($element[tag]) == "CONTACTPOSITION"){ $this->wmc_contactposition = mb_utf8_decode(html_entity_decode($element[value])); } if(strtoupper($element[tag]) == "CONTACTVOICETELEPHONE"){ $this->wmc_contactvoicetelephone = $element[value]; } if(strtoupper($element[tag]) == "CONTACTFACSIMILETELEPHONE"){ $this->wmc_contactfacsimiletelephone = $element[value]; } if(strtoupper($element[tag]) == "CONTACTELECTRONICMAILADDRESS"){ $this->wmc_contactemail = mb_utf8_decode(html_entity_decode($element[value])); } if(strtoupper($element[tag]) == "CONTACTPERSONPRIMARY" && $element['type'] == "open"){ $contactpersonprimary = true; } if ($contactpersonprimary) { if(strtoupper($element[tag]) == "CONTACTPERSON"){ $this->wmc_contactperson = mb_utf8_decode(html_entity_decode($element[value])); } if(strtoupper($element[tag]) == "CONTACTORGANIZATION"){ $this->wmc_contactorganization = mb_utf8_decode(html_entity_decode($element[value])); } if(strtoupper($element[tag]) == "CONTACTPERSONPRIMARY" && $element['type'] == "close"){ $contactpersonprimary = false; } } if(strtoupper($element[tag]) == "CONTACTADDRESS" && $element['type'] == "open"){ $contactaddress = true; } if ($contactaddress) { if(strtoupper($element[tag]) == "ADDRESSTYPE"){ $this->wmc_contactaddresstype = mb_utf8_decode(html_entity_decode($element[value])); } if(strtoupper($element[tag]) == "ADDRESS"){ $this->wmc_contactaddress = mb_utf8_decode(html_entity_decode($element[value])); } if(strtoupper($element[tag]) == "CITY"){ $this->wmc_contactcity = mb_utf8_decode(html_entity_decode($element[value])); } if(strtoupper($element[tag]) == "STATEORPROVINCE"){ $this->wmc_contactstateorprovince = mb_utf8_decode(html_entity_decode($element[value])); } if(strtoupper($element[tag]) == "POSTCODE"){ $this->wmc_contactpostcode = $element[value]; } if(strtoupper($element[tag]) == "COUNTRY"){ $this->wmc_contactcountry = mb_utf8_decode(html_entity_decode($element[value])); } if(strtoupper($element[tag]) == "CONTACTADDRESS" && $element['type'] == "close"){ $contactaddress = false; } } } if(strtoupper($element[tag]) == "LOGOURL" && $element['type'] == "open"){ $logourl = true; $this->wmc_logourl_width = $element[attributes]["width"]; $this->wmc_logourl_height = $element[attributes]["height"]; $this->wmc_logourl_format = $element[attributes]["format"]; } if ($logourl) { if(strtoupper($element[tag]) == "LOGOURL" && $element['type'] == "close"){ $logourl = false; } if(strtoupper($element[tag]) == "ONLINERESOURCE"){ $this->wmc_logourl_type = $element[attributes]["xlink:type"]; $this->wmc_logourl = $element[attributes]["xlink:href"]; } } if(strtoupper($element[tag]) == "DESCRIPTIONURL" && $element['type'] == "open"){ $descriptionurl = true; $this->wmc_descriptionurl_format = $element[attributes]["format"]; } if ($descriptionurl) { if(strtoupper($element[tag]) == "DESCRIPTIONURL" && $element['type'] == "close"){ $descriptionurl = false; } if(strtoupper($element[tag]) == "ONLINERESOURCE"){ $this->wmc_descriptionurl_type = $element[attributes]["xlink:type"]; $this->wmc_descriptionurl = $element[attributes]["xlink:href"]; } } if(strtoupper($element[tag]) == "KEYWORDLIST" && $element['type'] == "open"){ $keywordlist = true; } if ($keywordlist) { if(strtoupper($element[tag]) == "KEYWORDLIST" && $element['type'] == "close"){ $keywordlist = false; $cnt_keyword = -1; } if(strtoupper($element[tag]) == "KEYWORD"){ $cnt_keyword++; $this->wmc_keyword[$cnt_keyword] = mb_utf8_decode(html_entity_decode($element[value])); } } if(strtoupper($element[tag]) == "EXTENSION" && $element['type'] == "close"){ $generalExtension = false; } if ($generalExtension) { $this->wmc_general_extension[sepNameSpace($element[tag])] = $element[value]; // $e = new mb_exception("WMC: " . $element[tag] . ": " . $element[value]); } if(strtoupper($element[tag]) == "EXTENSION" && $element['type'] == "open"){ $generalExtension = true; } if(strtoupper($element[tag]) == "GENERAL" && $element['type'] == "close"){ $general = false; } } if ($layerlist) { if(strtoupper($element[tag]) == "LAYERLIST" && $element['type'] == "close"){ $layerlist = false; } if(strtoupper($element[tag]) == "LAYER" && $element[type] == "open"){ $cnt_layer++; $this->wmc_layer_queryable[$cnt_layer] = $element[attributes]["queryable"]; $this->wmc_layer_hidden[$cnt_layer] = $element[attributes]["hidden"]; $layer = true; $cnt_epsg = 0; } if ($layer) { if(strtoupper($element[tag]) == "LAYER" && $element[type] == "close"){ $layer = false; } if ($formatlist) { if(strtoupper($element[tag]) == "FORMAT"){ $cnt_format++; $this->wmc_layer_format_current[$cnt_layer][$cnt_format] = $element[attributes]["current"]; $this->wmc_layer_format[$cnt_layer][$cnt_format] = $element[value]; } if(strtoupper($element[tag]) == "FORMATLIST" && $element[type] == "close"){ $formatlist = false; } } elseif ($metadataurl) { if(strtoupper($element[tag]) == "ONLINERESOURCE"){ $this->wmc_layer_metadataurl[$cnt_layer] = $element[attributes]["xlink:href"]; } if(strtoupper($element[tag]) == "METADATAURL" && $element[type] == "close"){ $metadataurl = false; } } elseif ($dataurl) { if(strtoupper($element[tag]) == "ONLINERESOURCE"){ $this->wmc_layer_dataurl[$cnt_layer] = $element[attributes]["xlink:href"]; } if(strtoupper($element[tag]) == "DATAURL" && $element[type] == "close"){ $dataurl = false; } } elseif ($stylelist) { if(strtoupper($element[tag]) == "STYLE" && $element[type] == "open"){ $cnt_style++; $style = true; $this->wmc_layer_style_current[$cnt_layer][$cnt_style] = $element[attributes]["current"]; } if ($style) { if(strtoupper($element[tag]) == "STYLE" && $element[type] == "close"){ $style = false; } if(strtoupper($element[tag]) == "SLD" && $element[type] == "open"){ $sld = true; } if ($sld) { if(strtoupper($element[tag]) == "SLD" && $element[type] == "close"){ $sld = false; } if(strtoupper($element[tag]) == "ONLINERESOURCE"){ $this->wmc_layer_style_sld_type[$cnt_layer][$cnt_style] = $element[attributes]["xlink:type"]; $this->wmc_layer_style_sld_url[$cnt_layer][$cnt_style] = $element[attributes]["xlink:href"]; } if(strtoupper($element[tag]) == "TITLE"){ $this->wmc_layer_style_sld_title[$cnt_layer][$cnt_style] = mb_utf8_decode(html_entity_decode($element[value])); } } else { if(strtoupper($element[tag]) == "NAME"){ $this->wmc_layer_style_name[$cnt_layer][$cnt_style] = mb_utf8_decode(html_entity_decode($element[value])); } if(strtoupper($element[tag]) == "TITLE"){ $this->wmc_layer_style_title[$cnt_layer][$cnt_style] = $element[value]; } if(strtoupper($element[tag]) == "LEGENDURL" && $element[type] == "open"){ $legendurl = true; $this->wmc_layer_style_legendurl_width[$cnt_layer][$cnt_style] = $element[attributes]["width"]; $this->wmc_layer_style_legendurl_height[$cnt_layer][$cnt_style] = $element[attributes]["height"]; $this->wmc_layer_style_legendurl_format[$cnt_layer][$cnt_style] = $element[attributes]["format"]; } if ($legendurl) { if(strtoupper($element[tag]) == "LEGENDURL" && $element[type] == "close"){ $legendurl = false; } if(strtoupper($element[tag]) == "ONLINERESOURCE"){ $this->wmc_layer_style_legendurl_type[$cnt_layer][$cnt_style] = $element[attributes]["xlink:type"]; $this->wmc_layer_style_legendurl[$cnt_layer][$cnt_style] = $element[attributes]["xlink:href"]; } } } } if(strtoupper($element[tag]) == "STYLELIST" && $element[type] == "close"){ $stylelist = false; } } else { if(strtoupper($element[tag]) == "SERVER" && $element[type] == "open"){ $server = true; $this->wmc_wms_service[$cnt_layer] = $element[attributes]["service"]; $this->wmc_wms_version[$cnt_layer] = $element[attributes]["version"]; $this->wmc_wms_title[$cnt_layer] = mb_utf8_decode(html_entity_decode($element[attributes]["title"])); } if ($server) { if(strtoupper($element[tag]) == "SERVER" && $element[type] == "close"){ $server = false; } if(strtoupper($element[tag]) == "ONLINERESOURCE"){ $this->wmc_wms_serviceURL[$cnt_layer] = $element[attributes]["xlink:href"]; } } if(strtoupper($element[tag]) == "NAME"){ $this->wmc_layer_name[$cnt_layer] = mb_utf8_decode(html_entity_decode($element[value])); } if(strtoupper($element[tag]) == "TITLE"){ $this->wmc_layer_title[$cnt_layer] = mb_utf8_decode(html_entity_decode($element[value])); } if(strtoupper($element[tag]) == "ABSTRACT"){ $this->wmc_layer_abstract[$cnt_layer] = mb_utf8_decode(html_entity_decode($element[value])); } if(strtoupper($element[tag]) == "SRS"){ $epsgArray = explode(" ", $element[value]); for ($c = 0 ; $c < count($epsgArray) ; $c ++) { $this->wmc_layer_srs[$cnt_layer][$cnt_epsg] = $epsgArray[$c]; $cnt_epsg++; } } if (strtoupper($element[tag]) == "EXTENSION" && $element[type] == "open") { $extension = true; } if (strtoupper($element[tag]) == "EXTENSION" && $element[type] == "close") { $extension = false; } if($extension == true && strtoupper(sepNameSpace($element[tag])) == "SCALEHINT"){ $this->wmc_layer_minscale[$cnt_layer] = $element[attributes]["min"]; $this->wmc_layer_maxscale[$cnt_layer] = $element[attributes]["max"]; } if($extension == true && strtoupper(sepNameSpace($element[tag])) == "GUISCALEHINT"){ $this->wmc_gui_layer_minscale[$cnt_layer] = $element[attributes]["min"]; $this->wmc_gui_layer_maxscale[$cnt_layer] = $element[attributes]["max"]; } if($extension == true && strtoupper(sepNameSpace($element[tag])) == "LAYER_ID"){ $this->wmc_layer_id[$cnt_layer] = $element[value]; } if($extension == true && strtoupper(sepNameSpace($element[tag])) == "WMS_LAYER_ID"){ $this->wmc_wms_layer_id[$cnt_layer] = $element[value]; } if($extension == true && strtoupper(sepNameSpace($element[tag])) == "LAYER_POS"){ $this->wmc_layer_pos[$cnt_layer] = $element[value]; } if($extension == true && strtoupper(sepNameSpace($element[tag])) == "LAYER_PARENT"){ $this->wmc_layer_parent[$cnt_layer] = $element[value]; } if($extension == true && strtoupper(sepNameSpace($element[tag])) == "QUERYLAYER"){ $this->wmc_layer_querylayer[$cnt_layer] = $element[value]; } if($extension == true && strtoupper(sepNameSpace($element[tag])) == "WMS_ID"){ $this->wmc_wms_id[$cnt_layer] = $element[value]; } if($extension == true && strtoupper(sepNameSpace($element[tag])) == "WFSFEATURETYPE"){ $this->wmc_layer_wfs_featuretype[$cnt_layer] = $element[value]; } if(strtoupper($element[tag]) == "METADATAURL" && $element[type] == "open"){ $metadataurl = true; } if(strtoupper($element[tag]) == "DATAURL" && $element[type] == "open"){ $dataurl = true; } if(strtoupper($element[tag]) == "FORMATLIST" && $element[type] == "open"){ $formatlist = true; $cnt_format = -1; } if(strtoupper($element[tag]) == "STYLELIST" && $element[type] == "open"){ $stylelist = true; $cnt_style = -1; } } } } } return true; //return $verbose; } /** * Creates JS code manipulating the map and wms objects, * by this displaying the WMC * * @param string $target the link to the map object, f.e. "parent." or "window.opener." * @param string $mapObj the name of the map object, f.e. "mapframe1" * @param string $action "load", "merge" or "append" * * @return string the JS code */ function createJsObjFromWMC($target, $mapObj, $action){ /* * counts how often a layer has been loaded */ if ($this->monitoringIsOn) { $monitor = new Layer_load_count(); for ($i = 0; $i < count($this->wmc_layer_id); $i++) { $monitor->increment($this->wmc_layer_id[$i]); } } $wmc_string = ""; $validActions = array("load", "merge", "append"); if (!in_array($action, $validActions)) { $wmc_string .= "alert('invalid action: ".$action."');"; } else { // general extension if (count($this->wmc_general_extension) > 0) { $json = new Mapbender_JSON(); $wmc_string .= $target . "restoredWmcExtensionData = " . $json->encode($this->wmc_general_extension) . ";\n"; } $wmc_string .= "var index = " . $target . "getMapObjIndexByName('" . $mapObj . "');\n"; if ($action == "load") { // delete all previous wms $wmc_string .= "while(" . $target . "mb_mapObj[index].wms.length > 0){" . $target . "mb_mapObjremoveWMS(index,0);}"; $wmc_string .= $target . "deleteWmsObject();\n"; } if ($action == "merge") { $wmc_string .= "var wms_exists = false;\n"; // true if this wms exists in the mapObj $wmc_string .= "var current_wms_index = null;\n"; // if wms_exists: index of the wms in the map obj; else: null $wmc_string .= "var layer_exists = false;\n"; // true if this layer exists in an existing wms of the mapObj $wmc_string .= "var current_layer_index = null;\n"; // if layer_exists: index of the layer of the wms in the mapObj; else: null } $new_wms = ""; $cnt_wms = -1; $added_wms = array(); // for all layers in wmc, find individual wms... for ($i = 0; $i < count($this->wmc_layer_title); $i++) { $current_wms = $this->wmc_wms_serviceURL[$i]; // ...this is something like 'for every wms' if (!in_array($current_wms , $added_wms)) { $layerlist = ""; $querylayerlist = ""; $srs_array = array(); if ($action == "merge") { $wmc_string .= "wms_exists = false;\n"; $wmc_string .= "current_wms_index = null;\n"; $wmc_string .= "for (var m=0; m < " . $target . "mb_mapObj[index].wms.length; m++) {\n"; $wmc_string .= "\tif ('" . $this->wmc_wms_serviceURL[$i] . "' == " . $target . "mb_mapObj[index].wms[m].wms_getmap) {\n"; $wmc_string .= "\t\twms_exists = true;\n"; $wmc_string .= "\t\tcurrent_wms_index = m;\n"; $wmc_string .= "\t}\n"; $wmc_string .= "}\n"; $wmc_string .= "if (!wms_exists) {\n"; } $mywms = new wms(); if(!$this->wmc_layer_title[$i] || $this->wmc_layer_title[$i] == ""){ echo "alert('Error: no valid capabilities-document !!');\n"; die; exit; } for($j=0;$jwmc_layer_format[$i]);$j++){ if ($this->wmc_layer_format_current[$i][$j] == 1) { $wms_data_format = $this->wmc_layer_format[$i][$j]; } } // add wms $wmc_string .= "\t" . $target . "add_wms('". $this->wmc_wms_id[$i]."','". $this->wmc_wms_version[$i] ."','". $this->wmc_wms_title[$i] ."','". $this->wmc_layer_abstract[$i] ."','". $this->wmc_wms_serviceURL[$i] ."','" . $this->wmc_wms_serviceURL[$i] ."','" . $this->wmc_layer_style_legendurl[$i][0] ."','','". $wms_data_format ."','text/html','application/vnd.ogc.se_xml','". $this->wmc_bBox_SRS ."','1','100','');\n"; $added_wms[count($added_wms)] = $current_wms; $cnt_wms++; $cnt_layers = 0; $cnt_query_layers = 0; if ($action == "merge") { $wmc_string .= "}\n"; } // add epsg $wmc_string .= $target . "wms_addSRS('". $this->wmc_bBox_SRS ."','". $this->wmc_bBox_minx ."','". $this->wmc_bBox_miny ."','". $this->wmc_bBox_maxx ."','". $this->wmc_bBox_maxy ."','". "');\n"; // for each layer... for ($ii = 0; $ii < count($this->wmc_layer_title); $ii++) { $layer_wms = $this->wmc_wms_serviceURL[$ii]; // ... of this wms if ($current_wms == $layer_wms) { // add format (FIXME: is this working?) $z = count($this->wmc_layer_format[$ii]); for($j=0;$j<$z;$j++){ $wmc_string .= $target . "wms_add_data_type_format('map','". $this->wmc_layer_format[$ii][$j] ."');\n"; } if ($cnt_layers == 0) { if ($action == "merge") { $wmc_string .= "if (!wms_exists) {\n\t"; } // add parent layer $wmc_string .= $target . "wms_add_layer('','". $this->wmc_wms_layer_id[$i]."','','". $this->wmc_wms_title[$i] ."','','0','0','0','0','','". $this->wmc_wms_id[$i]."','1','', '1','1','0','0','0','0','');\n"; if ($action == "merge") { $wmc_string .= "}\n"; } } $cnt_layers++; if ($action == "merge") { $wmc_string .= "if (wms_exists) {\n"; // check if this layer already exists in this wms $wmc_string .= "\tlayer_exists = false;\n"; $wmc_string .= "\tcurrent_layer_index = null;\n"; $wmc_string .= "\tfor (var m=0; m < " . $target . "mb_mapObj[index].wms[current_wms_index].objLayer.length; m++) {\n"; $wmc_string .= "\t\tif ('" . $this->wmc_layer_name[$ii] . "' == " . $target . "mb_mapObj[index].wms[current_wms_index].objLayer[m].layer_name) {\n"; $wmc_string .= "\t\t\tlayer_exists = true;\n"; $wmc_string .= "\t\t\tcurrent_layer_index = m;\n"; $wmc_string .= "\t\t}\n"; $wmc_string .= "\t}\n"; if ($this->wmc_layer_querylayer[$ii]!="") { $querylayer_yn = $this->wmc_layer_querylayer[$ii]; } else { $querylayer_yn = $this->wmc_layer_queryable[$ii]; } $wmc_string .= "\tif (layer_exists) {\n"; // check if the visibility or the queryability are different to the existing layer $wmc_string .= "\t\tif (" . $target . "mb_mapObj[index].wms[current_wms_index].objLayer[current_layer_index].gui_layer_visible != '" . intval(!$this->wmc_layer_hidden[$ii]) . "'"; $wmc_string .= " || " . $target . "mb_mapObj[index].wms[current_wms_index].objLayer[current_layer_index].gui_layer_querylayer != '" . $querylayer_yn . "') {\n"; // if yes, update the visibility and queryability $wmc_string .= "\t\t\t" . $target . "mb_mapObj[index].wms[current_wms_index].objLayer[current_layer_index].gui_layer_visible = " . intval(!$this->wmc_layer_hidden[$ii]) . ";\n"; $wmc_string .= "\t\t\t" . $target . "mb_mapObj[index].wms[current_wms_index].objLayer[current_layer_index].gui_layer_querylayer = " . $querylayer_yn . ";\n"; $wmc_string .= "\t\t}\n"; $wmc_string .= "\t}\n"; $wmc_string .= "}\n"; $wmc_string .= "\telse {\n"; } // add layer $wmc_string .= "\t" . $target . "wms_add_layer('". ($this->wmc_layer_parent[$ii]!=""?$this->wmc_layer_parent[$ii]:"0") . "','". $this->wmc_layer_id[$ii] . "','". $this->wmc_layer_name[$ii] . "','". $this->wmc_layer_title[$ii] ."','". $this->wmc_layer_dataurl[$ii] . "','". ($this->wmc_layer_pos[$ii]!=""?$this->wmc_layer_pos[$ii]:intval($cnt_layers)) ."','". $this->wmc_layer_queryable[$ii] ."','". $this->wmc_layer_minscale[$ii] ."','". $this->wmc_layer_maxscale[$ii] ."','". $this->wmc_layer_metadataurl[$ii] ."','". $this->wmc_wms_id[$i] ."','1','', '1','". intval(!$this->wmc_layer_hidden[$ii]) ."','". $this->wmc_layer_queryable[$ii] ."','". ($this->wmc_layer_querylayer[$ii]!=""?$this->wmc_layer_querylayer[$ii]:$this->wmc_layer_queryable[$ii]) ."','". ($this->wmc_gui_layer_minscale[$ii]!=""?$this->wmc_gui_layer_minscale[$ii]:$this->wmc_layer_minscale[$ii]) ."','". ($this->wmc_gui_layer_maxscale[$ii]!=""?$this->wmc_gui_layer_maxscale[$ii]:$this->wmc_layer_maxscale[$ii]) ."','". $this->wmc_layer_wfs_featuretype[$ii] . "');\n"; if ($action == "merge") { $wmc_string .= "\t}\n"; } // if layer is queryable, add it to querylayerlist if (($this->wmc_layer_querylayer[$ii]!=""?$this->wmc_layer_querylayer[$ii]:$this->wmc_layer_queryable[$ii])) { $cnt_query_layers++; if (!in_array($this->wmc_layer_name[$ii], explode(",",$querylayerlist))) { if ($querylayerlist == "") {$querylayerlist = $this->wmc_layer_name[$ii];} else {$querylayerlist .= "," . $this->wmc_layer_name[$ii];} } } // if layer is visible, add it to layerlist if (intval(!$this->wmc_layer_hidden[$ii]) && !in_array($this->wmc_layer_name[$ii], explode(",",$layerlist))) { if ($layerlist == "") {$layerlist = $this->wmc_layer_name[$ii];} else {$layerlist .= "," . $this->wmc_layer_name[$ii];} } // add layer style (FIXME: is this working?) for($j=0; $jwmc_layer_style_name[$ii]);$j++){ $wmc_string .= $target . "wms_addLayerStyle('".$this->wmc_layer_style_name[$ii][$j] ."','".$this->wmc_layer_style_title[$ii][$j] ."','".$j."','".$cnt_layers."', '" . $this->wmc_layer_style_legendurl[$ii][$j] . "', '" . $this->wmc_layer_style_legendurl_format[$ii][$j] . "');\n"; } } } // add wms to mapObj with all layers and querylayers if ($action == "merge") { $wmc_string .= "if (!wms_exists) {\n"; } $wmc_string .= $target. "mb_mapObjaddWMSwithLayers('" . $mapObj . "', '" . $layerlist . "', '" . $querylayerlist . "');\n"; if ($action == "merge") { $wmc_string .= "}\n"; $wmc_string .= "else {\n"; $wmc_string .= $target. "mb_mapObj[index].layers[current_wms_index] = \"" . $layerlist . "\";\n"; $wmc_string .= $target. "mb_mapObj[index].querylayers[current_wms_index] = \"" . $querylayerlist . "\";\n"; $wmc_string .= "}\n"; } } } $wmc_string .= "var old_mapObj = ".$target."cloneObject(".$target."mb_mapObj);\n"; $wmc_string .= $target . "deleteMapObj();\n"; $wmc_string .= "for (var i=0; iwmc_windowWidth . ", " . $this->wmc_windowHeight . ");\n"; $wmc_string .= "\t\t" . $target . "document.getElementById(old_mapObj[i].frameName).style.width = " . $this->wmc_windowWidth . ";\n"; $wmc_string .= "\t\t" . $target . "document.getElementById(old_mapObj[i].frameName).style.height = " . $this->wmc_windowHeight . ";\n"; $wmc_string .= "\t}\n"; $wmc_string .= "\telse {\n"; $wmc_string .= "\t\tvar found = false;\n"; $wmc_string .= "\t\tfor (var j=0; j < " . $target . "wms.length && found == false; j++) {\n"; $wmc_string .= "\t\t\tif (" . $target . "wms[j].wms_getmap == old_mapObj[i].wms[0].wms_getmap) {\n"; $wmc_string .= "\t\t\t\t" . $target . "mb_registerMapObj('overview', old_mapObj[i].elementName, j, old_mapObj[i].width, old_mapObj[i].width);\n"; $wmc_string .= "\t\t\t\tfound = true;\n"; $wmc_string .= "\t\t\t}\n"; $wmc_string .= "\t\t}\n"; $wmc_string .= "\t\tif (!found) {\n"; $wmc_string .= "\t\t\t" . $target . "mb_registerMapObj('overview', old_mapObj[i].elementName, 0, old_mapObj[i].width, old_mapObj[i].width);\n"; $wmc_string .= "\t\t}\n"; $wmc_string .= "\t}\n"; $wmc_string .= "}\n"; $ov_bbox = array(); // compute the union of the overview and the mapframe bbox for the new overview bbox if ($this->wmc_general_extension["ov_minx"] && $this->wmc_general_extension["ov_miny"] && $this->wmc_general_extension["ov_maxx"] && $this->wmc_general_extension["ov_maxy"]) { // box for overview $ov_min = new Mapbender_point($this->wmc_general_extension["ov_minx"], $this->wmc_general_extension["ov_miny"], $this->wmc_bBox_SRS); $ov_max = new Mapbender_point($this->wmc_general_extension["ov_maxx"], $this->wmc_general_extension["ov_maxy"], $this->wmc_bBox_SRS); $ov_box = new Mapbender_bbox($ov_min, $ov_max, $this->wmc_bBox_SRS); // box for mapframe $mf_min = new Mapbender_point($this->wmc_bBox_minx, $this->wmc_bBox_miny, $this->wmc_bBox_SRS); $mf_max = new Mapbender_point($this->wmc_bBox_maxx, $this->wmc_bBox_maxy, $this->wmc_bBox_SRS); $mf_box = new Mapbender_bbox($mf_min, $mf_max, $this->wmc_bBox_SRS); $unionBox = Mapbender_bbox::union(array($ov_box, $mf_box)); array_push($ov_bbox, $unionBox->min->x); array_push($ov_bbox, $unionBox->min->y); array_push($ov_bbox, $unionBox->max->x); array_push($ov_bbox, $unionBox->max->y); } else { /* $sql = "SELECT minx, miny, maxx, maxy FROM layer_epsg WHERE fkey_layer_id = $1 AND epsg = $2 LIMIT 1"; $v = array($this->wmc_layer_id[0], $this->wmc_bBox_SRS); $t = array('i', 's'); $res = db_prep_query($sql, $v, $t); $row = db_fetch_array($res); if ($row["minx"] && $row["miny"] && $row["maxx"] && $row["maxy"]) { $ov_bbox = array($row["minx"],$row["miny"],$row["maxx"],$row["maxy"]); } else if ($this->wmc_layer_id[0] && $this->wmc_bBox_SRS){ $ov_bbox = array($this->wmc_bBox_minx, $this->wmc_bBox_miny, $this->wmc_bBox_maxx, $this->wmc_bBox_maxy); } else { */ $ov_bbox = array(2412139.175257732, 5365000, 2767860.824742268, 5700000); // } } $wmc_string .= "for (var i=0; iwmc_bBox_minx .",".$this->wmc_bBox_miny .","; $wmc_string .= $this->wmc_bBox_maxx .",".$this->wmc_bBox_maxy.");\n"; $wmc_string .= "\t}\n"; $wmc_string .= "\telse {\n"; $wmc_string .= "\t\t".$target."mb_calculateExtent(old_mapObj[i].frameName, "; $wmc_string .= $ov_bbox[0] .",".$ov_bbox[1] .","; $wmc_string .= $ov_bbox[2] .",".$ov_bbox[3] .");\n"; $wmc_string .= "\t}\n"; $wmc_string .= "\t". $target . "setMapRequest(old_mapObj[i].frameName);\n"; $wmc_string .= "}\n"; $wmc_string .= $target . "mb_execloadWmsSubFunctions();\n"; } // $e = new mb_exception("js code: " . $wmc_string); return $wmc_string; } } // end class ?>