setSuccess(false); $ajaxResponse->setMessage($message); $ajaxResponse->send(); die; }; function getWms ($wmsId = null) { $user = new User(Mapbender::session()->get("mb_user_id")); $wmsIdArray = $user->getOwnedWms(); if (!is_null($wmsId) && !in_array($wmsId, $wmsIdArray)) { abort(_mb("You are not allowed to access this WMS.")); } return $wmsIdArray; } function getLayer ($layerId = null) { $user = new User(Mapbender::session()->get("mb_user_id")); $wmsIdArray = $user->getOwnedWms(); if (!is_array($wmsIdArray) || count($wmsIdArray) === 0) { abort(_mb("No metadata sets available.")); } $wmsId = wms::getWmsIdByLayerId($layerId); if (is_null($wmsId) || !in_array($wmsId, $wmsIdArray)) { abort(_mb("You are not allowed to access WMS " . $wmsId)); } return; } switch ($ajaxResponse->getMethod()) { case "getWms" : $wmsIdArray = getWms(); $wmsList = implode(",", $wmsIdArray); $sql = << array( _mb("WMS ID"), _mb("title"), _mb("last change"), _mb("creation"), _mb("version"), _mb("status"), _mb("wms id") ), "data" => array() ); while ($row = db_fetch_row($res)) { // convert NULL to '', NULL values cause datatables to crash $walk = array_walk($row, create_function('&$s', '$s=strval($s);')); $resultObj["data"][]= $row; } $ajaxResponse->setResult($resultObj); $ajaxResponse->setSuccess(true); break; case "getWmsMetadata" : $wmsId = $ajaxResponse->getParameter("id"); getWms($wmsId); $wms = new wms(); $wms->createObjFromDBNoGui($wmsId); $fields = array( "wms_id", "wms_abstract", "wms_title", "fees", "accessconstraints", "contactperson", "contactposition", "contactvoicetelephone", "contactfacsimiletelephone", "contactorganization", "address", "city", "stateorprovince", "postcode", "country", "contactelectronicmailaddress", "wms_timestamp", "wms_timestamp_create", "wms_network_access" ); $resultObj = array(); foreach ($fields as $field) { if ($field == "wms_timestamp" || $field == "wms_timestamp_create") { if ($wms->$field != "") { $resultObj[$field] = date('d.m.Y', $wms->$field); } } else { $resultObj[$field] = $wms->$field; } } // layer searchable $resultObj["layer_searchable"] = array(); foreach ($wms->objLayer as $layer) { if (intval($layer->layer_searchable) === 1) { $resultObj["layer_searchable"][] = intval($layer->layer_uid); } } $keywordSql = <<setResult($resultObj); $ajaxResponse->setSuccess(true); break; case "getLayerMetadata" : $layerId = $ajaxResponse->getParameter("id"); getLayer($layerId); $sql = << $value) { $resultObj[$key] = $value; $e = new mb_notice("plugins/mb_metadata_server.php: get ".$value." for ".$key); } } $sql = <<setResult($resultObj); $ajaxResponse->setSuccess(true); break; case "getLayerByWms" : $wmsId = $ajaxResponse->getParameter("id"); // getWms($wmsId); $sql = << $left, "right" => $right, "parent" => $row["layer_parent"] !== "" ? intval($row["layer_parent"]) : null, "pos" => intval($row["layer_pos"]), "attr" => array ( "layer_id" => intval($row["layer_id"]), "layer_name" => $row["layer_name"], "layer_title" => $row["layer_title"], "layer_abstract" => $row["layer_abstract"], "layer_searchable" => intval($row["layer_searchable"]) ) ); } function addSubTree ($rows, $i, $left) { $nodeArray = array(); $addNewNode = true; for ($j = $i; $j < count($rows); $j++) { $row = $rows[$j]; $pos = intval($row["layer_pos"]); $parent = $row["layer_parent"] !== "" ? intval($row["layer_parent"]) : null; // first node of subtree if ($addNewNode) { $nodeArray[]= createNode($left, null, $row); $addNewNode = false; } else { // new sub tree if ($parent === $nodeArray[count($nodeArray)-1]["pos"]) { $addedNodeArray = addSubTree($rows, $j, ++$left); $nodeArray[count($nodeArray)-1]["right"] = $nodeArray[count($nodeArray)-1]["left"] + 2 * count($addedNodeArray) + 1; $left = $nodeArray[count($nodeArray)-1]["right"] + 1; $nodeArray = array_merge($nodeArray, $addedNodeArray); $j += count($addedNodeArray) - 1; $addNewNode = true; } // siblings elseif ($parent === $nodeArray[count($nodeArray)-1]["parent"]) { $nodeArray[count($nodeArray)-1]["right"] = ++$left; $nodeArray[]= createNode(++$left, null, $row); } } } if (is_null($nodeArray[count($nodeArray)-1]["right"])) { $nodeArray[count($nodeArray)-1]["right"] = ++$left; } return $nodeArray; } $nodeArray = addSubTree($rows, 0, 1); $resultObj = array( "nestedSets" => $nodeArray ); $ajaxResponse->setResult($resultObj); $ajaxResponse->setSuccess(true); break; case "save": $data = $ajaxResponse->getParameter("data"); try { $wmsId = intval($data->wms->wms_id); } catch (Exception $e) { $ajaxResponse->setSuccess(false); $ajaxResponse->setMessage(_mb("Invalid WMS ID.")); $ajaxResponse->send(); } getWms($wmsId); $wms = new wms(); $wms->createObjFromDBNoGui($wmsId); $columns = array( "wms_abstract", "wms_title", "fees", "accessconstraints", "contactperson", "contactposition", "contactvoicetelephone", "contactfacsimiletelephone", "contactorganization", "address", "city", "stateorprovince", "postcode", "country", "contactelectronicmailaddress", "wms_termsofuse", "wms_network_access" ); foreach ($columns as $c) { $value = $data->wms->$c; if (!is_null($value)) { $wms->$c = $value; } } if (is_array($data->wms->layer_searchable)) { foreach ($wms->objLayer as &$layer) { $layer->layer_searchable = 0; for ($i = 0; $i < count($data->wms->layer_searchable); $i++) { $id = $data->wms->layer_searchable[$i]; if ($id !== intval($layer->layer_uid)) { continue; } $layer->layer_searchable = 1; break; } unset($id); } } try { $layerId = intval($data->layer->layer_id); } catch (Exception $e) { $ajaxResponse->setSuccess(false); $ajaxResponse->setMessage(_mb("Could not read layer ID ".$data->layer->layer_id)); $ajaxResponse->send(); } if ($layerId) { $e = new mb_exception("Got following layer id from wms metadata editor client: ".$layerId); try { $layer = &$wms->getLayerReferenceById($layerId); } catch (Exception $e) { $ajaxResponse->setSuccess(false); $ajaxResponse->setMessage(_mb("Could not get layer with ID ".$layerId)); $ajaxResponse->send(); } $columns = array( "layer_abstract", "layer_title", "layer_keyword", "layer_md_topic_category_id", "layer_inspire_category_id", "layer_custom_category_id" ); foreach ($columns as $c) { $value = $data->layer->$c; $e = new mb_exception("plugins/mb_metadata_server.php: layer entry for ".$c.": ".$data->layer->$c); if ($c === "layer_keyword") { $layer->$c = explode(",", $value); foreach ($layer->$c as &$val) { $val = trim($val); } } elseif ($c === "layer_md_topic_category_id" || $c === "layer_inspire_category_id" || $c === "layer_custom_category_id" ) { if (!is_array($value)) { $layer->$c = array($value); } else { $layer->$c = $value; } } else { if (!is_null($value)) { $layer->$c = $value; } } } } if ($wms->wms_network_access == "on") { $wms->wms_network_access = intval('1'); } else { $wms->wms_network_access = intval('0'); } //try { $wms->updateObjInDB($wmsId); //} //catch (Exception $e) { // $ajaxResponse->setSuccess(false); // $ajaxResponse->setMessage(_mb("Could not update wms object in database!")); // $ajaxResponse->send(); //} $ajaxResponse->setMessage("Updated WMS metadata for ID " . $wmsId); $ajaxResponse->setSuccess(true); break; default: $ajaxResponse->setSuccess(false); $ajaxResponse->setMessage(_mb("An unknown error occured.")); break; } $ajaxResponse->send(); ?>