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 str_replace(
  32.                 '\\''/'preg_replace('/^root\/?/'''$_REQUEST['path'])
  33.             );
  34.         }
  35.         return '';        
  36.     }
  37.     
  38.     /**
  39.     * Retourne la liste de layer accèder par la query
  40.     * 
  41.     * @return ArrayObject 
  42.     */
  43.     public function getLayers()
  44.     {
  45.         $objArrayLayers new ArrayObject();
  46.         $strLayer $this->getLayer();
  47.         if ($strLayer != ""
  48.         {
  49.             $objArrayLayers->append($strLayer);
  50.         }
  51.         return $objArrayLayers;    
  52.     }
  53.  
  54.     /**
  55.     * Validate the 'layers' being accessed by the query.  Each layer must be
  56.     *     present in one of the specified resource datastore using a specified
  57.     *     service.
  58.     * 
  59.     * @param org_geoprisma_service_Service $pobjService        The service to
  60.     *                                                           use for
  61.     *                                                           validation.
  62.     *                                                           Defaults to
  63.     *                                                           the proxy
  64.     *                                                           service.
  65.     * @param ArrayObject                   $pobjArrayResources ArrayObject of
  66.     *                                                           resource objects.
  67.     *                                                           Defaults to the
  68.     *                                                           proxy resources.
  69.     * @param ArrayObject                   $pobjArrayLayers    ArrayObject of
  70.     *                                                           layers to
  71.     *                                                           validate.
  72.     *                                                           Defaults to the
  73.     *                                                           layers returned
  74.     *                                                           by the proxy
  75.     *                                                           'getLayers'
  76.     *                                                           method.
  77.     *
  78.     * @return void 
  79.     */
  80.     public function validateLayersFromRequest(
  81.         $pobjService=null,
  82.         $pobjArrayResources=null,
  83.         $pobjArrayLayers=null
  84.     {
  85.         $objService ($pobjService === null$this->getService($pobjService;
  86.         $objArrayResources ($pobjArrayResources === null$this->getResources($pobjArrayResources;
  87.         $objArrayLayers ($pobjArrayLayers === null$this->getLayers($pobjArrayLayers;
  88.  
  89.         $bAllAuthorized true;
  90.         foreach ($objArrayLayers as $strLayer
  91.         {
  92.             $bIsAuthorized false;
  93.             foreach ($objArrayResources as $objResource
  94.             {
  95.                 $objDatastore $objResource->getDatastore($objService);
  96.                 if (self::isAuthorizedLayer($objDatastore$strLayer)) 
  97.                 {
  98.                     $bIsAuthorized true;
  99.                     break;
  100.                 }
  101.             }
  102.             if (!$bIsAuthorized
  103.             {
  104.                 $bAllAuthorized false;
  105.                 break;
  106.             }
  107.         }
  108.  
  109.         if (!$bAllAuthorized
  110.         {
  111.             throw new Exception('Not Authorized by Datastore layer');    
  112.         }
  113.     }
  114.  
  115.  
  116.     /**
  117.     * Validate if the layer is accessible in this datastore.
  118.     * 
  119.     * @param org_geoprisma_datastore_Datastore $pobjDatastore Datastore
  120.     * @param String                            $pstrLayer     Layer name
  121.     *
  122.     * @return Boolean 
  123.     */
  124.     private static function isAuthorizedLayer($pobjDatastore$pstrLayer)
  125.     {
  126.         $objArrayDSLayers $pobjDatastore->getLayers();
  127.  
  128.         $bAuthorized false;
  129.         foreach ($objArrayDSLayers as $strDSLayer
  130.         {
  131.             if (substr($strDSLayer-1== '/'
  132.             {
  133.                 $strDSLayer substr($strDSLayer0-1);
  134.             }
  135.  
  136.             $objArrayDSPath explode('/'$strDSLayer);
  137.             $objArrayLayerPath explode('/'$pstrLayer);
  138.             $iNumDSPathNode count($objArrayDSPath);
  139.             $iNumLayerPathNode count($objArrayLayerPath);
  140.             $iNumPathNode min($iNumDSPathNode$iNumLayerPathNode);
  141.             for ($iIter=0$iIter<$iNumPathNode$iIter++
  142.             {
  143.                 if ($objArrayDSPath[$iIter!= $objArrayLayerPath[$iIter]
  144.                 {
  145.                     break;
  146.                 }
  147.  
  148.                 if (($iIter+1>= $iNumPathNode
  149.                 {
  150.                     $bAuthorized true;
  151.                 }
  152.             }
  153.  
  154.             if ($bAuthorized
  155.             {
  156.                 break;
  157.             }
  158.         }
  159.  
  160.         return $bAuthorized;
  161.     }
  162. }
  163.   
  164. ?>

Documentation generated on Mon, 20 Feb 2012 13:46:16 -0500 by phpDocumentor 1.4.1