[Mapbender-commits] r7035 - trunk/mapbender/http/plugins
svn_mapbender at osgeo.org
svn_mapbender at osgeo.org
Mon Oct 11 01:10:31 EDT 2010
Author: armin11
Date: 2010-10-10 22:10:31 -0700 (Sun, 10 Oct 2010)
New Revision: 7035
Added:
trunk/mapbender/http/plugins/mb_metadata_wmc_server.php
Log:
Initial server component for wmc metadata editor
Added: trunk/mapbender/http/plugins/mb_metadata_wmc_server.php
===================================================================
--- trunk/mapbender/http/plugins/mb_metadata_wmc_server.php (rev 0)
+++ trunk/mapbender/http/plugins/mb_metadata_wmc_server.php 2010-10-11 05:10:31 UTC (rev 7035)
@@ -0,0 +1,396 @@
+<?php
+require_once dirname(__FILE__) . "/../../core/globalSettings.php";
+require_once dirname(__FILE__) . "/../classes/class_user.php";
+require_once dirname(__FILE__) . "/../classes/class_wmc.php";
+require_once(dirname(__FILE__)."/../classes/class_wmc_factory.php");
+
+$ajaxResponse = new AjaxResponse($_POST);
+
+function abort ($message) {
+ global $ajaxResponse;
+ $ajaxResponse->setSuccess(false);
+ $ajaxResponse->setMessage($message);
+ $ajaxResponse->send();
+ die;
+};
+
+function getWmc ($wmcId = null) {
+ $user = new User(Mapbender::session()->get("mb_user_id"));
+ $wmcIdArray = $user->getOwnedWmc();
+ if (!is_array($wmcIdArray) || count($wmcIdArray) === 0) {
+ abort(_mb("No metadata sets available."));
+ }
+ if (!is_null($wmcId) && !in_array($wmcId, $wmcIdArray)) {
+ abort(_mb("You are not allowed to access this WMC."));
+ }
+ return $wmcIdArray;
+}
+
+/*function getFeaturetype ($featuretypeId = null) {
+ $user = new User(Mapbender::session()->get("mb_user_id"));
+ $wfsIdArray = $user->getOwnedWfs();
+ if (!is_array($wfsIdArray) || count($wfsIdArray) === 0) {
+ abort(_mb("No metadata sets available."));
+ }
+ $wfsId = wfs::getWfsIdByFeaturetypeId($featuretypeId);
+ if (is_null($wfsId) || !in_array($wfsId, $wfsIdArray)) {
+ abort(_mb("You are not allowed to access this WFS " . $wfsId));
+ }
+ return;
+}
+*/
+switch ($ajaxResponse->getMethod()) {
+ case "getWmc" :
+ $wmcIdArray = getWfs();
+
+ $wmcList = implode(",", $wmcIdArray);
+
+ $sql = <<<SQL
+
+SELECT mb_user_wmc.wmc_serial_id as wmc_id, mb_user_wmc.wmc_title, mb_user_wmc.wmc_timestamp FROM mb_user_wmc WHERE wmc_serial_id IN ($wmcList);
+
+SQL;
+ $res = db_query($sql);
+ $resultObj = array(
+ "header" => array(
+ "WMC ID",
+ "Titel",
+ "Timestamp"
+ ),
+ "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 "getWmcMetadata" :
+ $wmcId = $ajaxResponse->getParameter("id");
+ getWmcs($wmcId);
+
+ $sql = <<<SQL
+
+SELECT wmc_serial_id as wmc_id, wmc_abstract, wmc_title
+individualname, positionname, providername, voice,
+wmc_timestamp, wmc_timestamp_create
+FROM mb_user_wmc WHERE wmc_serial_id = $wmcId;
+
+SQL;
+
+ $res = db_query($sql);
+ $resultObj = array();
+ $row = db_fetch_assoc($res);
+
+ $resultObj['wmc_id'] = $row['wmc_id'];
+ $resultObj['summary'] = $row['wmc_abstract'];
+ $resultObj['title'] = $row['wfs_title'];
+ $resultObj['fees'] = $row['fees'];
+ $resultObj['wmc_timestamp'] = $row['wmc_timestamp'] != "" ? date('d.m.Y', $row['wmc_timestamp']) : "";
+ $resultObj['wmc_timestamp_create'] = $row['wmc_timestamp_create'] != "" ? date('d.m.Y', $row['wmc_timestamp_create']) : "";
+
+ $keywordSql = <<<SQL
+
+SELECT DISTINCT keyword FROM keyword, wmc_keyword
+WHERE keyword_id = fkey_keyword_id AND
+fkey_wmc_id = $wmcId ORDER BY keyword
+
+SQL;
+
+ $keywordRes = db_query($keywordSql);
+ $keywords = array();
+ while ($keywordRow = db_fetch_assoc($keywordRes)) {
+ $keywords[]= $keywordRow["keyword"];
+ }
+
+ $resultObj["wmc_keywords"] = implode(", ", $keywords);
+/*
+ $termsofuseSql = <<<SQL
+SELECT fkey_termsofuse_id FROM wfs_termsofuse WHERE fkey_wfs_id = $wfsId
+SQL;
+
+ $termsofuseRes = db_query($termsofuseSql);
+ if ($termsofuseRes) {
+ $termsofuseRow = db_fetch_assoc($termsofuseRes);
+ $resultObj["wfs_termsofuse"] = $termsofuseRow["fkey_termsofuse_id"];
+ }
+ else {
+ $resultObj["wfs_termsofuse"] = null;
+ }
+
+
+ $ajaxResponse->setResult($resultObj);
+ $ajaxResponse->setSuccess(true);
+
+ break;
+
+ case "getFeaturetypeMetadata" :
+ $featuretypeId = $ajaxResponse->getParameter("id");
+ getFeaturetype($featuretypeId);
+
+ $sql = <<<SQL
+
+SELECT featuretype_id, featuretype_name, featuretype_title, featuretype_abstract, featuretype_searchable
+FROM wfs_featuretype WHERE featuretype_id = $featuretypeId;
+
+SQL;
+ $res = db_query($sql);
+
+ $resultObj = array();
+ while ($row = db_fetch_assoc($res)) {
+ foreach ($row as $key => $value) {
+ $resultObj[$key] = $value;
+ }
+ }
+*/
+ $sql = <<<SQL
+SELECT fkey_md_topic_category_id
+FROM wmc_md_topic_category
+WHERE fkey_wmc_serial_id = $wmcId
+SQL;
+ $res = db_query($sql);
+ while ($row = db_fetch_assoc($res)) {
+ $resultObj["wmc_md_topic_category_id"][]= $row["fkey_md_topic_category_id"];
+ }
+
+ $sql = <<<SQL
+SELECT fkey_inspire_category_id
+FROM wmc_inspire_category
+WHERE fkey_wmc_serial_id = $wmcId
+SQL;
+ $res = db_query($sql);
+ while ($row = db_fetch_assoc($res)) {
+ $resultObj["wmc_inspire_category_id"][]= $row["fkey_inspire_category_id"];
+ }
+
+ $sql = <<<SQL
+SELECT fkey_custom_category_id
+FROM wmc_custom_category
+WHERE fkey_wmc_serial_id = $wmcId
+SQL;
+ $res = db_query($sql);
+ while ($row = db_fetch_assoc($res)) {
+ $resultObj["wmc_custom_category_id"][]= $row["fkey_custom_category_id"];
+ }
+/*
+ $sql = <<<SQL
+SELECT keyword FROM keyword, wfs_featuretype_keyword
+WHERE keyword_id = fkey_keyword_id AND fkey_featuretype_id = $featuretypeId
+SQL;
+ $res = db_query($sql);
+
+ $resultObj["featuretype_keyword"] = array();
+ while ($row = db_fetch_assoc($res)) {
+ $resultObj["featuretype_keyword"][]= $row["keyword"];
+ }
+
+ $ajaxResponse->setResult($resultObj);
+ $ajaxResponse->setSuccess(true);
+ break;
+ case "getFeaturetypeByWfs" :
+ $wfsId = $ajaxResponse->getParameter("id");
+// getWms($wmsId);
+
+ $sql = <<<SQL
+
+SELECT featuretype_id, featuretype_name, featuretype_title, featuretype_abstract
+FROM wfs_featuretype WHERE fkey_wfs_id = $wfsId ORDER BY featuretype_id;
+
+SQL;
+ $res = db_query($sql);
+
+ $rows = array();
+ while ($row = db_fetch_assoc($res)) {
+ $rows[] = $row;
+ }
+ $left = 1;
+
+ function createNode ($left, $right, $row) {
+ return array(
+ "left" => $left,
+ "right" => $right,
+ #"parent" => $row["layer_parent"] !== "" ? intval($row["layer_parent"]) : null,
+ #"pos" => intval($row["layer_pos"]),
+ "attr" => array (
+ "featuretype_id" => intval($row["featuretype_id"]),
+ "featuretype_name" => $row["featuretype_name"],
+ "featuretype_title" => $row["featuretype_title"],
+ "featuretype_abstract" => $row["featuretype_abstract"]
+ )
+ );
+ }
+
+ function addSubTree ($rows, $i, $left) {
+ $nodeArray = array();
+ $addNewNode = true;
+ for ($j = $i; $j < count($rows); $j++) {
+ $row = $rows[$j];
+ $pos = $j;
+
+ // first node of subtree
+ if ($addNewNode) {
+ $nodeArray[]= createNode($left, null, $row);
+ $addNewNode = false;
+ }
+ else {
+ $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 {
+ $wmcId = intval($data->wmc->wmc_id);
+ }
+ catch (Exception $e) {
+ $ajaxResponse->setSuccess(false);
+ $ajaxResponse->setMessage(_mb("Invalid WMC ID."));
+ $ajaxResponse->send();
+ }
+ getWmc($wmcId);
+ //is that true for a wmc? control it
+ $wfsFactory = new UniversalWfsFactory();
+ $wfs = $wfsFactory->createFromDb($wfsId);
+ if (is_null($wfs)) {
+ $ajaxResponse->setSuccess(false);
+ $ajaxResponse->setMessage(_mb("Invalid WFS ID."));
+ $ajaxResponse->send();
+ }
+
+ $columns = array(
+ "summary",
+ "title",
+ "wmc_keyword",
+ "wmc_md_topic_category_id",
+ "wmc_inspire_category_id",
+ "wmc_custom_category_id"
+ );
+ foreach ($columns as $c) {
+ $value = $data->wmc->$c;
+ //if (!is_null($value)) {
+ // $wmc->$c = $value;
+ //}
+ if ($c === "summary") {
+ $value = $data->wmc_abstract;
+ }
+ elseif ($c === "title") {
+ $value = $data->wmc_title;
+ }
+ else {
+ $value = $data->$c;
+ }
+ if ($c === "wmc_keyword") {
+ $wmc->$c = explode(",", $value);
+ foreach ($wmc->$c as &$val) {
+ $val = trim($val);
+ }
+ }
+ elseif ($c === "wmc_md_topic_category_id"
+ || $c === "wmc_inspire_category_id"
+ || $c === "wmc_custom_category_id"
+ ) {
+ if (!is_array($value)) {
+ $wmc->$c = array($value);
+ }
+ else {
+ $wmc->$c = $value;
+ }
+ }
+ else {
+ if (!is_null($value)) {
+ $wmc->$c = $value;
+ }
+ }
+ }
+
+/* try {
+ $featuretypeId = intval($data->featuretype->featuretype_id);
+ }
+ catch (Exception $e) {
+ }*/
+
+/* if ($featuretypeId) {
+ $featuretype = $wfs->findFeatureTypeById($featuretypeId);
+ if (!is_null($featuretype)) {
+
+ $columns = array(
+ "summary",
+ "title",
+ "featuretype_keyword",
+ "featuretype_md_topic_category_id",
+ "featuretype_inspire_category_id",
+ "featuretype_custom_category_id"
+ );
+
+ foreach ($columns as $c) {
+ if ($c === "summary") {
+ $value = $data->featuretype->featuretype_abstract;
+ }
+ elseif ($c === "title") {
+ $value = $data->featuretype->featuretype_title;
+ }
+ else {
+ $value = $data->featuretype->$c;
+ }
+ if ($c === "featuretype_keyword") {
+ $featuretype->$c = explode(",", $value);
+ foreach ($featuretype->$c as &$val) {
+ $val = trim($val);
+ }
+ }
+ elseif ($c === "featuretype_md_topic_category_id"
+ || $c === "featuretype_inspire_category_id"
+ || $c === "featuretype_custom_category_id"
+ ) {
+ if (!is_array($value)) {
+ $featuretype->$c = array($value);
+ }
+ else {
+ $featuretype->$c = $value;
+ }
+ }
+ else {
+ if (!is_null($value)) {
+ $featuretype->$c = $value;
+ }
+ }
+ }
+ }
+ }*/
+
+ $wmc->update();
+
+
+ $ajaxResponse->setMessage("Updated WMC metadata for ID " . $wmcId);
+ $ajaxResponse->setSuccess(true);
+
+ break;
+ default:
+ $ajaxResponse->setSuccess(false);
+ $ajaxResponse->setMessage(_mb("An unknown error occured."));
+ break;
+}
+
+$ajaxResponse->send();
+?>
More information about the Mapbender_commits
mailing list