private function postProcessComplexSetting($setting, $sa, ContainerBuilder $container) { $configResolver = $container->get('ezpublish.config.resolver.core'); if (!$configResolver->hasParameter($setting, null, $sa)) { return false; } $settingValue = $configResolver->getParameter($setting, null, $sa); if (!$this->complexSettingParser->containsDynamicSettings($settingValue)) { return false; } // we kind of need to process this as well, don't we ? if ($this->complexSettingParser->isDynamicSetting($settingValue)) { $parts = $this->complexSettingParser->parseDynamicSetting($settingValue); if (!isset($parts['namespace'])) { $parts['namespace'] = 'ezsettings'; } if (!isset($parts['scope'])) { $parts['scope'] = $sa; } return $configResolver->getParameter($parts['param'], null, $sa); } $value = $settingValue; foreach ($this->complexSettingParser->parseComplexSetting($settingValue) as $dynamicSetting) { $parts = $this->complexSettingParser->parseDynamicSetting($dynamicSetting); if (!isset($parts['namespace'])) { $parts['namespace'] = 'ezsettings'; } if (!isset($parts['scope'])) { $parts['scope'] = $sa; } $dynamicSettingValue = $configResolver->getParameter($parts['param'], $parts['namespace'], $parts['scope']); $value = str_replace($dynamicSetting, $dynamicSettingValue, $value); } return $value; }
public function process(ContainerBuilder $container) { foreach ($container->getDefinitions() as $serviceId => $definition) { $arguments = $definition->getArguments(); foreach ($arguments as $argumentIndex => $argumentValue) { if (!is_string($argumentValue)) { continue; } if (!$this->parser->containsDynamicSettings($argumentValue)) { continue; } if ($this->parser->isDynamicSetting($argumentValue)) { continue; } $arguments[$argumentIndex] = $this->createComplexSettingExpression($argumentValue, $this->parser->parseComplexSetting($argumentValue)); } $definition->setArguments($arguments); } }
public function process(ContainerBuilder $container) { foreach ($container->getDefinitions() as $serviceId => $definition) { $arguments = $definition->getArguments(); foreach ($arguments as $argumentIndex => $argumentValue) { if (!is_string($argumentValue)) { continue; } if (!$this->parser->containsDynamicSettings($argumentValue)) { continue; } if ($this->parser->isDynamicSetting($argumentValue)) { continue; } $factoryServiceId = sprintf('%s.%s_%d', $serviceId, '__complex_setting_factory', $argumentIndex); $container->setDefinition($factoryServiceId, $this->createFactoryDefinition($argumentValue, $this->parser->parseComplexSetting($argumentValue))); $arguments[$argumentIndex] = new Reference($factoryServiceId); $definition->setArguments($arguments); } } }