コード例 #1
0
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.");
  }
}
コード例 #2
0
ファイル: xmlfunctions.php プロジェクト: rahool/maplocator
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);
      }
    }
  }
}
コード例 #3
0
ファイル: metadata_layer.php プロジェクト: rahool/maplocator
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);
        }
      }
    }
  }
}
コード例 #4
0
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.');
  }
}
コード例 #5
0
ファイル: ml_deletemedia.php プロジェクト: rahool/maplocator
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.");
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}
コード例 #6
0
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.");
  }
}
コード例 #7
0
ファイル: symbology.php プロジェクト: rahool/maplocator
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();
}
コード例 #8
0
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']);
          }
        }
      }
    }
  }
}
コード例 #9
0
ファイル: data_layer.php プロジェクト: rahool/maplocator
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.");
      }
    }
  }
}
コード例 #10
0
ファイル: metadata_themes.php プロジェクト: rahool/maplocator
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);
    }
  }
}
コード例 #11
0
ファイル: metadata_link.php プロジェクト: rahool/maplocator
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.");
    }
  }
}