Example #1
0
function is_range_array($array) {
  $r = false;
  if (is_array($array)) {
    foreach($array as $n=>$v) {
      if (is_array( $array[$n] )) {
        $r = is_range_array( $array[$n] );
        if ($r==false) break;
      } else {
        $vals = explode("-", $v);
        foreach($vals as $v) {
          if (!is_numeric($v)) {
            $r = false;
            break;
          } else {
            $r = true;
          }
        }
      }
    }
  }
  return $r;
}
Example #2
0
function getLegend($filter,$layer){
	// create a new XML document
  	$responseDoc = new DomDocument('1.0');
	// create root node
  	$rootNode = $responseDoc->createElement('response');
  	$rootNode = $responseDoc->appendChild($rootNode);
	$query = "select count(*) as total from lut_color where color_by_column ='". $filter ."' and layer_id = ( select layer_id from \"Meta_Layer\" where layer_tablename ='".$layer."' )";
  	$data = db_query($query);
  	if ($obj = db_fetch_object($data)) {
    	if ($obj->total > 0) {
      		setNoError($responseDoc, $rootNode);
      		$layerNode = addXMLChildNode($responseDoc, $rootNode, "layer", null, array('color_by_column' => $filter));
      		$query = "select color_by_value, color from lut_color where layer_id = ( select layer_id from \"Meta_Layer\" where layer_tablename ='".$layer."') and color_by_column ='". $filter ."' order by color_by_value";
      		$data = db_query($query);
      		$categories = array();
      		$colors = array();
		    while ($obj = db_fetch_object($data)) {
        		$categories[] = $obj->color_by_value;
        		$colors[] = $obj->color;
            }
      		if (is_numeric_array($categories)) {
        		array_multisort($categories, $colors);
      		} elseif (is_range_array($categories)) {
        		rangearray_multisort($categories, $colors);
      		}
      		$len = sizeof($categories);
      		for ($i = 0; $i < $len; $i++) {
        		addXMLChildNode($responseDoc, $layerNode, "category", null, array('category_name' => $categories[$i], 'category_color' => $colors[$i]));
      		}
    	} else {
      		setError($responseDoc, $rootNode, "Color by column not set for this layer");
    	}
  	}
  	return $responseDoc->saveXML();
}