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); } } } }
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))); } } }
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; } } } } } }
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'])); } } }
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 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']); } } } } } }
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']); } } } }
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); } } }
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); } } }