function getLayersListForManageGroup($xmlDoc, &$rootNode, $paramsNode) {
  $group_id = $paramsNode->getElementsByTagName('group_id')->item(0)->nodeValue;

  if($group_id == null || $group_id == '') {
    setError($xmlDoc, $rootNode, "Required parameters not set.");
    return;
  } else {
    $query = 'select ml.layer_name, ml.layer_id, lgm.display_name from "Meta_Layer" ml, "Layer_Group_Mapping" lgm where lgm.group_id = %d and ml.layer_id = lgm.layer_id order by lgm.layer_sequence';
    $query_args = array($group_id);
    $result = db_query($query, $query_args);

    $query = 'select layer_name, layer_id from "Meta_Layer" where status = 1 and layer_id not in (select layer_id from "Layer_Group_Mapping" where group_id = %d) order by layer_name';
    $query_args = array($group_id);
    $result1 = db_query($query, $query_args);

    if (!$result || !$result1) {
      setError($xmlDoc, $rootNode, "Error fetching information.");
    } else {
      setNoError($xmlDoc, $rootNode);
      $lyrGrpNode = addXMLChildNode($xmlDoc, $rootNode, "layer_group", null, array('id' => $group_id));
      while ($arr = db_fetch_array($result)) {
        addXMLChildNode($xmlDoc, $lyrGrpNode, "layer", null, $arr);
      }
      $lyrsNode = addXMLChildNode($xmlDoc, $rootNode, "layers");
      while ($arr = db_fetch_array($result1)) {
        addXMLChildNode($xmlDoc, $lyrsNode, "layer", null, $arr);
      }
    }
  }
}
Ejemplo n.º 2
0
function getGRMappedTableColumns($xmlDoc, &$rootNode, $paramsNode) {
  $tableNode = $paramsNode->getElementsByTagName('table')->item(0);
  $tablename = $tableNode->nodeValue;
  $table_type = $tableNode->getAttribute('type');
  if($tablename == null || $tablename == '' || $table_type == null || $table_type == '') {
    setError($xmlDoc, $rootNode, "Required parameters not set.");
    return;
  } else {
    $query = "select table_column from \"Global_Resource_Mapping\" where tablename = '%s' and table_type = '%s'";
    $result = db_query($query, array($tablename, $table_type));
    if(!$result) {
      setError($xmlDoc, $rootNode, "Error fetching data.");
    } else {
      setNoError($xmlDoc, $rootNode);
      $arr_cols = array();
      while($obj = db_fetch_object($result)) {
        $arr_cols[] = $table_column = $obj->table_column;
      }
      addXMLChildNode($xmlDoc, $rootNode, "table", null, array("tablename" => $tablename, "table_type" => $table_type, 'columns' => implode(",", array_keys(getDBColDesc($tablename))), "mapped_columns" => implode(",", $arr_cols)));
    }
  }
}
Ejemplo n.º 3
0
function getMetaLinkTable($xmlDoc, &$rootNode, $paramsNode) {
  $link_tablename = $paramsNode->getElementsByTagName('link_tablename')->item(0)->nodeValue;

  if($link_tablename == null || $link_tablename == '') {
    setError($xmlDoc, $rootNode, "Required parameters not set.");
    return;
  } else {
    $query = 'select ml.layer_tablename, mlnk.* from "Meta_LinkTable" as mlnk, "Meta_Layer" as ml where mlnk.layer_id = ml.layer_id and mlnk.link_tablename = \'%s\';';
    $result = db_query($query, $link_tablename);
    if (!$result) {
      setError($xmlDoc, $rootNode, "Error fetching information.");
    } else {
      setNoError($xmlDoc, $rootNode);
      if($arr = db_fetch_array($result)) {
        $layer_tablename = $arr['layer_tablename'];
        $lyrNode = addXMLChildNode($xmlDoc, $rootNode, "layer", null, array('tablename' => $layer_tablename, 'columns' => implode(",", array_keys(getDBColDesc($layer_tablename)))));
        $lnk_col_info = getDBColDesc($link_tablename);
        $lnkNode = addXMLChildNode($xmlDoc, $rootNode, "link", null, array('tablename' => $link_tablename, 'columns' => implode(",", array_keys($lnk_col_info))));
        foreach ($arr as $key => $val) {
          switch($key) {
            case 'layer_tablename':
            case 'layer_id':
            case 'link_tablename':
              break;
            default:
              $colDesc = $key;
              if (is_array($lnk_col_info) && $lnk_col_info[$key] != '') {
                $colDesc = $lnk_col_info[$key];
              }
              addXMLChildNode($xmlDoc, $lnkNode, $key, $val, array('desc' => $colDesc));
              break;
          }
        }
      }
    }
  }
}
Ejemplo n.º 4
0
function getLayerGroups($xmlDoc, &$rootNode) {
  $query = 'select id, group_name from "Layer_Group" order by group_name';
  $result = db_query($query);

  if (!$result) {
    setError($xmlDoc, $rootNode, "Error fetching information.");
  } else {
    setNoError($xmlDoc, $rootNode);
    $isAdmin = "0";
    $user = $GLOBALS['user'];
    $user_roles = $user->roles;
    if($user->uid) {
      if(in_array(SITE_ADMIN_ROLE, $user_roles)) {
        $isAdmin = "1";
      }
    }

    addXMLChildNode($xmlDoc, $rootNode, "user_is_admin", $isAdmin);
    $lyrGrpNode = addXMLChildNode($xmlDoc, $rootNode, "layer_groups");
    while ($arr = db_fetch_array($result)) {
      addXMLChildNode($xmlDoc, $lyrGrpNode, "layer_group", null, array('id' => $arr['id'], 'name' => $arr['group_name']));
    }
  }
}
Ejemplo n.º 5
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);
        }
      }
    }
  }
}
Ejemplo n.º 6
0
function getLegendColumns($layer){
	// create a new XML document
	$responseDoc = new DomDocument('1.0');
	// create root node
	$rootNode = $responseDoc->createElement('response');
	$rootNode = $responseDoc->appendChild($rootNode);
	$cat_col = addXMLChildNode($responseDoc, $rootNode, "color_by_columns");
	$query = "select colorby_cat_col from \"%s\" where layer_tablename = '%s'";
    $result = db_query($query,"Meta_Layer",$layer);
    if($obj = db_fetch_object($result)){
    	setNoError($responseDoc, $rootNode);
    	$col_string = str_replace("'","" ,$obj->colorby_cat_col);
    	$col_arr = explode(',',$col_string);
    	$cnt = count($col_arr);
    	for($i=0;$i<$cnt;$i++){
    		addXMLChildNode($responseDoc, $cat_col, "color_by_column", null, array('column_name' => $col_arr[$i]));
		}
    }else{
		setError($responseDoc, $rootNode, "error executing query");
	}
	return $responseDoc->saveXML();
}
function getCategoricalLayersList($xmlDoc, &$rootNode, $paramsNode) {
  $theme_type = $paramsNode->getElementsByTagName('theme_type')->item(0)->nodeValue;

  if($theme_type == null || $theme_type == '') {
    setError($xmlDoc, $rootNode, "Required parameters not set.");
    return;
  } else {
    $themes = getThemesByType($theme_type);
    if($themes === false) {
      setError($xmlDoc, $rootNode, "Error fetching information.");
    } else {
      $layers = getLayersByThemeType($theme_type);
      if($layers === false) {
        setError($xmlDoc, $rootNode, "Error fetching information.");
      } else {
        setNoError($xmlDoc, $rootNode);
        $thmsNode = addXMLChildNode($xmlDoc, $rootNode, "themes", null, array('theme_type' => $theme_type));
        foreach($themes as $theme) {
          $chldcnt = sizeof($layers[$theme['theme_id']]);
          $theme['icon'] = getThemeIconUrl($theme['icon']);
          $thmNode = addXMLChildNode($xmlDoc, $thmsNode, "theme", null, $theme);
          foreach($layers[$theme['theme_id']] as $lyr) {
            formLayersListXML($xmlDoc, $thmNode, $lyr['layer_tablename'], $lyr['layer_name'], $lyr['access'], $lyr['p_nid'], $lyr['participation_type']);
          }
        }
      }
    }
  }
}
Ejemplo n.º 8
0
function createXMLForThemeChildNodes($xmlDoc, &$rootNode, $thms) {
  foreach($thms as $thm) {
    if($thm['type'] == 'layer') {
      $attr = array('id' => $thm['id'], 'name' => $thm['name'], 'type' => $thm['layer_type'], 'nid' => $thm['nid']);
      $tNode = addXMLChildNode($xmlDoc, $rootNode, "layer", null, $attr);
    } else {
      $attr = array('type' => $thm['type'], 'id' => $thm['id'], 'name' => $thm['name'], 'icon' => getThemeIconUrl($theme['icon']));
      $tNode = addXMLChildNode($xmlDoc, $rootNode, "theme", null, $attr);
      if(isset($thm['children'])) {
        createXMLForThemeChildNodes($xmlDoc, $tNode, $thm['children']);
      }
    }
  }
}
Ejemplo n.º 9
0
function getFeatureInfo($xmlDoc, &$rootNode, $paramsNode) {
  $layer_tablename = $paramsNode->getElementsByTagName('layer_tablename')->item(0)->nodeValue;
  $row_id = $paramsNode->getElementsByTagName('row_id')->item(0)->nodeValue;

  if(($layer_tablename == null || $layer_tablename == '') || ($row_id == null || $row_id == '')) {
    setError($xmlDoc, $rootNode, "Required parameters not set.");
    return;
  } else {
    $col_db_info = getDBColDesc($layer_tablename);

    $columns_arr = array();
    $columns_arr[] = 'layer_name';
    $columns_arr[] = 'layer_type';
    $columns_arr[] = 'title_column';
    $columns_arr[] = 'license';
    $columns_arr[] = 'attribution';
    $columns_arr[] = 'summary_columns';
    $columns_arr[] = 'media_columns';
    $columns_arr[] = 'video_columns';
    $columns_arr[] = 'nid';

    $metainfo = get_values_metatable($layer_tablename, $layer_id, TABLE_TYPE_LAYER, $columns_arr);

    $layer_name = $metainfo['layer_name'];
    $layer_title_column = str_replace("'", "", $metainfo['title_column']);
    $layer_license = $metainfo['license'];
    $layer_attribution = $metainfo['attribution'];
    $summary_columns_arr = explode(",", str_replace("'", "", $metainfo['summary_columns']));
    $media_columns = $metainfo['media_columns'];
    $media_columns_arr = array();
    if($media_columns != NULL && $media_columns != '') {
      $media_columns_arr = explode(",", str_replace("'", "", $metainfo['media_columns']));
    }
    $video_columns_arr = array();
    $video_columns = $metainfo['video_columns'];
    if($video_columns != NULL && $video_columns != '') {
      $video_columns_arr = explode(",", str_replace("'", "", $metainfo['video_columns']));
    }
    $lyr_nid = $metainfo['nid'];

    $attribs_res = array();
    $images = array();
    $videos = array();
    $title = "";
    $created_by = "";
    $created_date = "";
    $modified_by = "";
    $modified_date = "";
    $validated_by = "";
    $validated_date = "";
    $validated = "";
    $attribution = "";
    $nid = 0;
    $teaser = "";

    $query = 'select * from "%s" where '.AUTO_DBCOL_PREFIX.'id = %d;';
    $result = db_query($query, array($layer_tablename, $row_id));
    if (!$result) {
      setError($xmlDoc, $rootNode, "Error fetching information.");
    } else {
      if ($arr = db_fetch_array($result)) {
        $base_path = base_path();
        foreach ($arr as $key => $val) {
          if($key == $layer_title_column) {
            $title = $val;
          }

          if(in_array($key, $media_columns_arr)) {
            if($val != NULL) {
              $arr = explode(",", $val);
              $label = $col_db_info[$key] == '' ? $key : $col_db_info[$key];
              foreach($arr as $v) {
                $images[] = array('value' => $base_path.'sites/default/files/images/'.$layer_tablename.'/'.$v, 'label' => $label . ': ' . $v);
              }
            }
          }

          if(in_array($key, $video_columns_arr)) {
            if($val != NULL) {
              $arr = explode(",", $val);
              $label = $col_db_info[$key] == '' ? $key : $col_db_info[$key];
              foreach($arr as $v) {
                $videos[] = array('value' => $base_path.'sites/default/files/videos/'.$layer_tablename.'/'.$v, 'label' => $label . ': ' . $v);
              }
            }
          }

          switch($key) {
            case AUTO_DBCOL_PREFIX.'created_by':
              if($val) {
                $created_by = getUserName($val);
              }
              break;
            case AUTO_DBCOL_PREFIX.'created_date':
              $created_date = $val;
              break;
            case AUTO_DBCOL_PREFIX.'modified_by':
              if($val) {
                $modified_by = getUserName($val);
              }
              break;
            case AUTO_DBCOL_PREFIX.'modified_date':
              $modified_date = $val;
              break;
            case AUTO_DBCOL_PREFIX.'validated_by':
              if($val) {
                $validated_by = getUserName($val);
              }
              break;
            case AUTO_DBCOL_PREFIX.'validated_date':
              $validated_date = $val;
              break;
            case AUTO_DBCOL_PREFIX.'status':
              $validated = $val;
              break;
            case AUTO_DBCOL_PREFIX.'attribution':
              $attribution = $val;
              break;
            case AUTO_DBCOL_PREFIX.'nid':
              $nid = $val;
              break;
            case AUTO_DBCOL_PREFIX.'id':
            case AUTO_DBCOL_PREFIX.'layer_id':
            case AUTO_DBCOL_PREFIX.'topology':
              break;
            default:
              if(count($summary_columns_arr) > 0) {
                if(!in_array($key, $media_columns_arr) && !in_array($key, $video_columns_arr)) {
                  $attribs_res[$key] = array('key' => $key, 'value' => $val, 'label' => ($col_db_info[$key] == '' ? $key : $col_db_info[$key]), 'summary_column' => (in_array($key, $summary_columns_arr) == true) ? '1' : '0');
                }
              } else {
                if(!in_array($key, $media_columns_arr) && !in_array($key, $video_columns_arr)) {
                  $attribs_res[$key] = array('key' => $key, 'value' => $val, 'label' => ($col_db_info[$key] == '' ? $key : $col_db_info[$key]));
                }
              }
              break;
          }
        }
      }
    }

    setNoError($xmlDoc, $rootNode);
    $lyrNode = addXMLChildNode($xmlDoc, $rootNode, "layer", null, array('name' => $layer_name, 'tablename' => $layer_tablename, 'row_id' => $row_id, 'nid' => $lyr_nid));

    $infoNode = addXMLChildNode($xmlDoc, $lyrNode, "info");
    addXMLChildNode($xmlDoc, $infoNode, "title", $title);
    if($nid) {
      $node = node_load($nid);
      $ntitle = $node->title;
      $nbody = $node->body;
      $nbody .= ' <font color="#0000FF"><i><a href="'.base_path().'node/'.$nid.'" target="_blank">(more...)</a></i></font>';
      addXMLChildNode($xmlDoc, $infoNode, "narrative", $nbody, array('nid' => $nid, 'title' => $ntitle));
    } else {
      addXMLChildNode($xmlDoc, $infoNode, "narrative", null, array('nid' => $nid));
    }
    addXMLChildNode($xmlDoc, $infoNode, "created", null, array('by' => $created_by, 'date' => $created_date));
    addXMLChildNode($xmlDoc, $infoNode, "modified", null, array('by' => $modified_by, 'date' => $modified_date));
    if($validated) {
      addXMLChildNode($xmlDoc, $infoNode, "validated", null, array('by' => $validated_by, 'date' => $validated_date));
    }

    addXMLChildNode($xmlDoc, $infoNode, "attribution", $attribution);
    $license = getCCLicenseHTMLForSummary($layer_license);
    if($license != $layer_license){
      $url = 'http://i.creativecommons.org/l/' . $license[0] . '/3.0/';
      addXMLChildNode($xmlDoc, $infoNode, "license", $license[0], array('url' => $url, 'img' => $url . $license[1] . '.png'));
    } else {
      addXMLChildNode($xmlDoc, $infoNode, "license", $license);
    }

    if(userHasEditLayerDataPerm($layer_tablename, $row_id)) {
      addXMLChildNode($xmlDoc, $infoNode, "userHasEditLayerDataPerm", "1");
    } else {
      addXMLChildNode($xmlDoc, $infoNode, "userHasEditLayerDataPerm", "0");
    }

    $user = $GLOBALS['user'];
    if($user->uid && user_access("create node_mlocate_feature")) {
      addXMLChildNode($xmlDoc, $infoNode, "userHasEditDrupalNodePerm", "1");
    } else {
      addXMLChildNode($xmlDoc, $infoNode, "userHasEditDrupalNodePerm", "0");
    }

    $base_path = base_path();

    $mediaNode = addXMLChildNode($xmlDoc, $lyrNode, "media");
    if(count($media_columns_arr) > 0) {
      $imagesNode = addXMLChildNode($xmlDoc, $mediaNode, "images");
      foreach ($images as $im) {
        addXMLChildNode($xmlDoc, $imagesNode, "image", null, $im);
      }
    }
    if(count($video_columns_arr) > 0) {
      $videosNode = addXMLChildNode($xmlDoc, $mediaNode, "videos");
      foreach ($videos as $vd) {
        addXMLChildNode($xmlDoc, $videosNode, "video", null, $vd);
      }
    }

    $attribsNode = addXMLChildNode($xmlDoc, $lyrNode, "attribs");
    foreach ($attribs_res as $attrib) {
      addXMLChildNode($xmlDoc, $attribsNode, "attrib", null, $attrib);
    }
  }
}
Ejemplo n.º 10
0
function getThemesChildNodes($xmlDoc, &$rootNode, $paramsNode) {
  $theme_id = $paramsNode->getElementsByTagName('theme_id')->item(0)->nodeValue;
  $category_id = $paramsNode->getElementsByTagName('category_id')->item(0)->nodeValue;
  $level = $paramsNode->getElementsByTagName('level')->item(0)->nodeValue;

  if($category_id == null || $category_id == '') {
    $category_id = 0;
  }

  if($level == null || $level == '') {
    $level = 1;
  }

  if($theme_id == null || $theme_id == '') {
    setError($xmlDoc, $rootNode, "Required parameters not set.");
    return;
  } else {
    $thms = _getThemeChildNodes($theme_id, $category_id, $level);
    if($thms === false) {
      setError($xmlDoc, $rootNode, "Error fetching information.");
    } else {
      setNoError($xmlDoc, $rootNode);
      $thmsNode = addXMLChildNode($xmlDoc, $rootNode, "theme", null, array('id' => $theme_id, 'category_id' => $category_id, 'level' => $level));

      if($category_id == 0) {
        $nid = 0;
        $images = '';
        $videos = '';
        $query = 'select nid, images, videos from "Theme" where theme_id = %d';
        $query_args = array($theme_id);
        $result = db_query($query, $query_args);
        if(!$result) {
          return false;
        } else {
          if($obj = db_fetch_object($result)) {
            $nid = $obj->nid;
            $images = array();
            $str = $obj->images;
            if($str != NULL || !empty($str)) {
              $images = explode(",", $str);
            }
            $videos = array();
            $str = $obj->videos;
            if($str != NULL || !empty($str)) {
              $videos = explode(",", $str);
            }
          }
        }
        if($nid > 0) {
          $teaser = getReadMoreDrupalNodeTeaser($nid, 150);
          addXMLChildNode($xmlDoc, $thmsNode, 'narrative', $teaser, array('nid' => $nid));
        }

        $mediaNode = addXMLChildNode($xmlDoc, $thmsNode, 'media');

        $base_path = base_path();

        $imagesNode = addXMLChildNode($xmlDoc, $mediaNode, 'images');
        foreach ($images as $im) {
          addXMLChildNode($xmlDoc, $imagesNode, "image", $im, array('src' => $base_path . 'sites/default/files/images/theme_' . $theme_id . '/' . $im));
        }

        $videosNode = addXMLChildNode($xmlDoc, $mediaNode, 'videos');
        foreach ($videos as $vd) {
          addXMLChildNode($xmlDoc, $videosNode, "video", $vd, array('src' => $base_path . 'sites/default/files/videos/theme_' . $theme_id . '/' . $vd));
        }
      }

      createXMLForThemeChildNodes($xmlDoc, $thmsNode, $thms);
    }
  }
}