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.");
    }
  }
}
Exemplo n.º 2
0
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.");
  }
}
Exemplo n.º 4
0
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(" ", "&nbsp;", $meta_col_info[$key])), $lnk);
            break;

          case 'comments':
            $layer_meta_info.=getInfoEntry(($meta_col_info[$key] == "" ? $key : str_replace(" ", "&nbsp;", $meta_col_info[$key])), $value);
            break;

          case 'created_by':
            $layer_meta_info.=getInfoEntry(($meta_col_info[$key] == "" ? $key : str_replace(" ", "&nbsp;", $meta_col_info[$key])), $value);
            break;

          case 'created_date':
            $layer_meta_info.=getInfoEntry(($meta_col_info[$key] == "" ? $key : str_replace(" ", "&nbsp;", $meta_col_info[$key])), $value);
            break;

          case 'modified_by':
            $layer_meta_info.=getInfoEntry(($meta_col_info[$key] == "" ? $key : str_replace(" ", "&nbsp;", $meta_col_info[$key])), $value);
            break;

          case 'modified_date':
            $layer_meta_info.=getInfoEntry(($meta_col_info[$key] == "" ? $key : str_replace(" ", "&nbsp;", $meta_col_info[$key])), $value);
            break;

          case 'is_filterable':
            $layer_meta_info.=getInfoEntry(($meta_col_info[$key] == "" ? $key : str_replace(" ", "&nbsp;", $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(" ", "&nbsp;", $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(" ", "&nbsp;", $link_col_info[$key])), ($value == 0 ? 'No' : 'Yes'));
                break;

              default:
                $link_table_info.=getInfoEntry(($link_col_info[$key] == "" ? $key : str_replace(" ", "&nbsp;", $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;
}