Source for file Config.php
Documentation is available at Config.php
* Interface pour les config, récupération de la config
* @copyright 2009, Boreal - Information Strategies
* @license http://www.geoprisma.org/license BSD License
* @link http://www.geoprisma.org
* Interface pour les config, récupération de la config
* Return DOMDocument with the config inside ready to passe to xsltprocessor
$objDomDocument =
new DOMDocument();
$objDomElementRoot =
$objDomDocument->createElement('geoprisma');
$objDomDocument->appendChild($objDomElementRoot);
// ------------------------------------
// ------------------------------------
$objDomElementServices =
$objDomDocument->createElement('services');
$objDomElementRoot->appendChild($objDomElementServices);
$objService->insertIntoXML($objDomElementServices, $objDomDocument);
// ------------------------------------
// ------------------------------------
$objDomElementDatastores =
$objDomDocument->createElement('datastores');
$objDomElementRoot->appendChild($objDomElementDatastores);
$objDatastore->insertIntoXML($objDomElementDatastores, $objDomDocument);
// ------------------------------------
// ------------------------------------
$objArrayWidgetTypeUsed =
array();
$objArrayWidget =
$this->getAuthorizedWidget();
$objDomElementWidgets =
$objDomDocument->createElement('widgets');
$objDomElementRoot->appendChild($objDomElementWidgets);
foreach ($objArrayWidget as $objArrayWigetInfo)
$objDomElementWidget =
$objArrayWigetInfo['widget']->insertIntoXML($objDomElementWidgets, $objDomDocument);
if ($objDomElementWidget !==
null)
if (!in_array($objArrayWigetInfo['widget']->getType(), $objArrayWidgetTypeUsed))
$objArrayWidgetTypeUsed[] =
$objArrayWigetInfo['widget']->getType();
$objDomElementDatastores =
$objDomDocument->createElement('datastores');
$objDomElementWidget->appendChild($objDomElementDatastores);
foreach ($objArrayWigetInfo['datastores'] as $objArrayDatastoreInfo)
$objDomElementDatastore =
$objDomDocument->createElement('datastore');
$objDomElementDatastores->appendChild($objDomElementDatastore);
$objDomElementResourceName =
$objDomDocument->createElement('resourcename', $objArrayDatastoreInfo['resourcename']);
$objDomElementDatastoreName =
$objDomDocument->createElement('datastorename', $objArrayDatastoreInfo['datastorename']);
$objDomElementServiceName =
$objDomDocument->createElement('servicename', $objArrayDatastoreInfo['servicename']);
$objDomElementDatastore->appendChild($objDomElementResourceName);
$objDomElementDatastore->appendChild($objDomElementDatastoreName);
$objDomElementDatastore->appendChild($objDomElementServiceName);
$objDomElementResources =
$objDomDocument->createElement('resources');
$objDomElementWidget->appendChild($objDomElementResources);
foreach ($objArrayWigetInfo['resources'] as $strRessource)
$objDomElementResource =
$objDomDocument->createElement('resource', $strRessource);
$objDomElementResources->appendChild($objDomElementResource);
// ------------------------------------
// Ajout des widgets type
// ------------------------------------
$objDomElementWidgetTypeUsed =
$objDomDocument->createElement('widgettypesused');
$objDomElementRoot->appendChild($objDomElementWidgetTypeUsed);
foreach ($objArrayWidgetTypeUsed as $strWidgetType)
$objDomElementWidget =
$objDomDocument->createElement('widget', $strWidgetType);
$objDomElementWidgetTypeUsed->appendChild($objDomElementWidget);
// ------------------------------------
// ------------------------------------
$objDomElementResources =
$objDomDocument->createElement('resources');
$objDomElementRoot->appendChild($objDomElementResources);
$objResource->insertIntoXML($objDomElementResources, $objDomDocument);
* Retourne la liste des widget et des datastore acessible
private function getAuthorizedWidget()
$objArrayWidget =
array();
$objArrayMapWidget =
array();
$objArrayMapFishLayerTreeWidget =
array();
$objArrayOtherWidget =
array();
// -----------------------------------------------------
// Widgets that don't need to be linked to resources
// are automatically added.
// -----------------------------------------------------
$objAuthorizedWidget =
array(
'datastores' => (array)
$objWidget->getDatastores(),
'resources' => (array)
$objWidget->getResources()
$objArrayMapWidget[$objWidget->getName()]
$objAuthorizedWidget =
array(
'datastores' => (array)
$objWidget->getDatastores(),
'resources' => (array)
$objWidget->getResources()
$objArrayMapFishLayerTreeWidget[$objWidget->getName()]
=
$objWidget->getMandatoryResourceOptionList();
if ($objArrayResourceOptions ===
null
$objAuthorizedWidget =
array(
'datastores' => (array)
$objWidget->getDatastores(),
'resources' => (array)
$objWidget->getResources()
$objArrayOtherWidget[$objWidget->getName()] =
$objAuthorizedWidget;
foreach ($objArrayMapWidget as $objMapWidget)
$objArrayWidget[$objMapWidget['widget']->getName()] =
$objMapWidget;
foreach ($objArrayMapFishLayerTreeWidget as $objMapFishLayerTreeWidget)
$objArrayWidget[$objMapFishLayerTreeWidget['widget']->getName()] =
$objMapFishLayerTreeWidget;
foreach ($objArrayOtherWidget as $objOtherWidget)
$objArrayWidget[$objOtherWidget['widget']->getName()] =
$objOtherWidget;
// -----------------------------------------------------
// Adding widget going throught resources
// -----------------------------------------------------
$objArrayLayerWidget =
array();
$objArrayOtherWidget =
array();
foreach ($objResource->getWidgets() as $objWidget)
// map and mapfishlayertree widgets have already been processed
// earlier (see above), so in case they have been linked to
// resources, simply skip them.
$strRessource =
$objResource->getName();
$strAction =
$objWidget->getAction();
if ($objWidget->getType() ==
"layer")
$objArrayLayerWidget[$objWidget->getName()] =
array(
if (!in_array($objResource->getName(), $objArrayLayerWidget[$objWidget->getName()]['resources']))
$objArrayLayerWidget[$objWidget->getName()]['resources'][] =
$objResource->getName();
foreach ($objResource->getDatastores() as $objDatastore)
$objArrayLayerWidget[$objWidget->getName()]['datastores'][] =
array(
'resourcename' =>
$objResource->getName(),
'datastorename' =>
$objDatastore->getName(),
'servicename' =>
$objDatastore->getService()->getName()
$objArrayOtherWidget[$objWidget->getName()] =
array(
if (!in_array($objResource->getName(), $objArrayOtherWidget[$objWidget->getName()]['resources']))
$objArrayOtherWidget[$objWidget->getName()]['resources'][] =
$objResource->getName();
foreach ($objResource->getDatastores() as $objDatastore)
$objArrayOtherWidget[$objWidget->getName()]['datastores'][] =
array(
'resourcename' =>
$objResource->getName(),
'datastorename' =>
$objDatastore->getName(),
'servicename' =>
$objDatastore->getService()->getName()
} // end if not layer widget
// add layer widgets, then the others
foreach ($objArrayLayerWidget as $objLayerWidget)
$objArrayWidget[$objLayerWidget['widget']->getName()] =
$objLayerWidget;
foreach ($objArrayOtherWidget as $objOtherWidget)
$objArrayWidget[$objOtherWidget['widget']->getName()] =
$objOtherWidget;
* Retourne un object service
* @param string $pstrServiceName Service Name
* @return org_geoprisma_service_Service
abstract public function getService($pstrServiceName);
* Retourne la liste de service disponible service
* @return ArrayObject of org_geoprisma_service_Service
* Retorrne un object layout
* @param string $pstrLayoutName Layout name
* @return org_geoprisma_layout_Layout
abstract public function getLayout($pstrLayoutName);
* Retorrne la liste des layouts disponible
* @return ArrayObject of org_geoprisma_layout_Layout
* Retorrne un object datastore
* @param string $pstrDatastoreName Datastore name
* @return org_geoprisma_datastore_Datastore
* Retorrne la liste des datastores disponible
* @return ArrayObject of org_geoprisma_datastore_Datastore
* Retorrne un object widget
* @param string $pstrWidgetName Widget name
* @return org_geoprisma_widget_Widget
abstract public function getWidget($pstrWidgetName);
* Retorrne la liste des widget disponible
* @return ArrayObject of org_geoprisma_widget_Widget
* Retorrne un object accessfilter
* @param string $pstrAccessFilterName AccessFilter name
* @return org_geoprisma_accessfilter_AccessFilter
* Retorrne la liste des accessfilter disponible
* @return ArrayObject of org_geoprisma_accessfilter_AccessFilter
* Retorrne un object resource
* @param string $pstrResourceName Resource name
* @return org_geoprisma_resource_Resource
abstract public function getResource($pstrResourceName);
* Retorrne la liste des resources disponible
* @return ArrayObject of org_geoprisma_resource_Resource
* Get the process names the config supports.
* Checks if whether the given url is a access controled service or not.
* @param string $pstrURL url to check
* Checks if whether the given url is a proxy url or not.
* @param string $pstrURL url to check
$objURL['path'] =
self::canonicalize($objURL['path']);
for ($iIter=
0, $iLen=
count($objArrayProxyURLs); $iIter<
$iLen; $iIter++
)
if (!isset
($objArrayProxyURLs[$iIter]['host']))
if (isset
($_SERVER['HTTP_X_FORWARDED_HOST']))
$_SERVER['HTTP_X_FORWARDED_HOST']
$objArrayProxyURLs[$iIter]['host'] =
$objArrayForwarded[0];
$objArrayProxyURLs[$iIter]['host'] =
$_SERVER['HTTP_HOST'];
if ($objArrayProxyURLs[$iIter]['host'] ===
$objURL['host'])
$objProxyURL =
$objArrayProxyURLs[$iIter];
if ($objProxyURL &&
$objArrayProxyURLs[$iIter]['path'] ===
$objURL['path'])
* Returns an array of parsed proxy urls. Throws an error if no proxy would
for ($iIter=
count($objArrayProxyURLs)-
1; $iIter>=
0; $iIter--
)
if (!$objArrayProxyURLs[$iIter])
$objArrayProxyURLs[$iIter]
if (count($objArrayProxyURLs) ==
0)
throw
new Exception("No proxy URL is set in config.");
return $objArrayProxyURLs;
* Returns an array of canonicalized proxy urls.
for ($iIter=
0, $iLen=
count($objArrayProxyURLs); $iIter<
$iLen; $iIter++
)
if (strpos($objArrayProxyURLs[$iIter]['path'], "/") !==
0)
$objArrayProxyURLs[$iIter]['path']
=
dirname($_SERVER['SCRIPT_NAME']).
"/".
$objArrayProxyURLs[$iIter]['path'];
$objArrayProxyURLs[$iIter]['path'] =
self::canonicalize(
$objArrayProxyURLs[$iIter]['path']
return $objArrayProxyURLs;
* Returns a canonicalized version of a path string.
* @param string $pstrPath path string to canonicalize.
$objArrayPaths =
explode('/', $pstrPath);
foreach ($objArrayKeys AS $iKeyPos =>
$strKeyElement)
$strKeyElement -
($iKeyPos *
2 +
1), 2
$strPath =
implode('/', $objArrayPaths);
* Return whether the unbound widget (not linked to a resource) is exclusive
* or not, i.e. its name is inside the exclusive list (if set) and is not
* @param org_geoprisma_widget_Widget $pobjWidget Widget
if (!isset
($objArrayNames) ||
!is_array($objArrayNames) ||
count($objArrayNames) ===
0 )
else if ($pobjWidget->getType() ==
"mappanel" )
else if (array_search($pobjWidget->getName(), $objArrayNames) !==
false)
Documentation generated on Mon, 20 Feb 2012 13:46:09 -0500 by phpDocumentor 1.4.1