protected function loadParameters($config)
{
$parameters = array();
if (is_array($config)) {
foreach ($config as $id => $parameter) {
if (is_array($parameter) && isset($parameter['class'])) {
$properties = isset($parameter['properties']) ? $parameter['properties'] : array();
$parameters[$id] = array($parameter['class'], $properties);
} else {
$parameters[$id] = $parameter;
}
}
} else {
if ($config instanceof TXmlElement) {
foreach ($config->getElementsByTagName('parameter') as $node) {
$properties = $node->getAttributes();
if (($id = $properties->remove('id')) === null) {
throw new TConfigurationException('parametermodule_parameterid_required');
}
if (($type = $properties->remove('class')) === null) {
if (($value = $properties->remove('value')) === null) {
$parameters[$id] = $node;
} else {
$parameters[$id] = $value;
}
} else {
$parameters[$id] = array($type, $properties->toArray());
}
}
}
}
$appParams = $this->getApplication()->getParameters();
foreach ($parameters as $id => $parameter) {
if (is_array($parameter)) {
$component = Prado::createComponent($parameter[0]);
foreach ($parameter[1] as $name => $value) {
$component->setSubProperty($name, $value);
}
$appParams->add($id, $component);
} else {
$appParams->add($id, $parameter);
}
}
}