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; }
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(); }