getParameter("hierarchyLevel");
//$e = new mb_exception("plugins/metadata_manager_server.php: ".$hierarchyLevel);
if ($hierarchyLevel != 'application') {
$hierarchyLevel = 'metadata';
}
function abort ($message) {
global $ajaxResponse;
$ajaxResponse->setSuccess(false);
$ajaxResponse->setMessage($message);
$ajaxResponse->send();
die();
};
function validateType($variable, $value) {
$startString = substr($variable, 0, 1);
switch ($startString) {
case "s":
if (is_string($value)) {
return true;
} else {
return false;
}
break;
case "i":
if (is_int($value)) {
return true;
} else {
return false;
}
break;
case "b":
if ($value == true || $value == false) {
return true;
} else {
return false;
}
break;
default:
return false;
break;
}
};
//parse row (array) from database to new array - change some of the values and add some further
function parseMetadataRow($row, $withOutFirstColumn = false) {
global $hierarchyLevel;
//convert NULL to '', NULL values cause datatables to crash
$walk = array_walk($row, create_function('&$s', '$s=strval($s);'));
//preview with uuid
$row[0] = $row[0];
$row[1] = $row[1];
//$row[2] = "".$row[2]."";
$row[2] = "".$row[2]."";
$row[3] = $row[3];
$row[4] = $row[4];
$coupledResourceRow = 5;
$coupledResources = json_decode($row[$coupledResourceRow]);
$row[$coupledResourceRow] = "";
//get layer list
$numberLayers = 0;
foreach ($coupledResources->coupledResources->layerIds as $layerId) {
//$row[$coupledResourceRow] .= "".$layerId."".", ";
$row[$coupledResourceRow] .= "".$layerId."".", ";
$numberLayers++;
}
$row[$coupledResourceRow] = rtrim($row[$coupledResourceRow], ', ');
//generate column for featuretypes - problem: row has to be inserted after !!!!
//#6
array_splice($row, $coupledResourceRow+1, 0, "");
$row[$coupledResourceRow+1] = "";
//get featuretype list
$numberFeaturetypes = 0;
foreach ($coupledResources->coupledResources->featuretypeIds as $featuretypeId) {
//$row[$coupledResourceRow+1] .= "".$featuretypeId."".", ";
$row[$coupledResourceRow+1] .= "".$featuretypeId."".", ";
$numberFeaturetypes++;
}
$row[$coupledResourceRow+1] = rtrim($row[$coupledResourceRow+1], ', ');
//origin
//add column for defining searchability
if ($row[8] == "t") {
$row[8] = "";
} else {
$row[8] = "";
}
if ($row[9] == "t") {
$row[9] = "";
} else {
$row[9] = "";
}
//add column for deleting metadata
$row[] = "";
if ($row[7] == 'metador' || $row[7] == 'upload' || $row[7] == 'external') {
if ($hierarchyLevel == 'application') {
$row[] = "";
} else {
$row[] = "";
}
} else {
$row[] = "";
}
if ($withOutFirstColumn == true) {
$newRow = array($row[1],$row[2],$row[3],$row[4],$row[5],$row[6],$row[7],$row[8],$row[9],$row[10],$row[11]);
$row = $newRow;
}
/*if ($hierachyLevel == 'application') {
$newRow = array($row[0],$row[1],$row[2],$row[5],$row[6],$row[7],$row[8],$row[9],$row[10]);
$row = $newRow;
}*/
return $row;
}
function getMetadata ($metadataId = null) {
global $hierarchyLevel;
$user = new User(Mapbender::session()->get("mb_user_id"));
if ($hierarchyLevel == 'application') {
$metadataIdArray = $user->getOwnedMetadata($hierarchyLevel);
} else {
$metadataIdArray = $user->getOwnedMetadata();
}
if (!is_null($metadataId) && !in_array($metadataId, $metadataIdArray)) {
abort(_mb("You are not allowed to access this metadata."));
}
return $metadataIdArray;
}
//validate user which sends ajax
$user = new User(Mapbender::session()->get("mb_user_id"));
//$e = new mb_exception("method param: ".$ajaxResponse->getMethod());
switch ($ajaxResponse->getMethod()) {
case "toggleSearchability" :
$id = $ajaxResponse->getParameter("id");
//first select metadata to see, if person who wants to delete it is really the owner!
$sql = <<setSuccess(false);
$ajaxResponse->setMessage(_mb("Could not read metadata from database!"));
$ajaxResponse->send();
die;
}
$row = db_fetch_assoc($res);
if ((integer)$row['fkey_mb_user_id'] !== $user->id) {
$ajaxResponse->setSuccess(false);
$ajaxResponse->setMessage(_mb("User not allowed to toogle searchability of metadata, because he is not the owner!"));
$ajaxResponse->send();
die();
}
//do the toggling
if ($row['searchable'] == 't') {
$export2csw = 'f';
$message = _mb('Searchability of metadata was deactivated!');
} else {
$export2csw = 't';
$message = _mb('Searchability of metadata was activated!');
}
$sql = <<setSuccess(false);
$ajaxResponse->setMessage(_mb("Could not toogle export for selected metadata!"));
$ajaxResponse->send();
die;
}
$ajaxResponse->setMessage($message);
$ajaxResponse->setSuccess(true);
break;
case "toggleExport" :
$id = $ajaxResponse->getParameter("id");
//first select metadata to see, if person who wants to delete it is really the owner!
$sql = <<setSuccess(false);
$ajaxResponse->setMessage(_mb("Could not read metadata from database!"));
$ajaxResponse->send();
die;
}
$row = db_fetch_assoc($res);
if ((integer)$row['fkey_mb_user_id'] !== $user->id) {
$ajaxResponse->setSuccess(false);
$ajaxResponse->setMessage(_mb("User not allowed to toogle export for metadata, because he is not the owner!"));
$ajaxResponse->send();
die();
}
//do the toggling
if ($row['export2csw'] == 't') {
$export2csw = 'f';
$message = _mb('Export of metadata to external catalogues was deactivated!');
} else {
$export2csw = 't';
$message = _mb('Export of metadata to external catalogues was activated!');
}
$sql = <<setSuccess(false);
$ajaxResponse->setMessage(_mb("Could not toogle export for selected metadata!"));
$ajaxResponse->send();
die;
}
$ajaxResponse->setMessage($message);
$ajaxResponse->setSuccess(true);
break;
case "deleteMetadata" :
$id = $ajaxResponse->getParameter("id");
//first select metadata to see, if person who wants to delete it is really the owner!
$sql = <<setSuccess(false);
$ajaxResponse->setMessage(_mb("Could not read metadata from database!"));
$ajaxResponse->send();
die;
}
$row = db_fetch_assoc($res);
if ((integer)$row['fkey_mb_user_id'] !== $user->id) {
$ajaxResponse->setSuccess(false);
$ajaxResponse->setMessage(_mb("User not allowed to delete requested metadata from database, because he is not the owner!"));
$ajaxResponse->send();
die();
}
//delete the metadata
$sql = <<setSuccess(false);
$ajaxResponse->setMessage(_mb("Could not delete metadata in database!"));
$ajaxResponse->send();
die;
}
$ajaxResponse->setMessage(_mb("Metadata deleted!"));
$ajaxResponse->setSuccess(true);
break;
case "getHeader" :
//$hierarchyLevel = $ajaxResponse->getParameter("hierarchyLevel");
switch ($hierarchyLevel) {
case "application_test":
$header = array(
_mb("ID"),
_mb("UUID"),
_mb("Title"),
_mb("Last changed"),
_mb("Origin"),
_mb("Searchability"),
_mb("Catalogue export"),
_mb("Delete"),
_mb("Edit")
);
break;
default:
$header = array(
_mb("ID"),
_mb("UUID"),
_mb("Title"),
_mb("Last changed"),
_mb("Layers"),
_mb("Featuretypes"),
_mb("Origin"),
_mb("Searchability"),
_mb("Catalogue export"),
_mb("Delete"),
_mb("Edit")
);
break;
}
$translation = array(
"confirmSearchabilityMessage" => _mb('Do you really want to change the searchability?'),
"confirmExportMessage" => _mb('Do you really want to change the export handling for this metadata?'),
"confirmDeleteMessage" => _mb('Do you really want to delete this entry?')
);
$resultObj['header'] = $header;
$resultObj['translation'] = $translation;
$ajaxResponse->setResult($resultObj);
$ajaxResponse->setSuccess(true);
break;
case "loadTableIncremental":
//defaults to server side handling
//use datatables serverside api: http://legacy.datatables.net/usage/server-side (version <= 1.9!!!)
//parse relevant ajax variables (they also available in params var - cause mapbenders ajax class demand this):
$ajaxVariables = array("sEcho","iDisplayLength","iDisplayStart","iColumns","sSearch","sSearch_1","bSortable_1","iSortingCols","iSortCol_1","sSortDir_1","sEcho","hierarchyLevel");
foreach($ajaxVariables as $variable) {
//validate type
//$e = new mb_exception("var:".$variable." - value: ".$ajaxResponse->getParameter($variable));
if (validateType($variable, $ajaxResponse->getParameter($variable)) == true) {
${$variable} = $ajaxResponse->getParameter($variable);
}
}
//first count all records for this user
$metadataIdArray = getMetadata();
$highLevelObj["iTotalRecords"] = count($metadataIdArray);
$highLevelObj["iTotalDisplayRecords"] = count($metadataIdArray);
$highLevelObj["sEcho"] = $sEcho;
//do the sql with limit and offset
$metadataList = implode(",", $metadataIdArray);
//initialize parameter arrays
$v = array();
$t = array();
$vCount = array();
$tCount = array();
$numberOfVariables = 0;
//$e = new mb_exception("loadTableIncremental: " . $hierarchyLevel);
if ($hierarchyLevel == 'application') {
$sqlCount = <<setResult($resultObj);
$ajaxResponse->setHighLevelAttributes($highLevelObj);
$ajaxResponse->setSuccess(true);
break;
default:
$ajaxResponse->setSuccess(false);
$ajaxResponse->setMessage(_mb("An unknown error occured."));
break;
}
$ajaxResponse->send();
?>