protected function applyConfiguration($config)
{
// initial page properties (to be set when page runs)
$this->_properties = array_merge($this->_properties, $config->getProperties());
$this->getApplication()->getAuthorizationRules()->mergeWith($config->getRules());
$pagePath = $this->getRequestedPagePath();
// external configurations
foreach ($config->getExternalConfigurations() as $filePath => $params) {
list($configPagePath, $condition) = $params;
if ($condition !== true) {
$condition = $this->evaluateExpression($condition);
}
if ($condition) {
if (($path = Prado::getPathOfNamespace($filePath, Prado::getApplication()->getConfigurationFileExt())) === null || !is_file($path)) {
throw new TConfigurationException('pageservice_includefile_invalid', $filePath);
}
$c = new TPageConfiguration($pagePath);
$c->loadFromFile($path, $configPagePath);
$this->applyConfiguration($c);
}
}
}