示例#1
0
function getLayersOfType($xmlDoc, &$rootNode, $group_type) {
  if($group_type == 3) {
    $query = 'select layer_tablename, layer_name, access, p_nid, participation_type  from "Meta_Layer" where participation_type in (1,2, 3) and status = 1 order by layer_name;';
  } else {
    $query = 'select layer_tablename, layer_name, access, p_nid, participation_type  from "Meta_Layer" where status = 0';
  }
  $result = db_query($query);
  if(!$result) {
    setError($xmlDoc, $rootNode, "Error fetching data.");
  } else {
    setNoError($xmlDoc, $rootNode);
    $grpNode = addXMLChildNode($xmlDoc, $rootNode, "group_type", $group_type);
    $lyrsNode = addXMLChildNode($xmlDoc, $rootNode, "layers");
    getLayersList($xmlDoc, $lyrsNode, $result);

    $user = $GLOBALS['user'];
    if($user->uid) {
      $query = "";
      $user_roles = $user->roles;
      // Needs to be thought of.
      //if (in_array(SITE_ADMIN_ROLE, $user_roles)) {
      //  $query = 'select layer_tablename, layer_name, access, p_nid, participation_type  from "Meta_Layer" where status = 1 order by layer_name;';
      //} else {
        $lyrs = array();
        foreach($user_roles as $role) {
          if(substr($role, -6) == ' admin') {
            $lyrs[] = substr($role, 0, -6);
          } else if(substr($role, -10) == ' validator') {
            $lyrs[] = substr($role, 0, -10);
          } else if(substr($role, -7) == ' member') {
            $lyrs[] = substr($role, 0, -7);
          }
        }

        if (sizeof($lyrs) > 0) {
          array_walk($lyrs, "singleQuoteString");

          $str_lyrs = implode(",", $lyrs);

          $query = 'select layer_tablename, layer_name, access, p_nid, participation_type  from "Meta_Layer" where layer_tablename in ('.$str_lyrs.') and status = 1 order by layer_name;';
        }
      //}
      if ($query != '') {
        $result = db_query($query);
        if(!$result) {
          setError($xmlDoc, $rootNode, "Error fetching data.");
        } else {
          getLayersList($xmlDoc, $lyrsNode, $result);
        }
      }
    }
  }
}
function getLayersForTheme($xmlDoc, &$rootNode, $paramsNode) {
  $group_type = $paramsNode->getElementsByTagName('group_type')->item(0)->nodeValue;
  $theme_id = $paramsNode->getElementsByTagName('theme_id')->item(0)->nodeValue;
  if($theme_id == null || $theme_id == '') {
    setError($xmlDoc, $rootNode, "Required parameters not set.");
    return;
  } else {
    $query = 'select layer_tablename, layer_name, access, p_nid, participation_type from "Meta_Layer" where layer_id in (select layer_id from "Theme_Layer_Mapping" where theme_id = %d) and status = 1 order by layer_name;';
    $result = db_query($query, $theme_id);
    if (!$result) {
      setError($xmlDoc, $rootNode, "Error fetching information.");
    } else {
      setNoError($xmlDoc, $rootNode);
      addXMLChildNode($xmlDoc, $rootNode, "group_type", $group_type);
      $thmNode = addXMLChildNode($xmlDoc, $rootNode, "theme", null, array('id' => $theme_id));
      getLayersList($xmlDoc, $thmNode, $result);
    }
  }
}