decode($_REQUEST["mapObject"]); $user_id = $_SESSION["mb_user_id"]; $save_in_session = $_POST["saveInSession"]; $generalTitle = $_POST["generalTitle"]; $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", $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 || $arrayBBoxgeneralContactAddress || $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); } $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; $wmsVersion = $mapObject->wms[$i]->wms_version; $wmsTitle = $mapObject->wms[$i]->wms_title; $wmsOnlineResource = $mapObject->wms[$i]->wms_getmap; $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_layer_id = $doc->createElement($extension_namespace.":layer_id", $layerId); $e_extension->appendChild($e_layer_id); $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); $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); $xml = $doc->saveXML(); if ($save_in_session) { if (isset($_SESSION["mb_wmc"])) { $_SESSION["mb_wmc"] = $xml; } } else { if ($user_id && $wmc_id) { $sql = "INSERT INTO mb_user_wmc VALUES ($1, $2, $3, $4, $5)"; $v = array($wmc_id, $user_id, $xml, $generalTitle, time()); $t = array("s", "i", "s", "s", "s"); $res = db_prep_query($sql, $v, $t); if (db_error()) { echo "Error while saving WMC document '" . $generalTitle . "': " . db_error(); } else { echo "WMC document '" . $generalTitle . "' has been saved."; } } } ?>