* * This source file is subject to the MIT license that is bundled * with this source code in the file LICENSE. */ /** * ZendExtension is an extension for the Zend Framework libraries. * * @author Fabien Potencier */ class ZendExtension extends Extension { /** * Loads the Zend Framework configuration. * * Usage example: * * * * * * @param array $config An array of configuration settings * @param ContainerBuilder $container A ContainerBuilder instance */ public function configLoad($config, ContainerBuilder $container) { if (isset($config['logger'])) { $this->registerLoggerConfiguration($config, $container); } if (isset($config['i18n'])) { $this->registerI18nConfiguration($config, $container); } } /** * Loads the logger configuration. * * Usage example: * * * * @param array $config An array of configuration settings * @param ContainerBuilder $container A ContainerBuilder instance */ protected function registerLoggerConfiguration($config, ContainerBuilder $container) { $config = $config['logger']; if (!$container->hasDefinition('zend.logger')) { $loader = new XmlFileLoader($container, __DIR__.'/../Resources/config'); $loader->load('logger.xml'); $container->setAlias('logger', 'zend.logger'); } if (isset($config['priority'])) { $container->setParameter('zend.logger.priority', is_int($config['priority']) ? $config['priority'] : constant('\\Zend\\Log\\Logger::'.strtoupper($config['priority']))); } if (isset($config['path'])) { $container->setParameter('zend.logger.path', $config['path']); } if (isset($config['log_errors'])) { $definition = $container->findDefinition('zend.logger'); if (false === $config['log_errors'] && $definition->hasMethodCall('registerErrorHandler')) { $container->findDefinition('zend.logger')->removeMethodCall('registerErrorHandler'); } else { $container->findDefinition('zend.logger')->addMethodCall('registerErrorHandler'); } } } /** * Loads the i18n configuration. * * Usage example: * * * * @param array $config An array of configuration settings * @param ContainerBuilder $container A ContainerBuilder instance */ protected function registerI18nConfiguration($config, ContainerBuilder $container) { $config = $config['i18n']; if (!$container->hasDefinition('zend.i18n')) { $loader = new XmlFileLoader($container, __DIR__.'/../Resources/config'); $loader->load('i18n.xml'); $container->setAlias('i18n', 'zend.i18n'); } if (isset($config['locale'])) { $container->setParameter('zend.translator.locale', $config['locale']); } if (isset($config['adapter'])) { $container->setParameter('zend.translator.adapter', constant($config['adapter'])); } if (isset($config['translations']) && is_array($config['translations'])) { foreach ($config['translations'] as $locale => $catalogue) { if ($locale == $container->getParameter('zend.translator.locale')) { $container->setParameter('zend.translator.catalogue', $catalogue); } $container->findDefinition('zend.translator')->addMethodCall('addTranslation', array($catalogue, $locale)); } } } /** * Returns the base path for the XSD files. * * @return string The XSD base path */ public function getXsdValidationBasePath() { return __DIR__.'/../Resources/config/schema'; } public function getNamespace() { return 'http://www.symfony-project.org/schema/dic/zend'; } public function getAlias() { return 'zend'; } }