get("mb_user_id");
$currentUser = new User($userId);
$wmc = new wmc();
$resultObj = array();
switch ($ajaxResponse->getMethod()) {
// gets available WMCs
case "getWmc":
$showPublic = $ajaxResponse->getParameter("showPublic");
//$e = new mb_notice("mod_loadwmc_server.php: showPublic: ".$showPublic);
$resultObj["wmc"] = $wmc->selectByUser($currentUser,$showPublic);
$ajaxResponse->setResult($resultObj);
$ajaxResponse->setSuccess(true);
break;
// gets QR code for url
case "getQrCode":
$wmcid = $ajaxResponse->getParameter("wmcid");
$newWindow = $ajaxResponse->getParameter("newWindow");
if ($newWindow == "1") {
$newWindow = true;
} else {
$newWindow = false;
}
//$e = new mb_notice("mod_loadwmc_server.php: showPublic: ".$showPublic);
//$resultObj["wmc"] = $wmc->selectByUser($currentUser,$showPublic);
//show qr for link
//create uuid for qr graphic
$uuid = new Uuid;
$filename = "qr_wmc_".$uuid.".png";
//generate qr on the fly in tmp folder
//link to invoke wmc per get api if wrapper path isset
if (defined("MAPBENDER_PATH") && MAPBENDER_PATH != "") {
$invokeLink = MAPBENDER_PATH."/extensions/mobilemap/map.php?wmcid=".$wmcid;
//$invokeLink = "http://www.geoportal.rlp.de/mapbender/extensions/mobilemap/map.php";
QRcode::png($invokeLink,TMPDIR."/".$filename);
if ($newWindow) {
$html = "";
} else {
$html = "";
}
}
$resultObj["qrCode"] = $html;
$ajaxResponse->setResult($resultObj);
$ajaxResponse->setSuccess(true);
break;
// gets XML document of a WMC
case "getWmcDocument":
$wmcId = $ajaxResponse->getParameter("id");
$doc = $wmc->getDocument($wmcId);
if (!$doc) {
$ajaxResponse->setMessage(_mb("The WMC document could not be found."));
$ajaxResponse->setSuccess(false);
}
else {
$resultObj["wmc"] = array("document" => $doc);
$ajaxResponse->setResult($resultObj);
$ajaxResponse->setSuccess(true);
}
break;
// deletes a WMC
case "deleteWmc":
$wmcId = $ajaxResponse->getParameter("id");
if ($wmc->delete($wmcId, $userId)) {
$ajaxResponse->setMessage(_mb("WMC has been deleted from the database."));
$ajaxResponse->setSuccess(true);
}
else {
$ajaxResponse->setMessage(_mb("WMC could not be deleted."));
$ajaxResponse->setSuccess(false);
}
break;
//loads a WMC (returns array of JS code)
case 'loadWmc':
$wmcId = $ajaxResponse->getParameter("id");
$removeUnaccessableLayers = $ajaxResponse->getParameter("removeUnaccessableLayers");
if ($wmc->createFromDb($wmcId)) {
$updatedWMC = $wmc->updateUrlsFromDb();
if ($removeUnaccessableLayers == 1) {
//new 2018-09-27 - delete unaccessable layers if wished!
$accessableWmcXml = $wmc->removeUnaccessableLayers($updatedWMC);
$wmc->createFromXml($accessableWmcXml);
} else {
$wmc->createFromXml($updatedWMC);
}
$skipWms = $ajaxResponse->getParameter("skipWms");
if (is_array($skipWms)) {
$jsArray = $wmc->toJavaScript($skipWms);
}
else {
$jsArray = $wmc->toJavaScript();
}
if ($jsArray) {
$resultObj["javascript"] = $jsArray;
//increment load_count
$wmc->incrementWmcLoadCount();
$ajaxResponse->setResult($resultObj);
$ajaxResponse->setSuccess(true);
break;
}
}
$ajaxResponse->setMessage(_mb("WMC could not be loaded."));
$ajaxResponse->setSuccess(false);
break;
case 'loadWmcFromFile':
$serverFilename = $ajaxResponse->getParameter("filename");
$wmc = new wmc();
$wmcDoc = file_get_contents($serverFilename->filename);
if (!$wmcDoc) {
$ajaxResponse->setMessage(_mb("WMC could not be loaded."));
$ajaxResponse->setSuccess(false);
}
$wmc->createFromXml($wmcDoc);
/*$e = new mb_exception("value from checkbox: ".json_encode($ajaxResponse->getParameter("checkboxvalue")));
$e = new mb_exception("value from checkbox: ".gettype($ajaxResponse->getParameter("checkboxvalue")));*/
//only update urls and layer names if this is explicitly wished! If the wmc is from another mapbender installation, the resource ids are others - they are not bind to the installation til now!
$e = new mb_notice("php/loadwmc_server.php: Try to update URLs and layer/names: ".json_encode($ajaxResponse->getParameter("checkboxvalue")));
if ($ajaxResponse->getParameter("checkboxvalue")) {
$updatedWMC = $wmc->updateUrlsFromDb();
$wmc->createFromXml($updatedWMC);
}
$jsArray = $wmc->toJavaScript();
if ($jsArray) {
$resultObj["javascript"] = $jsArray;
$ajaxResponse->setResult($resultObj);
$ajaxResponse->setSuccess(true);
}
else {
$ajaxResponse->setMessage(_mb("WMC could not be loaded."));
$ajaxResponse->setSuccess(false);
}
break;
// merges data with WMC and loads it (returns array of JS code)
case "mergeWmc":
// generate a WMC for the current client state
$currentWmc = new wmc();
$currentWmc->createFromJs(
$json->decode($ajaxResponse->getParameter("mapObject")),
$ajaxResponse->getParameter("generalTitle"),
$ajaxResponse->getParameter("extensionData")
);
// get the desired WMC from the database
$wmcId = $ajaxResponse->getParameter("id");
$wmcXml = wmc::getDocument($wmcId);
// merge the two WMCs
$currentWmc->merge($wmcXml);
// load the merged WMC
$jsArray = $currentWmc->toJavaScript();
if (is_array($jsArray) && count($jsArray) > 0) {
$resultObj["javascript"] = $jsArray;
$ajaxResponse->setResult($resultObj);
$ajaxResponse->setSuccess(true);
}
else {
$ajaxResponse->setMessage(_mb("WMC could not be merged."));
$ajaxResponse->setSuccess(false);
}
break;
// appends a WMC (returns JS code)
case 'appendWmc':
// generate a WMC for the current client state
$currentWmc = new wmc();
$currentWmc->createFromJs(
$json->decode($ajaxResponse->getParameter("mapObject")),
$ajaxResponse->getParameter("generalTitle"),
$ajaxResponse->getParameter("extensionData")
);
// get the desired WMC from the database
$wmcId = $ajaxResponse->getParameter("id");
$wmcXml = wmc::getDocument($wmcId);
// merge the two WMCs
$currentWmc->append($wmcXml);
// load the merged WMC
$jsArray = $currentWmc->toJavaScript();
if (is_array($jsArray) && count($jsArray) > 0) {
$resultObj["javascript"] = $jsArray;
$ajaxResponse->setResult($resultObj);
$ajaxResponse->setSuccess(true);
}
else {
$ajaxResponse->setMessage(_mb("WMC could not be appended."));
$ajaxResponse->setSuccess(false);
}
break;
case 'setWMCPublic':
$wmcId = $ajaxResponse->getParameter("id");
$public = $ajaxResponse->getParameter("isPublic") == 1 ? true : false;
$wmc = new wmc();
$wmc->createFromDb($wmcId);
if($wmc->setPublic($public)){
$ajaxResponse->setMessage(_mb("Updated public flag"));
$ajaxResponse->setSuccess(true);
}else {
$ajaxResponse->setMessage(_mb("could not update public flag"));
$ajaxResponse->setSuccess(false);
}
break;
case 'checkConstraints':
$checkLayerIdExists = $ajaxResponse->getParameter("checkLayerIdExists");
$checkLayerIdValid = $ajaxResponse->getParameter("checkLayerIdValid");
$checkLayerPermission = $ajaxResponse->getParameter("checkLayerPermission");
$checkLayerAvailability = $ajaxResponse->getParameter("checkLayerAvailability");
$wmcId = $ajaxResponse->getParameter("id");
$wmc->createFromDb($wmcId);
$wmsArray = $wmc->mainMap->getWmsArray();
if ($checkLayerIdExists) {
$withoutIdsArray = $wmc->getWmsWithoutId();
$withoutIdsTitles = array();
foreach ($withoutIdsArray as $i) {
$withoutIdsTitles[]= array(
"id" => $i["id"],
"index" => $i["index"],
"title" => $i["title"]
);
}
$resultObj["withoutId"] = array(
"message" => "Folgende Layer stammen aus einer dem " .
"Geoportal.rlp unbekannten Quelle. Es kann daher nicht " .
"überprüft werden, ob die Links verwaist sind oder ob " .
"die Dienste überhaupt Daten liefern.",
"wms" => $withoutIdsTitles
);
}
if ($checkLayerIdValid) {
$invalidIdsArray = $wmc->getInvalidWms();
$invalidIdsTitles = array();
foreach ($invalidIdsArray as $i) {
$invalidIdsTitles[]= array(
"id" => $i["id"],
"index" => $i["index"],
"title" => $i["title"]
);
}
$resultObj["invalidId"] = array(
"message" => "Folgende Dienste/Layer sind aus der " .
"Registrierungsstelle gelöscht worden. Es kann daher nicht " .
"überprüft werden, ob die Links verwaist sind oder ob " .
"die Dienste überhaupt Daten liefern.",
"wms" => $invalidIdsTitles
);
}
if ($checkLayerPermission) {
$deniedIdsArray = $wmc->getWmsWithoutPermission($currentUser);
$deniedIdsTitles = array();
foreach ($deniedIdsArray as $i) {
$deniedIdsTitles[]= array(
"id" => $i["id"],
"index" => $i["index"],
"title" => $i["title"]
);
}
$resultObj["noPermission"] = array(
"message" => "Sie als Nutzer '" .
Mapbender::session()->get("mb_user_name") . "' " .
"haben keine Berechtigung auf folgende Layer zuzugreifen.",
"wms" => $deniedIdsTitles
);
}
if ($checkLayerAvailability) {
$unavailableIdsArray = $wmc->getUnavailableWms($currentUser);
$unavailableIdsTitles = array();
foreach ($unavailableIdsArray as $i) {
$unavailableIdsTitles[]= array(
"id" => $i["id"],
"index" => $i["index"],
"title" => $i["title"]
);
}
$resultObj["unavailable"] = array(
"message" => "Bei folgenden Diensten kam es während " .
"des letzten Monitorings zu Problemen. Es ist möglich, dass " .
"diese Dienste derzeit keine Informationen zur Verfügung stellen " .
"können.",
"wms" => $unavailableIdsTitles
);
}
$ajaxResponse->setResult($resultObj);
$ajaxResponse->setSuccess(true);
break;
// Invalid command
default:
$ajaxResponse->setMessage(_mb("No method specified."));
$ajaxResponse->setSuccess(false);
}
$ajaxResponse->send();
?>