function saveThemeMapping($xmlDoc, &$rootNode, $paramsNode) { $layerNode = $paramsNode->getElementsByTagName('layer')->item(0); $layer_tablename = $layerNode->getAttribute('tablename'); if($layer_tablename == null || $layer_tablename == '') { setError($xmlDoc, $rootNode, "Required parameters not set."); return; } else { if(isUserAuthorizedToEditMetadata($layer_tablename, TABLE_TYPE_LAYER)) { $theme_mappingNodes = $layerNode->childNodes; $err_flag = false; $query = 'update "Theme_Layer_Mapping" set theme_id = %d where id = %d and layer_id = (select layer_id from "Meta_Layer" where layer_tablename = \'%s\')'; foreach($theme_mappingNodes as $theme_mappingNode) { $mapping_id = $theme_mappingNode->getAttribute("id"); $theme_id = $theme_mappingNode->nodeValue; $result = db_query($query, array($theme_id, $mapping_id, $layer_tablename)); if(!$result) { $err_flag = true; } else { } } if($err_flag) { setError($xmlDoc, $rootNode, "Error saving information. It may have been partially saved."); } else { setNoError($xmlDoc, $rootNode, "Record saved."); } } else { setError($xmlDoc, $rootNode, "You are not authorized."); } } }
function saveLayerColDesc($xmlDoc, &$rootNode, $paramsNode) { $layerNode = $paramsNode->getElementsByTagName('layer')->item(0); $layer_tablename = $layerNode->getAttribute('tablename'); if($layer_tablename == null || $layer_tablename == '') { setError($xmlDoc, $rootNode, "Required parameters not set."); return; } else { if(isUserAuthorizedToEditMetadata($layer_tablename, TABLE_TYPE_LAYER)) { $colNodes = $layerNode->childNodes; $err_flag = false; $err_cols = array(); $qry = 'COMMENT ON COLUMN "'.$layer_tablename.'"."%s" IS '; foreach($colNodes as $colNode) { $col = $colNode->nodeName; $col_val = $colNode->nodeValue; if($col_val == null) { $tmpqry = $qry . "null;"; } else { $col_val = str_replace("'", "''", $col_val); $tmpqry = $qry . "'$col_val';"; } $res = db_query($tmpqry, $col); if(!$res) { $err_flag = true; $err_cols[] = $col; } } if($err_flag) { setError($xmlDoc, $rootNode, "Error saving description for following columns: \r\n" . implode(",", $err_cols)); } else { setNoError($xmlDoc, $rootNode, "Record saved."); } } else { setError($xmlDoc, $rootNode, "You are not authorized."); } } }
function deleteGlobalResourceMapping($xmlDoc, &$rootNode, $paramsNode) { $tableNode = $paramsNode->getElementsByTagName('table')->item(0); $tablename = $tableNode->getAttribute('tablename'); $table_type = $tableNode->getAttribute('type'); if(isUserAuthorizedToEditMetadata($tablename, $table_type)) { $mappingNode = $tableNode->getElementsByTagName('mapping')->item(0); $id = $mappingNode->getAttribute('id'); $table_column = str_replace("'", "''", $mappingNode->getAttribute('table_column')); $resource_tablename = $mappingNode->getAttribute('resource_tablename'); $resource_column = str_replace("'", "''", $mappingNode->getAttribute('resource_column')); if($id == null || $id == '0') { // new entry setError($xmlDoc, $rootNode, "Incorrect information."); return; } else { // update $query = "delete from \"Global_Resource_Mapping\" where resource_tablename = '%s' and resource_column = '{$resource_column}' and table_column = '{$table_column}' and id = %d and tablename = '%s' and table_type = '%s'"; $query_args = array($resource_tablename, $id, $tablename, $table_type); } $result = db_query($query, $query_args); if (!$result) { setError($xmlDoc, $rootNode, "Error deleting information."); } else { if(db_affected_rows($result) > 0) { setNoError($xmlDoc, $rootNode, "Record deleted."); } else { setError($xmlDoc, $rootNode, "Record not found."); } } } else { setError($xmlDoc, $rootNode, "You are not authorized."); } }
function get_layer_metadata($layer_tablename, $hasmenu) { /* ----- action retireves layer data to show on popup when info icon is clicked ------ */ $resourcetables_referrenced=array(); $html=""; $html.="<html><head>"; $html.=<<<EOF <script type="javascript"> jQuery(document).ready(function(){ jQuery(".descriptionControl").click(function(){ jQuery(".descriptionShowHide").toggle(); jQuery("#layerDescription").toggle(); return false; }); jQuery(".linkedDataControl").click(function(){ jQuery(".linkedDataShowHide").toggle(); jQuery("#linkedData").toggle(); return false; }); jQuery(".resourceTablesControl").click(function(){ jQuery(".resourceTablesShowHide").toggle(); jQuery("#resourceTables").toggle(); return false; }); }); </script> EOF; $html.="</head><body>"; $cols="layer_name,attribution,license,nid,p_nid,layer_description,layer_type,status,pdf_link,url,comments,participation_type,created_by,created_date,modified_by,modified_date"; $query="select %s from \"Meta_Layer\" where layer_tablename='%s'"; $query_args=array($cols, $layer_tablename); $result_metadata=db_query($query, $query_args); if(!$result_metadata) { //Error occured die(return_error('Error fetching layer data')); } else { $meta_col_info=getDBColDesc('Meta_Layer'); $layer_nid=0; $participation_nid=0; $layer_meta_info=""; if($metadata_obj=db_fetch_object($result_metadata)) { foreach($metadata_obj as $key=>$value) { switch($key) { case 'layer_name': $layer_name=$value; break; case 'attribution': $fullattribution=$value; $attribution=$fullattribution; break; case 'license': $layer_license=$value; $license=getCCLicenseHTML($layer_license, 'large'); break; case 'nid': $layer_nid=$value; break; case 'p_nid': $participation_nid=$value; break; case 'layer_description': $layer_meta_info.=getInfoEntry('Description', $value); break; case 'status': $query="select description from layer_status where id = %d"; $result=db_query($query, $value); if(!$result) { } else { if($obj=db_fetch_object($result)) { $layer_meta_info.=getInfoEntry('Status', $obj->description); } } break; case 'participation_type': $query="select name from mlocate_participation_type where id = %d"; $result=db_query($query, $value); if(!$result) { } else { if($obj=db_fetch_object($result)) { $layer_meta_info.=getInfoEntry('Participation Type', $obj->name); } } break; case 'pdf_link': case 'url': $lnk=""; if($value != "") { $lnk="<a href='{$value}' target='_blank'>{$value}</a>"; } $layer_meta_info.=getInfoEntry(($meta_col_info[$key] == "" ? $key : str_replace(" ", " ", $meta_col_info[$key])), $lnk); break; case 'comments': $layer_meta_info.=getInfoEntry(($meta_col_info[$key] == "" ? $key : str_replace(" ", " ", $meta_col_info[$key])), $value); break; case 'created_by': $layer_meta_info.=getInfoEntry(($meta_col_info[$key] == "" ? $key : str_replace(" ", " ", $meta_col_info[$key])), $value); break; case 'created_date': $layer_meta_info.=getInfoEntry(($meta_col_info[$key] == "" ? $key : str_replace(" ", " ", $meta_col_info[$key])), $value); break; case 'modified_by': $layer_meta_info.=getInfoEntry(($meta_col_info[$key] == "" ? $key : str_replace(" ", " ", $meta_col_info[$key])), $value); break; case 'modified_date': $layer_meta_info.=getInfoEntry(($meta_col_info[$key] == "" ? $key : str_replace(" ", " ", $meta_col_info[$key])), $value); break; case 'is_filterable': $layer_meta_info.=getInfoEntry(($meta_col_info[$key] == "" ? $key : str_replace(" ", " ", $meta_col_info[$key])), ($value == 0 ? 'No' : 'Yes')); break; case 'layer_id': break; case 'layer_tablename': break; default: $layer_meta_info.=getInfoEntry(($meta_col_info[$key] == "" ? $key : str_replace(" ", " ", $meta_col_info[$key])), $value); break; } } } } $global_resources=getResourceTableNamesForTables(array($layer_tablename)); if(sizeof($global_resources) > 0) { $layer_meta_info.=getInfoEntry('Resource Tables', implode(", ", $global_resources)); $resourcetables_referrenced=array_merge($resourcetables_referrenced, $global_resources); } $skip_cols=array(); $layer_attr=getTableAttribForLayerInfo($layer_tablename, $skip_cols); $theme_name=""; $geo_name=""; $query='select theme_name, theme_type from "Theme" where theme_id in (select theme_id from "Theme_Layer_Mapping" where layer_id = (SELECT layer_id FROM "Meta_Layer" where layer_tablename = \'%s\'))'; $result=db_query($query, $layer_tablename); if(!$result) { //Error occured die(return_error('Error fetching theme info for layer.')); } else { while($obj=db_fetch_array($result)) { if($obj['theme_type'] == 1) { $theme_name=$obj['theme_name']; } elseif($obj['theme_type'] == 2) { $geo_name=$obj['theme_name']; } } } $table_info_html=<<<EOF <li>{%table_name}</li> <div class="{%table_type}_table_info"> <table cellspacing="0"> <tbody> {%table_info} </tbody> </table> </div> <b style="margin:20px;"><u>Attributes:</u></b> <ul class="nested"> {%table_attr} </ul> <hr> EOF; $haslinktables="none"; $link_tables_info=""; $links=getLinkTableNames($layer_tablename); if(sizeof($links) > 0) { $haslinktables="block"; foreach($links as $link) { $link_name=$link['name']; $link_tablename=$link['tablename']; if($link_name == "") { $link_name=$link_tablename; } $link_table_info=""; $cols="created_by, created_date, modified_by, modified_date"; $query="select %s from \"Meta_LinkTable\" where link_tablename = '%s'"; $query_args=array($cols, $link_tablename); $result=db_query($query, $query_args); if(!$result) { //Error occured die(return_error('Error fetching linked info for layer.')); } else { if($obj=db_fetch_array($result)) { $link_col_info=getDBColDesc('Meta_LinkTable'); foreach($obj as $key=>$value) { switch($key) { case 'id': case 'layer_id': case 'link_tablename': case 'link_name': break; case 'status': $query="select description from layer_status where id = %d"; $result=db_query($query, $value); if(!$result) { } else { if($obj=db_fetch_object($result)) { $link_table_info.=getInfoEntry('Status', $obj->description); } } break; case 'is_filterable': $link_table_info.=getInfoEntry(($link_col_info[$key] == "" ? $key : str_replace(" ", " ", $link_col_info[$key])), ($value == 0 ? 'No' : 'Yes')); break; default: $link_table_info.=getInfoEntry(($link_col_info[$key] == "" ? $key : str_replace(" ", " ", $link_col_info[$key])), $value); break; } } } } $skip_cols=array(); $link_table_attr=getTableAttribForLayerInfo($link_tablename, $skip_cols); $global_resources=getResourceTableNamesForTables(array($link_tablename)); if(sizeof($global_resources) > 0) { $resourceTables=implode(", ", $global_resources); $link_table_info.=getInfoEntry('Resource Tables', $resourceTables); $resourcetables_referrenced=array_merge($resourcetables_referrenced, $global_resources); } $link_info=$table_info_html; $link_info=str_replace("{%table_name}", $link_name, $link_info); $link_info=str_replace("{%table_type}", 'link', $link_info); $link_info=str_replace("{%table_attr}", $link_table_attr, $link_info); $link_info=str_replace("{%table_info}", $link_table_info, $link_info); $link_tables_info.=$link_info; } } $hasresourcetables='none'; $resource_tables_info=''; if(sizeof($resourcetables_referrenced) > 0) { $hasresourcetables='block'; $resourcetables_referrenced=array_unique($resourcetables_referrenced); foreach($resourcetables_referrenced as $resourcetable) { $resource_table_info=""; $resource_table_attr=getTableAttribForLayerInfo($resourcetable, $skip_cols); $resource_info=$table_info_html; $resource_info=str_replace("{%table_name}", $resourcetable, $resource_info); $resource_info=str_replace("{%table_type}", 'resource', $resource_info); $resource_info=str_replace("{%table_attr}", $resource_table_attr, $resource_info); $resource_info=str_replace("{%table_info}", $resource_table_info, $resource_info); $resource_tables_info.=$resource_info; } } $editMetadataUI=''; if(isUserAuthorizedToEditMetadata($layer_tablename, TABLE_TYPE_LAYER)) { $editMetadataUI="<div id=\"editMetadata\"><a href=\"#\" onclick=\"showModalPopup('<iframe width=100% height=100% src={$base_path}ml_metadata/ml_metadata.html?layer_tablename={$layer_tablename}></iframe>', 'Edit metadata {$layer_name}', reloadParentTab, new Array('ulLayerPopupUIMenu'));\">Edit Metadata</a></div>"; } if(!$hasmenu) { $user_role=getUserRoleForLayer($layer_tablename); $lnk=$_SERVER['REQUEST_URI'] . "&hasmenu=1"; $id="layerInfoSummary"; $menu='<li id="' . $id . '" class="first active"><a href="javascript:popupTabClicked(\'layerinfo\',\'ulLayerPopupUIMenu\',\'' . $id . '\',\'' . $lnk . '\')">Summary</a></li>'; if($layer_nid) { $lnk="{$base_path}node/{$layer_nid}/popup"; $id="DrupalNode"; $menu.='<li id="' . $id . '"><a href="javascript:popupTabClicked(\'layerinfo\', \'ulLayerPopupUIMenu\', \'' . $id . '\',\'' . $lnk . '\')">Details</a></li>'; if(node_access('update', node_load($layer_nid))) { $lnk="{$base_path}node/{$layer_nid}/edit/popup"; $id="drupalEditDetails"; $menu.='<li id="' . $id . '"><a href="javascript:popupTabClicked(\'layerinfo\', \'ulLayerPopupUIMenu\', \'' . $id . '\',\'' . $lnk . '\')">Edit Details</a></li>'; } } else { switch($user_role) { case 'admin': case 'member': case 'validator': $lnk="{$base_path}node/add/node-mlocate-layerinfo/popup?layer_tablename={$layer_tablename}"; $id="drupalAddMoreDetails"; $menu.='<li id="' . $id . '"><a href="javascript:popupTabClicked(\'layerinfo\', \'ulLayerPopupUIMenu\', \'' . $id . '\',\'' . $lnk . '\')">Add More Details</a></li>'; break; } } if($participation_nid) { $lnk="{$base_path}node/{$participation_nid}/popup"; $id="DrupalNodeParticipation"; $menu.='<li id="' . $id . '"><a href="javascript:popupTabClicked(\'layerinfo\', \'ulLayerPopupUIMenu\', \'' . $id . '\',\'' . $lnk . '\')">Participation</a></li>'; switch($user_role) { case 'admin': $lnk="{$base_path}node/{$participation_nid}/edit/popup"; $id="drupalEditParticipationInfo"; $menu.='<li id="' . $id . '"><a href="javascript:popupTabClicked(\'layerinfo\', \'ulLayerPopupUIMenu\', \'' . $id . '\',\'' . $lnk . '\')">Edit Participation</a></li>'; break; } } else { switch($user_role) { case 'admin': $lnk="{$base_path}node/add/node-mlocate-participation/popup?layer_tablename={$layer_tablename}"; $id="drupalAddParticipationInfo"; $menu.='<li id="' . $id . '"><a href="javascript:popupTabClicked(\'layerinfo\', \'ulLayerPopupUIMenu\', \'' . $id . '\',\'' . $lnk . '\')">Add Participation</a></li>'; break; } } if($user->uid) { $user_roles=$user->roles; // site admin and layer admin have permissions to edit layer permissions if(in_array(SITE_ADMIN_ROLE, $user_roles) || in_array($layer_tablename . ' admin', $user_roles)) { $divID='layerinfo'; $ulID='ulLayerPopupUIMenu'; $liID="editPermissions"; $lnk="{$base_path}ml_orchestrator.php?action=editLayerPermissions&layer_tablename={$layer_tablename}"; $title="Edit Permissions"; $menu.=getMenuLI($liID, $divID, $ulID, $lnk, $title); } } include("popupui.inc"); $html.=$layerInfoHTML; } else { include("popupui.inc"); $html.=$layerInfoinnerHTML; } $html.="</body></html>"; echo $html; }