getElementsByTagName('map-source'); # Array to store the popups found. $content = ''; $totalResults = 0; $firstResult = false; $resultFeatures = array(); $options = array(); for($i = 0; $i < $msXML->length; $i++) { $node = $msXML->item($i); $layers = $node->getElementsByTagName('layer'); for($l = 0; $l < $layers->length; $l++) { $layer = $layers->item($l); $layerName = $layer->getAttribute('name'); $path = $node->getAttribute('name').'/'.$layerName; if(in_array($path, $layersToSearch)) { $file = $node->getElementsByTagName('file')->item(0)->firstChild->nodeValue; # Okay, now it's time to cook if(substr($file,0,1) == '.') { $file = $CONFIGURATION['root'].$file; } $map = ms_newMapObj($file); # Create an array of query layers $queryLayers = array(); if($layerName == 'all') { for($ml = 0; $ml < $map->numlayers; $ml++) { array_push($queryLayers, $map->getLayer($ml)); } } else { # Turn on the specific layer array_push($queryLayers, $map->getLayerByName($layerName)); } if($mode == 'search') { # Iterate through the queryLayers... foreach($queryLayers as $queryLayer) { $queryLayer->set('template', 'x'); //Only set because MS seems to require a template value $queryLayer->set('status', MS_DEFAULT); $queryString = $queryLayer->getMetaData('itemquery-filter'); $queryString = str_replace('[qstring]', $queryValue, $queryString); $queryLayer->queryByRect($queryLayer->getExtent()); $queryLayer->open(); $numResults = $queryLayer->getNumResults(); if($numResults > 0 and $totalResults == 0) { $res = $queryLayer->getResult(0); $firstResult = $queryLayer->getShape($res); } $optionValue = Array(); for($rx = 0; $rx < $numResults; $rx++) { $res = $queryLayer->getResult($rx); $optionValue[$rx] = $queryLayer->getShape($res)->values[$queryItem]; } sort($optionValue); foreach($optionValue as $option) { if(strlen($option) > 0) { $contents .= ''; } } } } if($mode == 'map') { # Iterate through the queryLayers... foreach($queryLayers as $queryLayer) { $queryLayer->set('template', $queryLayer->getMetaData('itemquery')); $queryLayer->set('status', MS_DEFAULT); $queryString = $queryLayer->getMetaData('itemquery-filter'); $queryString = str_replace('[qstring]', $queryValue, $queryString); $queryLayer->setFilter($queryString); $filterItem = $queryLayer->getMetaData('itemquery-filteritem'); if($filterItem) { $queryLayer->set('filteritem', $filterItem); } if($queryItem) { $queryLayer->set('filteritem', $queryItem); } $queryLayer->queryByRect($queryLayer->getExtent()); $queryLayer->open(); $numResults = $queryLayer->getNumResults(); if($numResults > 0 and $totalResults == 0) { $res = $queryLayer->getResult(0); $firstResult = $queryLayer->getShape($res); } for($rx = 0; $rx < $numResults; $rx++) { $res = $queryLayer->getResult($rx); array_push($resultFeatures, $queryLayer->getShape($res)); } $totalResults += $numResults; $queryLayer->close(); } } $totalResults += $numResults; $queryLayer->close(); } } } if($mode == 'search') { header('Content-type: text/xml'); print ""; print $contents; print ""; } elseif($mode == 'map') { header('Content-type: text/xml'); print ""; print ""; print ""; } else { header('Content-type: text/html'); print 'Error! Unknown mode!'; } function parseBoolean($p) { return($p == 1 || $p == '1' || strtolower($p) == 'true' || strtolower($p) == 'on'); } ?>