function deleteLayerGroup($xmlDoc, &$rootNode, $paramsNode) { $isAdmin = false; $user = $GLOBALS['user']; $user_roles = $user->roles; if($user->uid) { if(in_array(SITE_ADMIN_ROLE, $user_roles)) { $isAdmin = true; } } if(!$isAdmin) { setError($xmlDoc, $rootNode, "You are not authorized."); return; } $groupNode = $paramsNode->getElementsByTagName('group')->item(0); $group_id = $groupNode->getAttribute("id"); if($group_id == NULL || $group_id == '' || $group_id == 0) { setError($xmlDoc, $rootNode, "Select a layer group to delete."); return; } $query = 'delete from "Layer_Group" where id = %d'; $query_args = array($group_id); $result = db_query($query, $query_args); if(!$result) { setError($xmlDoc, $rootNode, "Could not delete the group. Please try after sometime."); } else { setNoError($xmlDoc, $rootNode, "The group has been deleted successfully."); } }
function getTableColDesc($tablename, $table_type = 'layer', $col_db_info, $doc, &$resultNode, $onlyDesc = true) { setNoError($doc, $resultNode); $tabNode = addXMLChildNode($doc, $resultNode, $table_type, null, array('tablename' => $tablename)); if($onlyDesc) { foreach($col_db_info as $name => $val) { if(substr($name, 0, strlen(AUTO_DBCOL_PREFIX)) != AUTO_DBCOL_PREFIX) { addXMLChildNode($doc, $tabNode, "column", null, array("c_name" => $name, "c_desc" => $val)); } } } else { foreach($col_db_info as $name => $info) { if(substr($name, 0, strlen(AUTO_DBCOL_PREFIX)) != AUTO_DBCOL_PREFIX) { $arr['name'] = $name; foreach($info as $key => $val) { $arr[$key] = $val; } addXMLChildNode($doc, $tabNode, "column", null, $arr); } } } }
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 saveLayerGroup($xmlDoc, &$rootNode, $paramsNode) { $isAdmin = false; $user = $GLOBALS['user']; $user_roles = $user->roles; if($user->uid) { if(in_array(SITE_ADMIN_ROLE, $user_roles)) { $isAdmin = true; } } if(!$isAdmin) { setError($xmlDoc, $rootNode, "You are not authorized."); return; } $groupNode = $paramsNode->getElementsByTagName('group')->item(0); $group_id = $groupNode->getAttribute("id"); $group_name = trim($groupNode->getAttribute("name")); if($group_id == 0) { $query = 'select count(*) from "Layer_Group" where group_name = \'%s\''; $result = db_query($query, array($group_name)); if($arr = db_fetch_array($result)) { $count = $arr['count']; } if($count > 0) { setError($xmlDoc, $rootNode, "The group name is already in use. Try some other name."); return; } $query = 'insert into "Layer_Group" (group_name, created_by, created_date, modified_by, modified_date) values(\'%s\', %d, now(), %d, now())'; $result = db_query($query, array($group_name, $user-uid, $user-uid)); if (!$result) { setError($xmlDoc, $rootNode, "Error saving information."); } else { setNoError($xmlDoc, $rootNode, 'Group has been saved.'); } } else { $lyrs = array(); $layerslist = $groupNode->getElementsByTagName('layer'); for($i = 0; $i < $layerslist->length; $i++) { $lyr = $layerslist->item($i); $display_name = $lyr->nodeValue; $layer_id = $lyr->getAttribute("id"); $lyrs[] = array('layer_id' => $lyr->getAttribute("id"), 'display_name' => $lyr->nodeValue); } $query = "update \"Layer_Group\" set group_name = '%s', modified_by = %d, modified_date = now() where id = %d"; $query_args = array($group_name, $user->uid, $group_id); $result = db_query($query, $query_args); if (!$result) { setError($xmlDoc, $rootNode, "Error saving information."); return; } $query = 'delete from "Layer_Group_Mapping" where group_id = %d'; $query_args = array($group_id); $result = db_query($query, $query_args); if (!$result) { setError($xmlDoc, $rootNode, "Error saving information."); return; } $i = 1; foreach($lyrs as $lyr) { $query = 'insert into "Layer_Group_Mapping" (group_id, layer_id, display_name, layer_sequence) values (%d, %d, \'%s\', %d)'; $query_args = array($group_id, $lyr['layer_id'], $lyr['display_name'], $i); $result = db_query($query, $query_args); if (!$result) { setError($xmlDoc, $rootNode, "Error saving information."); return; } $i++; } setNoError($xmlDoc, $rootNode, 'Group has been updated.'); } }
function deleteMedia($xmlDoc, &$rootNode, $paramsNode) { $layer_tablename = $paramsNode->getElementsByTagName('layer_tablename')->item(0)->nodeValue; $row_id = $paramsNode->getElementsByTagName('row_id')->item(0)->nodeValue; $media_type = $paramsNode->getElementsByTagName('type')->item(0)->nodeValue; $filename = $paramsNode->getElementsByTagName('filename')->item(0)->nodeValue; if(($layer_tablename == null || $layer_tablename == '') || ($row_id == null || $row_id == '') || ($media_type == null || $media_type == '') || ($filename == null || $filename == '')) { setError($xmlDoc, $rootNode, "Required parameters not set.."); return; } else { if(!userHasEditLayerDataPerm($layer_tablename, $row_id)) { setError($xmlDoc, $rootNode, "You are not authorized."); return; } else { $col_type = 'media_columns'; if($media_type == 'videos') { $col_type = 'video_columns'; } $query = 'select %s from "Meta_Layer" where layer_tablename = \'%s\''; $query_args = array($col_type, $layer_tablename); $result = db_query($query, $query_args); if(!$result) { setError($xmlDoc, $rootNode, "Error talking to database. Please try again later."); return; } else { if($obj = db_fetch_array($result)) { $cols = $obj[$col_type]; if($cols == NULL || $cols == '') { setError($xmlDoc, $rootNode, "No columns specified in DB."); return; } else { $cols = str_replace("'", "", $cols); $colsarr = explode(",", $cols); $col = $colsarr[0]; $query = 'select %s from "%s" where __mlocate__id = %d'; $query_args = array($col, $layer_tablename, $row_id); $result = db_query($query, $query_args); if(!$result) { setError($xmlDoc, $rootNode, "Error talking to database. Please try again later."); return; } else { if($obj = db_fetch_array($result)) { if($obj[$col] == null || $obj[$col] == '') { setError($xmlDoc, $rootNode, "File not found."); return; } $fls = explode(",", $obj[$col]); $indx = array_search($filename, $fls); if($indx === false) { setError($xmlDoc, $rootNode, "File not found."); return; } else { array_splice($fls, $indx, 1); $query = 'update "%s" set %s = \'%s\''; $query_args = array($layer_tablename, $col, implode(",", $fls)); $result = db_query($query, $query_args); if(!$result) { setError($xmlDoc, $rootNode, "Error talking to database. Please try again later."); return; } else { $path = str_replace(str_replace(base_path(), "", $_SERVER['PHP_SELF']), "", $_SERVER['SCRIPT_FILENAME']) . 'sites/default/files/'; if($media_type == 'videos') { $path .= 'videos/' . $layer_tablename . '/' . $filename; @unlink($path); $path = substr($path, 0, strlen($path) - 4) . '_tn.jpg'; @unlink($path); } else { $path .= 'images/' . $layer_tablename . '/' . $filename; @unlink($path); } setNoError($xmlDoc, $rootNode, "File deleted."); } } } } } } } } } }
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 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 saveFeatureInfo($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 { if(!userHasEditLayerDataPerm($layer_tablename, $row_id)) { setError($xmlDoc, $rootNode, "You are not authorized."); return; } else { $attribs = $paramsNode->getElementsByTagName('attribs')->item(0)->childNodes; $setarr = array(); foreach($attribs as $attribNode) { $key = $attribNode->nodeName; $val = $attribNode->nodeValue; $setarr[] = "{$key}='{$val}'"; } if(count($setarr) == 0) { setError($xmlDoc, $rootNode, "No columns specified."); return; } $query = "update " . $layer_tablename . " set " . implode(",", $setarr) . " where " . AUTO_DBCOL_PREFIX . "id=" . $row_id; $result = db_query($query); if(!$result) { setError($xmlDoc, $rootNode, "Error talking to database. Please try again later."); return; } else { setNoError($xmlDoc, $rootNode, "Record saved."); } } } }
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); } } }
function saveLinkColDesc($xmlDoc, &$rootNode, $paramsNode) { $linkNode = $paramsNode->getElementsByTagName('link')->item(0); $link_tablename = $linkNode->getAttribute('tablename'); if($link_tablename == null || $link_tablename == '') { setError($xmlDoc, $rootNode, "Required parameters not set."); return; } else { if(isUserAuthorizedToEditMetadata($link_tablename, TABLE_TYPE_LINK)) { $colNodes = $linkNode->childNodes; $err_flag = false; $err_cols = array(); $qry = 'COMMENT ON COLUMN "'.$link_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."); } } }