[mapguide-commits] r7482 - sandbox/jng/queryfeatures_v2/Web/src/mapviewerphp

svn_mapguide at osgeo.org svn_mapguide at osgeo.org
Wed May 8 05:10:42 PDT 2013


Author: jng
Date: 2013-05-08 05:10:41 -0700 (Wed, 08 May 2013)
New Revision: 7482

Removed:
   sandbox/jng/queryfeatures_v2/Web/src/mapviewerphp/getselectedfeatures.php
Modified:
   sandbox/jng/queryfeatures_v2/Web/src/mapviewerphp/mapframe.php
Log:
So long getselectedfeatures.php. This RFC has eliminated the need for you

Deleted: sandbox/jng/queryfeatures_v2/Web/src/mapviewerphp/getselectedfeatures.php
===================================================================
--- sandbox/jng/queryfeatures_v2/Web/src/mapviewerphp/getselectedfeatures.php	2013-05-08 12:10:26 UTC (rev 7481)
+++ sandbox/jng/queryfeatures_v2/Web/src/mapviewerphp/getselectedfeatures.php	2013-05-08 12:10:41 UTC (rev 7482)
@@ -1,499 +0,0 @@
-<?php
-
-/*
-
-TODO:
-
-- Use the property mapping. This will have to be old-fashioned parsing the <PropertyMapping> elements
-of the layer definition. I really wanted to use MgSelection::GetSelectedFeatures(layer, class, true) but realised
-that unless the geometry is mapped, you're not going to see it in the Feature Reader (ie. No zoom point). Right now
-it is returning all properties.
-
-- I know of a few features in the Sheboygan Dataset that trip up the JSON response. Need to find out of addslashes() fixes this.
-
-- General cleanup of the code
-
-
-*/
-
-//require_once('FirePHPCore/fb.php');
-
-//
-// Used to model the JSON response.
-//
-class SelectionSet
-{
-    private $layers;
-
-    public function __construct()
-    {
-        $this->layers = array();
-    }
-
-    public function AddFeature($feat)
-    {
-        $layerName = $feat->layerName;
-        if(!array_key_exists($layerName, $this->layers))
-            $this->layers[$layerName] = array();
-
-        array_push($this->layers[$layerName], $feat);
-    }
-
-    public function GetLayers()
-    {
-        return array_keys($this->layers);
-    }
-
-    public function GetFeatures($layerName)
-    {
-        if(array_key_exists($layerName, $this->layers))
-            return $this->layers[$layerName];
-
-        return null;
-    }
-}
-
-class ZoomBox
-{
-    public $minx;
-    public $miny;
-    public $maxx;
-    public $maxy;
-}
-
-//
-// Represents a selected feature property
-//
-class FeatureProperty
-{
-    public $name;
-    public $value;
-}
-
-//
-// Represents a selected feature
-//
-class Feature
-{
-    public $layerName;
-    public $zoom;
-
-    private $properties;
-
-    public function __construct($layerName)
-    {
-        $this->layerName = $layerName;
-        $this->properties = array();
-    }
-
-    public function AddProperty($prop)
-    {
-        $this->properties[$prop->name] = $prop;
-    }
-
-    public function GetProperties()
-    {
-        return $this->properties;
-    }
-}
-
-    include 'common.php';
-    include 'constants.php';
-
-    $mapName = "";
-    $sessionId = "";
-    $locale = "";
-
-    GetRequestParameters();
-
-    if (null == $locale || strlen($locale) == 0)
-        $locale = GetDefaultLocale();
-
-    setlocale(LC_ALL, $locale);
-
-    try
-    {
-        InitializeWebTier();
-
-        $cred = new MgUserInformation($sessionId);
-        $cred->SetClientIp(GetClientIp());
-        $cred->SetClientAgent(GetClientAgent());
-
-        //connect to the site and get an instance of the resource and feature service
-        //
-        $site = new MgSiteConnection();
-        $site->Open($cred);
-        $resourceSrvc = $site->CreateService(MgServiceType::ResourceService);
-
-        //load the map runtime state
-        //
-        $map = new MgMap($site);
-        $map->Open($mapName);
-
-        // Create the selection set
-        $selection = new MgSelection($map);
-        $selection->Open($resourceSrvc, $mapName);
-
-        $layers = $selection->GetLayers();
-        if($layers != null)
-        {
-            $nLayers = $layers->GetCount();
-            $agfRW = new MgAgfReaderWriter();
-
-            $selectionSet = new SelectionSet();
-
-            for ($i = 0; $i < $nLayers; $i++) {
-                $lyr = $layers->GetItem($i);
-                $layerName = $lyr->GetName();
-
-                //FB::log("Layer Name: " . $lyr->GetName());
-
-                $featResId = new MgResourceIdentifier($lyr->GetFeatureSourceId());
-                $class = $lyr->GetFeatureClassName();
-
-                $queryOptions = new MgFeatureQueryOptions();
-
-                $mappings = GetLayerPropertyMappings($resourceSrvc, $lyr);
-                //FB::log("Property Mappings for Layer: $layerName");
-                foreach($mappings as $name => $value) {
-                    $queryOptions->AddFeatureProperty($name);
-                    //FB::log("$name => $value");
-                }
-                $geomName = $lyr->GetFeatureGeometryName();
-                $queryOptions->AddFeatureProperty($geomName);
-
-                $filter = $selection->GenerateFilter($lyr, $class);
-                $queryOptions->SetFilter($filter);
-                $fr = $lyr->SelectFeatures($queryOptions);
-
-                $clsDef = $fr->GetClassDefinition();
-                $props = $clsDef->GetProperties();
-
-                //FB::log("Geometry: $geomName");
-
-                while($fr->ReadNext())
-                {
-                    $feat = new Feature($layerName);
-                    $zoom = null;
-
-                    for ($k = 0; $k < $props->GetCount(); $k++)
-                    {
-                        $prop = $props->GetItem($k);
-                        $propName = $prop->GetName();
-                        $propType = $fr->GetPropertyType($propName);
-
-                        //We only care about mapped properties or geometry properties
-                        if (array_key_exists($propName, $mappings) || $propType == MgPropertyType::Geometry)
-                        {
-                            $value = "";
-                            if (!$fr->IsNull($propName))
-                            {
-                                if(strcmp($propName,$geomName) == 0)
-                                {
-                                    //We want the centroid so we have a zoom-to point
-                                    $agf = $fr->GetGeometry($propName);
-                                    $geom = $agfRW->Read($agf);
-
-                                    $env = $geom->Envelope();
-                                    $ll = $env->GetLowerLeftCoordinate();
-                                    $ur = $env->GetUpperRightCoordinate();
-
-                                    $zoom = new ZoomBox();
-                                    $zoom->minx = $ll->GetX();
-                                    $zoom->miny = $ll->GetY();
-                                    $zoom->maxx = $ur->GetX();
-                                    $zoom->maxy = $ur->GetY();
-
-                                    $feat->zoom = $zoom;
-                                    //FB::log("zoom: (".$zoom->x.",".$zoom->y.")");
-                                }
-                                else
-                                {
-                                    $value = GetPropertyValueFromFeatureReader($fr, $agfRW, $propType, $propName);
-                                }
-                            }
-
-                            if (array_key_exists($propName, $mappings))
-                            {
-                                $fp = new FeatureProperty();
-                                $fp->name = $mappings[$propName];
-                                $fp->value = $value;
-
-                                $feat->AddProperty($fp);
-                            }
-                        }
-                    }
-
-                    $c = count($feat->GetProperties());
-                    //FB::log("Selected feature processed ($c)");
-
-                    $selectionSet->AddFeature($feat);
-                }
-                $fr->Close();
-            }
-
-            //Now output the selection set
-
-            header("Content-Type: application/json");
-            header("X-JSON: true");
-            echo GetJson($selectionSet);
-        }
-    }
-    catch(Exception $e)
-    {
-        header("Content-Type: application/json");
-        header("X-JSON: true");
-        echo JsonifyError($e->getMessage(), $e->getTraceAsString());
-    }
-    catch(MgException $e)
-    {
-        header("Content-Type: application/json");
-        header("X-JSON: true");
-        echo JsonifyError($e->GetDetails(), $e->GetStackTrace());
-    }
-
-function GetJson($selectionSet)
-{
-    if($selectionSet == null)
-        return "";
-
-    //FB::log("Processing JSON response");
-    /*
-    A sample of the JSON output this method will produce:
-
-
-    {
-        "Layer1" : [
-            {
-                'values' { "name" : "name1" , "value" : "value1" },
-                'zoom' : { x: num1, y: num2 }
-            } ,
-            ..,
-            ..,
-            ..,
-        ],
-        "Layer2" : [
-            {
-                'values' { "name" : "name2" , "value" : "value2" },
-                'zoom' : { x: num1, y: num2 }
-            } ,
-            ..,
-            ..,
-            ..,
-        ]
-    }
-    */
-
-    $layers = $selectionSet->GetLayers();
-    $totalLayers = array(); //The data portion of the JSON response
-
-    //FB::log("Layers in selection set: ".count($layers));
-
-    for ($i = 0; $i < count($layers); $i++)
-    {
-        $layerName = $layers[$i];
-
-        $features = $selectionSet->GetFeatures($layerName);
-
-        //FB::log("Features: ".$features);
-
-        if($features != null)
-        {
-            //FB::log("Processing layer: $layerName");
-
-            $totalFeaturesOnLayer = array();
-
-            if (count($features) > 0)
-            {
-                for ($j = 0; $j < count($features); $j++)
-                {
-                    $feat = $features[$j];
-                    $featureProperties = array();
-
-                    $fps = $feat->GetProperties();
-                    foreach($fps as $fp)
-                    {
-                        $name = $fp->name;
-                        $value = $fp->value;
-                        //Add JSONified feature property
-                        array_push($featureProperties, "{\"name\" : \"$name\", \"value\" : \"$value\" }");
-                    }
-                    //Add JSONified feature
-                    if($feat->zoom != null)
-                    {
-                        $minxstr = number_format($feat->zoom->minx, 8, '.','');
-                        $minystr = number_format($feat->zoom->miny, 8, '.','');
-                        $maxxstr = number_format($feat->zoom->maxx, 8, '.','');
-                        $maxystr = number_format($feat->zoom->maxy, 8, '.','');
-                        array_push($totalFeaturesOnLayer, "{\"values\" : [".join(",", $featureProperties)."], \"zoom\" : { \"minx\": $minxstr, \"miny\": $minystr,  \"maxx\": $maxxstr, \"maxy\": $maxystr } }");
-                    }
-                    else
-                        array_push($totalFeaturesOnLayer, "{\"values\" : [".join(",", $featureProperties)."], \"zoom\" : null }");
-
-                    //FB::log("Feature processed on layer: $layerName");
-                }
-            }
-
-            array_push($totalLayers, "\"$layerName\" : [" . join(", ", $totalFeaturesOnLayer) . "]");
-            //FB::log("Selected features on layer added to final JSON response");
-        }
-    }
-
-    //FB::log("Selection layer count: ".count($totalLayers));
-
-    $result = "{" . join(",",$totalLayers) . "}";
-    //return json_encode($result);
-    return $result;
-}
-
-function GetPropertyValueFromFeatureReader($fr, $agfRW, $propType, $propName)
-{
-    $val = "";
-    $tStr = "";
-    switch($propType)
-    {
-        case MgPropertyType::Null:
-            $tStr = "Null";
-            $val = "";
-            break;
-        case MgPropertyType::Boolean:
-            $tStr = "Boolean";
-            $val = sprintf("%s", $fr->GetBoolean($propName));
-            break;
-        case MgPropertyType::Byte:
-            $tStr = "Byte";
-            $val = sprintf("%d", $fr->GetByte($propName));
-            break;
-        case MgPropertyType::DateTime:
-            $tStr = "DateTime";
-            $val = printDateTime($fr->GetDateTime($propName)); // yyyy-mm-dd is enforced regardless of locale
-            break;
-        case MgPropertyType::Single:
-            $tStr = "Single";
-            $val = sprintf("%f", $fr->GetSingle($propName));
-            break;
-        case MgPropertyType::Double:
-            $tStr = "Double";
-            $val = sprintf("%f", $fr->GetDouble($propName));
-            break;
-        case MgPropertyType::Int16:
-            $tStr = "Int16";
-            $val = sprintf("%d", $fr->GetInt16($propName));
-            break;
-        case MgPropertyType::Int32:
-            $tStr = "Int32";
-            $val = sprintf("%d", $fr->GetInt32($propName));
-            break;
-        case MgPropertyType::Int64:
-            $tStr = "Int64";
-            $val = sprintf("%d", $fr->GetInt64($propName));
-            break;
-        case MgPropertyType::String:
-            $tStr = "String";
-            $val = JsonEscape($fr->GetString($propName)); //String content is arbitrary
-            $val = trim(preg_replace('/\s+/',' ',$val));
-            break;
-        case MgPropertyType::Blob: //NOT PRESENTABLE IN PROPERTY GRID
-            $tStr = "BLOB";
-            break;
-        case MgPropertyType::Clob: //NOT PRESENTABLE IN PROPERTY GRID
-            $tStr = "CLOB";
-            break;
-        case MgPropertyType::Feature: //NOT PRESENTABLE IN PROPERTY GRID
-            $tStr = "Feature";
-            break;
-        case MgPropertyType::Geometry: //NOT PRESENTABLE IN PROPERTY GRID
-            $tStr = "Geometry";
-            break;
-        case MgPropertyType::Raster: //NOT PRESENTABLE IN PROPERTY GRID
-            $tStr = "Raster";
-            break;
-    }
-    //FB::log("$propName ($tStr) = $val");
-    return $val;
-}
-
-/* retrieve the property mappings for a layer */
-function GetLayerPropertyMappings($resourceService, $layer) {
-    $mappings = array();
-    $byteReader = $resourceService->GetResourceContent($layer->GetLayerDefinition());
-    $xmldoc = DOMDocument::loadXML(ByteReaderToString($byteReader));
-    $mappingNodeList = $xmldoc->getElementsByTagName('PropertyMapping');
-    for ($i=0; $i<$mappingNodeList->length; $i++) {
-        $mapping = $mappingNodeList->item($i);
-        $nameElt = $mapping->getElementsByTagName('Name');
-        $name = $nameElt->item(0)->nodeValue;
-        $valueElt = $mapping->getElementsByTagName('Value');
-        $value = $valueElt->item(0)->nodeValue;
-        $mappings[$name] = $value;
-    }
-    return $mappings;
-}
-
-function ByteReaderToString($byteReader)
-{
-    return $byteReader->ToString();
-}
-
-function printDateTime($mgDateTime)
-{
-   $dayToday = $mgDateTime->GetDay();
-   $month = $mgDateTime->GetMonth();
-   $year = $mgDateTime->GetYear();
-   return $dayToday.".".$month.".".$year;
-}
-
-function GetParameters($params)
-{
-    global $mapName, $sessionId, $locale;
-
-    $mapName = $params['MAPNAME'];
-    $sessionId = $params['SESSION'];
-    $locale = $params['LOCALE'];
-}
-
-function JsonEscape($str)
-{
-    return str_replace("\\", "\\\\", EscapeForHtml($str));
-}
-
-function JsonifyError($msg, $st)
-{
-    /*
-    {
-        "Error" : {
-            "Message" : <exception-message>,
-            "StackTrace" : <exception-stack-trace>
-        }
-    }
-    */
-    $emsg = JsonEscape($msg);
-    $est = JsonEscape($st);
-    $json = "{\"Error\":{\"Message\":\"$emsg\",\"StackTrace\":\"$est\"}}";
-    return $json;
-}
-
-function UnescapeMagicQuotes($str)
-{
-    if(ini_get("magic_quotes_sybase") == "1")
-        return str_replace("''", "'", $str);
-    else if(get_magic_quotes_gpc() == "1")
-    {
-        //Unescape double quotes
-        $str = str_replace('\\"', '"', $str);
-
-        //remove additional backslash
-        return str_replace("\\", "", $str);
-    }
-    return $str;
-}
-
-function GetRequestParameters()
-{
-    if($_SERVER['REQUEST_METHOD'] == "POST")
-        GetParameters($_POST);
-    else
-        GetParameters($_GET);
-}
-
-?>

Modified: sandbox/jng/queryfeatures_v2/Web/src/mapviewerphp/mapframe.php
===================================================================
--- sandbox/jng/queryfeatures_v2/Web/src/mapviewerphp/mapframe.php	2013-05-08 12:10:26 UTC (rev 7481)
+++ sandbox/jng/queryfeatures_v2/Web/src/mapviewerphp/mapframe.php	2013-05-08 12:10:41 UTC (rev 7482)
@@ -146,7 +146,6 @@
                     $vpath . "setselection.php",
                     $showSlider? "true": "false",
                     $locale,
-                    $vpath . "getselectedfeatures.php",
                     $scaleCreationCode,
                     $selectionColor,
                     $mapImgFormat,



More information about the mapguide-commits mailing list