Source for file FileProxy.php

Documentation is available at FileProxy.php

  1. <?php
  2. /**
  3. * Class Proxy de type feature server
  4. *
  5. * PHP versions 5
  6. @category  PHP
  7. @package   GeoPrisma
  8. @author    Julien-Samuel Lacroix
  9. @copyright 2010, Mapgears inc
  10. @license   http://www.geoprisma.org/license BSD License
  11. @link      http://www.geoprisma.org
  12. */
  13.  
  14. /**
  15. * Class Proxy de type feature server
  16. @category   PHP
  17. @package    GeoPrisma
  18. @subpackage Proxy
  19. @author     Julien-Samuel Lacroix
  20. */   
  21. {
  22.     /**
  23.     * Return Layer
  24.     * 
  25.     * @return string 
  26.     */
  27.     public function getLayer()
  28.     {
  29.         if (isset($_REQUEST['path']&& $_REQUEST['path']
  30.         {
  31.             return preg_replace('/^root\/?/'''$_REQUEST['path']);
  32.         }
  33.         return '';        
  34.     }
  35.     
  36.     /**
  37.     * Retourne la liste de layer accèder par la query
  38.     * 
  39.     * @return ArrayObject 
  40.     */
  41.     public function getLayers()
  42.     {
  43.         $objArrayLayers new ArrayObject();
  44.         $strLayer $this->getLayer();
  45.         if ($strLayer != ""
  46.         {
  47.             $objArrayLayers->append($strLayer);
  48.         }
  49.         return $objArrayLayers;    
  50.     }
  51.  
  52.     /**
  53.     * Validate the 'layers' being accessed by the query.  Each layer must be
  54.     *     present in one of the specified resource datastore using a specified
  55.     *     service.
  56.     * 
  57.     * @param org_geoprisma_service_Service $pobjService        The service to
  58.     *                                                           use for
  59.     *                                                           validation.
  60.     *                                                           Defaults to
  61.     *                                                           the proxy
  62.     *                                                           service.
  63.     * @param ArrayObject                   $pobjArrayResources ArrayObject of
  64.     *                                                           resource objects.
  65.     *                                                           Defaults to the
  66.     *                                                           proxy resources.
  67.     * @param ArrayObject                   $pobjArrayLayers    ArrayObject of
  68.     *                                                           layers to
  69.     *                                                           validate.
  70.     *                                                           Defaults to the
  71.     *                                                           layers returned
  72.     *                                                           by the proxy
  73.     *                                                           'getLayers'
  74.     *                                                           method.
  75.     *
  76.     * @return void 
  77.     */
  78.     public function validateLayersFromRequest(
  79.         $pobjService=null,
  80.         $pobjArrayResources=null,
  81.         $pobjArrayLayers=null
  82.     {
  83.         $objService ($pobjService === null$this->getService($pobjService;
  84.         $objArrayResources ($pobjArrayResources === null$this->getResources($pobjArrayResources;
  85.         $objArrayLayers ($pobjArrayLayers === null$this->getLayers($pobjArrayLayers;
  86.  
  87.         $bAllAuthorized true;
  88.         foreach ($objArrayLayers as $strLayer
  89.         {
  90.             $bIsAuthorized false;
  91.             foreach ($objArrayResources as $objResource
  92.             {
  93.                 $objDatastore $objResource->getDatastore($objService);
  94.                 if (self::isAuthorizedLayer($objDatastore$strLayer)) 
  95.                 {
  96.                     $bIsAuthorized true;
  97.                     break;
  98.                 }
  99.             }
  100.             if (!$bIsAuthorized
  101.             {
  102.                 $bAllAuthorized false;
  103.                 break;
  104.             }
  105.         }
  106.  
  107.         if (!$bAllAuthorized
  108.         {
  109.             throw new Exception('Not Authorized by Datastore layer');    
  110.         }
  111.     }
  112.  
  113.  
  114.     /**
  115.     * Validate if the layer is accessible in this datastore.
  116.     * 
  117.     * @param org_geoprisma_datastore_Datastore $pobjDatastore Datastore
  118.     * @param String                            $pstrLayer     Layer name
  119.     *
  120.     * @return Boolean 
  121.     */
  122.     private static function isAuthorizedLayer($pobjDatastore$pstrLayer)
  123.     {
  124.         $objArrayDSLayers $pobjDatastore->getLayers();
  125.  
  126.         $bAuthorized false;
  127.         foreach ($objArrayDSLayers as $strDSLayer
  128.         {
  129.             if (substr($strDSLayer-1== '/'
  130.             {
  131.                 $strDSLayer substr($strDSLayer0-1);
  132.             }
  133.  
  134.             $objArrayDSPath explode('/'$strDSLayer);
  135.             $objArrayLayerPath explode('/'$pstrLayer);
  136.             $iNumDSPathNode count($objArrayDSPath);
  137.             $iNumLayerPathNode count($objArrayLayerPath);
  138.             $iNumPathNode min($iNumDSPathNode$iNumLayerPathNode);
  139.             for ($iIter=0$iIter<$iNumPathNode$iIter++
  140.             {
  141.                 if ($objArrayDSPath[$iIter!= $objArrayLayerPath[$iIter]
  142.                 {
  143.                     break;
  144.                 }
  145.  
  146.                 if (($iIter+1>= $iNumPathNode
  147.                 {
  148.                     $bAuthorized true;
  149.                 }
  150.             }
  151.  
  152.             if ($bAuthorized
  153.             {
  154.                 break;
  155.             }
  156.         }
  157.  
  158.         return $bAuthorized;
  159.     }
  160. }
  161.   
  162. ?>

Documentation generated on Thu, 19 Jan 2012 00:08:32 +0400 by phpDocumentor 1.4.1