Source for file MapWidget.php

Documentation is available at MapWidget.php

  1. <?php
  2. /**
  3. * Widget de type map
  4. *
  5. * PHP versions 5
  6. @category  PHP
  7. @package   GeoPrisma
  8. @author    Pascal Martin
  9. @copyright 2009, Boreal - Information Strategies
  10. @license   http://www.geoprisma.org/license BSD License
  11. @link      http://www.geoprisma.org
  12. */
  13.  
  14. /**
  15. * Widget de type map
  16. @category   PHP
  17. @package    GeoPrisma
  18. @subpackage Widget
  19. @author     Pascal Martin
  20. @license    http://www.geoprisma.org/license BSD License
  21. @link       http://www.geoprisma.org
  22. */  
  23. {
  24.     const MAP_WIDGET = 'map';
  25.     
  26.     private $m_objArrayLayer null;
  27.     
  28.     /**
  29.     * Construit un instance de org_geoprisma_widget_MapWidget
  30.     * 
  31.     * @param array &$pobjArray Config node
  32.     * 
  33.     * @return org_geoprisma_widget_MapWidget 
  34.     */
  35.     public function __construct(&$pobjArray
  36.     {
  37.         if (isset($pobjArray['id'])) 
  38.         {
  39.             $strName = (string)$pobjArray['id'];
  40.         }
  41.         else
  42.         {
  43.             $strName = (string)$pobjArray['name'];
  44.         }
  45.  
  46.         parent::__construct($strName);
  47.             
  48.         $this->loadOptions($pobjArray);
  49.         $this->loadLayer($pobjArray);
  50.     }
  51.  
  52.     /**
  53.     * Charge la liste des otions
  54.     * 
  55.     * @param array &$pobjArray Config array
  56.     * 
  57.     * @return void 
  58.     */
  59.     private function loadOptions(&$pobjArray)
  60.     {
  61.         $this->m_objArrayOptions = new ArrayObject();
  62.         //$objArrayOptions = $this->getConfigElements($pobjArray['options']);
  63.         $objArrayOptions $pobjArray['options'];
  64.  
  65.         foreach ($objArrayOptions as $strOption => $strValue
  66.         {
  67.             $this->m_objArrayOptions->append(
  68.                 new org_geoprisma_option_Option($strOption$strValue)
  69.             );
  70.         }
  71.     }
  72.     
  73.     /**
  74.     * Charge la liste des layers a partir de la configuration
  75.     * 
  76.     * @param array &$pobjArray Config node
  77.     * 
  78.     * @return void 
  79.     */
  80.     private function loadLayer(&$pobjArray)
  81.     {
  82.         $this->m_objArrayLayer new ArrayObject();
  83.         //$objArrayLayers = $this->getConfigElements($pobjArray['layers']);
  84.         $objArrayLayers $pobjArray['layers'];
  85.         
  86.         foreach ($objArrayLayers as $objArrayLayer
  87.         {
  88.             $this->m_objArrayLayer->append(
  89.                 new org_geoprisma_layer_Layer(
  90.                     new ArrayObject($objArrayLayer['resourcenames']),
  91.                     $objArrayLayer['servicetype'],
  92.                     $objArrayLayer['options']
  93.                 )
  94.             );
  95.         }
  96.     }
  97.     
  98.     /**
  99.     * Supprime les layer ou l'acl nous indique des droit insufissant
  100.     * 
  101.     * @return void 
  102.     */
  103.     private function removeLayerWithNoRight()
  104.     {
  105.         $objArrayLayer new ArrayObject()
  106.         $strAction $this->getAction();
  107.         
  108.         foreach ($this->m_objArrayLayer as $objLayer
  109.         {
  110.             $objArrayResources $objLayer->getResourceNames();
  111.            
  112.             $objArrayAuthorizedResources new ArrayObject();
  113.  
  114.             foreach ($objArrayResources as $strResource
  115.             {
  116.                 try
  117.                 {
  118.                     $objResource org_geoprisma_config_ConfigFactory::getConfig()->getResource(
  119.                         $strResource
  120.                     );
  121.                     $bIsAuthorized
  122.                         = org_geoprisma_acl_ACLFactory::getACL()->isAuthorized(
  123.                             $objResource$strAction
  124.                         );
  125.                     if ($bIsAuthorized
  126.                     {
  127.                         $objArrayAuthorizedResources->append($strResource);    
  128.                     }
  129.                 
  130.                 catch(org_geoprisma_exception_ResourceNotFoundException $objError)
  131.                 {
  132.                     continue;
  133.                 }
  134.             }
  135.  
  136.             if ($objArrayAuthorizedResources->count(0
  137.             {
  138.                 $objArrayLayer->append(
  139.                     new org_geoprisma_layer_Layer(
  140.                         $objArrayAuthorizedResources,
  141.                         $objLayer->getServiceType(),
  142.                         $objLayer->getOptions()
  143.                     )
  144.                 );
  145.             }
  146.         }
  147.         
  148.         $this->m_objArrayLayer $objArrayLayer;        
  149.     }
  150.     
  151.     /**
  152.     * Retourne le type du widget
  153.     * 
  154.     * @return string 
  155.     */
  156.     public function getType()
  157.     {
  158.         return self::MAP_WIDGET;   
  159.     }
  160.     
  161.     /**
  162.     *  Ajout le widget courant (this) dans le xml
  163.     * 
  164.     * @param DOMElement  &$pobjDomElementWidgets Noeud xml ou le widget doit
  165.     *                                             être ajouter
  166.     * @param DOMDocument &$pobjDomDocument       Document XMl ou le noeud xml
  167.     *                                             datastore est ajouter, utiliser
  168.     *                                             pour construire les noeuds
  169.     * 
  170.     * @return void 
  171.     */   
  172.     public function insertIntoXML(
  173.         DOMElement &$pobjDomElementWidgetsDOMDocument &$pobjDomDocument
  174.     {
  175.         $this->removeLayerWithNoRight();
  176.         $objArrayLayer $this->getLayers();
  177.         if ($objArrayLayer->count(0
  178.         {
  179.             $objDomElementWidget $pobjDomDocument->createElement('widget');
  180.             $pobjDomElementWidgets->appendChild($objDomElementWidget);    
  181.            
  182.             $objDomElementType $pobjDomDocument->createElement(
  183.                 'type'$this->getType()
  184.             );
  185.             $objDomElementName $pobjDomDocument->createElement(
  186.                 'name'$this->getName()
  187.             );
  188.             $objDomElementWidget->appendChild($objDomElementType);
  189.             $objDomElementWidget->appendChild($objDomElementName);       
  190.             
  191.             $objDomElementOptions $pobjDomDocument->createElement('options');
  192.             $objDomElementWidget->appendChild($objDomElementOptions);        
  193.             foreach ($this->getOptions(as $objOption
  194.             {
  195.                 $objOption->insertIntoXML(
  196.                     $objDomElementOptions$pobjDomDocument
  197.                 );
  198.             }    
  199.             
  200.             $objDomElementLayers $pobjDomDocument->createElement('layers')
  201.             $objDomElementWidget->appendChild($objDomElementLayers);
  202.             foreach ($this->getLayers(as $objLayer
  203.             {
  204.                 $objLayer->insertIntoXML(
  205.                     $objDomElementLayers$pobjDomDocument
  206.                 );       
  207.             }
  208.             
  209.             return $objDomElementWidget;
  210.         }
  211.         else
  212.         {
  213.             return null;   
  214.         }
  215.     }
  216.     
  217.     /**
  218.     * Retourne la liste de layer qui peuvent être afficher apres un filtre par l'acl
  219.     * 
  220.     * @return ArrayObject 
  221.     */
  222.     private function getLayers()
  223.     {
  224.         $this->removeLayerWithNoRight();
  225.         return $this->m_objArrayLayer;        
  226.     }
  227.     
  228.     /**
  229.     * Retourne une liste de nom de ressource utiliser par ce widget
  230.     * 
  231.     * @return ArrayObject of string
  232.     */
  233.     public function getResources()
  234.     {
  235.         $this->removeLayerWithNoRight()
  236.         $objArrayResource new ArrayObject();
  237.         $objArrayLayer $this->getLayers();
  238.         foreach ($this->m_objArrayLayer as $objLayer
  239.         {
  240.             $objArrayResourceNames $objLayer->getResourceNames();
  241.             foreach ($objArrayResourceNames as $strResourceName
  242.             {
  243.                 if (!in_array($strResourceName(array)$objArrayResource)) 
  244.                 {
  245.                     $objArrayResource->append($strResourceName);
  246.                 }                
  247.             }
  248.         }
  249.         return $objArrayResource;
  250.     }
  251.     
  252.     /**
  253.     * Retourne une liste d'information sur les datastores utilisé
  254.     * 
  255.     * @return ArrayObject of array('resourcename' => ?, 'datastorename' => ?,
  256.     *                      'servicename' => ? )
  257.     */
  258.     public function getDatastores()
  259.     {
  260.         return self::getDatastoresFromResources($this->getResources());
  261.     }
  262. }
  263.   
  264. ?>

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