Exemplo n.º 1
0
 public function barLoad(array $config, ContainerBuilder $configuration)
 {
     $configuration->setDefinition('project.service.bar', new Definition('FooClass'));
     $configuration->setParameter('project.parameter.bar', isset($config['foo']) ? $config['foo'] : 'foobar');
     $configuration->setDefinition('project.service.foo', new Definition('FooClass'));
     $configuration->setParameter('project.parameter.foo', isset($config['foo']) ? $config['foo'] : 'foobar');
     return $configuration;
 }
Exemplo n.º 2
0
 /**
  * Loads the Swift Mailer configuration.
  *
  * Usage example:
  *
  *      <swift:mailer transport="gmail" delivery_strategy="spool">
  *        <swift:username>fabien</swift:username>
  *        <swift:password>xxxxx</swift:password>
  *        <swift:spool path="/path/to/spool/" />
  *      </swift:mailer>
  *
  * @param array                                                        $config        An array of configuration settings
  * @param \Symfony\Components\DependencyInjection\ContainerBuilder $container A ContainerBuilder instance
  */
 public function mailerLoad($config, ContainerBuilder $container)
 {
     if (!$container->hasDefinition('swiftmailer.mailer')) {
         $loader = new XmlFileLoader($container, __DIR__ . '/../Resources/config');
         $loader->load($this->resources['mailer']);
         $container->setAlias('mailer', 'swiftmailer.mailer');
     }
     $r = new \ReflectionClass('Swift_Message');
     $container->setParameter('swiftmailer.base_dir', dirname(dirname(dirname($r->getFilename()))));
     $transport = $container->getParameter('swiftmailer.transport.name');
     if (array_key_exists('transport', $config)) {
         if (null === $config['transport']) {
             $transport = 'null';
         } elseif ('gmail' === $config['transport']) {
             $config['encryption'] = 'ssl';
             $config['auth_mode'] = 'login';
             $config['host'] = 'smtp.gmail.com';
             $transport = 'smtp';
         } else {
             $transport = $config['transport'];
         }
         $container->setParameter('swiftmailer.transport.name', $transport);
     }
     $container->setAlias('swiftmailer.transport', 'swiftmailer.transport.' . $transport);
     if (isset($config['encryption']) && 'ssl' === $config['encryption'] && !isset($config['port'])) {
         $config['port'] = 465;
     }
     foreach (array('encryption', 'port', 'host', 'username', 'password', 'auth_mode') as $key) {
         if (isset($config[$key])) {
             $container->setParameter('swiftmailer.transport.' . $transport . '.' . $key, $config[$key]);
         }
     }
     // spool?
     if (isset($config['spool'])) {
         $type = isset($config['type']) ? $config['type'] : 'file';
         $container->setAlias('swiftmailer.transport.real', 'swiftmailer.transport.' . $transport);
         $container->setAlias('swiftmailer.transport', 'swiftmailer.transport.spool');
         $container->setAlias('swiftmailer.spool', 'swiftmailer.spool.' . $type);
         foreach (array('path') as $key) {
             if (isset($config['spool'][$key])) {
                 $container->setParameter('swiftmailer.spool.' . $type . '.' . $key, $config['spool'][$key]);
             }
         }
     }
     if (isset($config['delivery_address'])) {
         $container->setParameter('swiftmailer.single_address', $config['delivery_address']);
         $container->findDefinition('swiftmailer.transport')->addMethodCall('registerPlugin', array(new Reference('swiftmailer.plugin.redirecting')));
     }
     if (isset($config['disable_delivery']) && $config['disable_delivery']) {
         $container->findDefinition('swiftmailer.transport')->addMethodCall('registerPlugin', array(new Reference('swiftmailer.plugin.blackhole')));
     }
 }
Exemplo n.º 3
0
 /**
  * Loads the default configuration.
  *
  * @param array $config An array of configuration settings
  * @param ContainerBuilder $container A ContainerBuilder instance
  */
 protected function loadDefaults(array $config, ContainerBuilder $container)
 {
     // Load DoctrineMongoDBBundle/Resources/config/mongodb.xml
     $loader = new XmlFileLoader($container, __DIR__ . '/../Resources/config');
     $loader->load($this->resources['mongodb']);
     // Allow these application configuration options to override the defaults
     $options = array('default_document_manager', 'default_connection', 'cache_driver', 'metadata_cache_driver', 'proxy_namespace', 'auto_generate_proxy_classes');
     foreach ($options as $key) {
         if (isset($config[$key])) {
             $container->setParameter('doctrine.odm.mongodb.' . $key, $config[$key]);
         }
     }
     $container->setParameter('doctrine.odm.mongodb.mapping_dirs', $this->findBundleSubpaths('Resources/config/doctrine/metadata', $container));
     $container->setParameter('doctrine.odm.mongodb.document_dirs', $this->findBundleSubpaths('Document', $container));
 }
Exemplo n.º 4
0
 /**
  * Loads the Twig configuration.
  *
  * @param array                                                        $config        An array of configuration settings
  * @param \Symfony\Components\DependencyInjection\ContainerBuilder $container A ContainerBuilder instance
  */
 public function configLoad($config, ContainerBuilder $container)
 {
     if (!$container->hasDefinition('twig')) {
         $loader = new XmlFileLoader($container, __DIR__ . '/../Resources/config');
         $loader->load('twig.xml');
     }
     $container->setParameter('twig.options', array_replace($container->getParameter('twig.options'), $config));
 }
Exemplo n.º 5
0
 /**
  * @covers Symfony\Components\DependencyInjection\Loader\ClosureLoader::load
  */
 public function testLoad()
 {
     $loader = new ClosureLoader($container = new ContainerBuilder());
     $loader->load(function ($container) {
         $container->setParameter('foo', 'foo');
     });
     $this->assertEquals('foo', $container->getParameter('foo'), '->load() loads a \\Closure resource');
 }
Exemplo n.º 6
0
 public function slideshareLoad($config, ContainerBuilder $container)
 {
     if (!$container->hasDefinition('slideshare')) {
         $loader = new XmlFileLoader($container, __DIR__ . '/../Resources/config');
         $loader->load($this->resources['slideshare']);
     }
     if (isset($config['url'])) {
         $container->setParameter('news.slideshare.url', $config['url']);
     }
     if (isset($config['api_key'])) {
         $container->setParameter('news.slideshare.api_key', $config['api_key']);
     }
     if (isset($config['api_secret'])) {
         $container->setParameter('news.slideshare.api_secret', $config['api_secret']);
     }
     if (isset($config['search_query'])) {
         $container->setParameter('news.slideshare.search_query', $config['search_query']);
     }
 }
Exemplo n.º 7
0
 public function configLoad($config, ContainerBuilder $container)
 {
     if (isset($config['charset'])) {
         $container->setParameter('kernel.charset', $config['charset']);
     }
     if (!array_key_exists('compilation', $config)) {
         $classes = array('Symfony\\Components\\Routing\\Router', 'Symfony\\Components\\Routing\\RouterInterface', 'Symfony\\Components\\EventDispatcher\\Event', 'Symfony\\Components\\Routing\\Matcher\\UrlMatcherInterface', 'Symfony\\Components\\Routing\\Matcher\\UrlMatcher', 'Symfony\\Components\\HttpKernel\\HttpKernel', 'Symfony\\Components\\HttpFoundation\\Request', 'Symfony\\Components\\HttpFoundation\\Response', 'Symfony\\Components\\HttpKernel\\ResponseListener', 'Symfony\\Components\\HttpKernel\\Controller\\ControllerLoaderListener', 'Symfony\\Components\\Templating\\Loader\\LoaderInterface', 'Symfony\\Components\\Templating\\Loader\\Loader', 'Symfony\\Components\\Templating\\Loader\\FilesystemLoader', 'Symfony\\Components\\Templating\\Engine', 'Symfony\\Components\\Templating\\Renderer\\RendererInterface', 'Symfony\\Components\\Templating\\Renderer\\Renderer', 'Symfony\\Components\\Templating\\Renderer\\PhpRenderer', 'Symfony\\Components\\Templating\\Storage\\Storage', 'Symfony\\Components\\Templating\\Storage\\FileStorage', 'Symfony\\Bundle\\FrameworkBundle\\RequestListener', 'Symfony\\Bundle\\FrameworkBundle\\Controller', 'Symfony\\Bundle\\FrameworkBundle\\Templating\\Engine');
     } else {
         $classes = array();
         foreach (explode("\n", $config['compilation']) as $class) {
             if ($class) {
                 $classes[] = trim($class);
             }
         }
     }
     $container->setParameter('kernel.compiled_classes', $classes);
     if (array_key_exists('error_handler_level', $config)) {
         $container->setParameter('error_handler.level', $config['error_handler_level']);
     }
     return $container;
 }
Exemplo n.º 8
0
 /**
  * Loads the i18n configuration.
  *
  * Usage example:
  *
  *      <zend:i18n locale="en" adapter="xliff" data="/path/to/messages.xml" />
  *
  * @param array $config An array of configuration settings
  * @param \Symfony\Components\DependencyInjection\ContainerBuilder $container A ContainerBuilder instance
  */
 public function i18nLoad($config, ContainerBuilder $container)
 {
     if (!$container->hasDefinition('zend.i18n')) {
         $loader = new XmlFileLoader($container, __DIR__ . '/../Resources/config');
         $loader->load($this->resources['i18n']);
         $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));
         }
     }
 }
Exemplo n.º 9
0
 /**
  * @covers Symfony\Components\DependencyInjection\Loader\DelegatingLoader::load
  */
 public function testLoad()
 {
     $container = new ContainerBuilder();
     $resolver = new LoaderResolver(array(new ClosureLoader($container)));
     $loader = new DelegatingLoader($resolver);
     $loader->load(function ($container) {
         $container->setParameter('foo', 'foo');
     });
     $this->assertEquals('foo', $container->getParameter('foo'), '->load() loads a resource using the loaders from the resolver');
     try {
         $loader->load('foo.foo');
         $this->fail('->load() throws an \\InvalidArgumentException if the resource cannot be loaded');
     } catch (\Exception $e) {
         $this->assertInstanceOf('\\InvalidArgumentException', $e, '->load() throws an \\InvalidArgumentException if the resource cannot be loaded');
     }
 }
Exemplo n.º 10
0
 /**
  * Loads the DBAL configuration.
  *
  * @param array                                                        $config        An array of configuration settings
  * @param \Symfony\Components\DependencyInjection\ContainerBuilder $container A ContainerBuilder instance
  */
 public function dbalLoad($config, ContainerBuilder $container)
 {
     if (!$container->hasDefinition('propel')) {
         $loader = new XmlFileLoader($container, __DIR__ . '/../Resources/config');
         $loader->load($this->resources['propel']);
     }
     $defaultConnection = array('driver' => 'mysql', 'user' => 'root', 'password' => null, 'dsn' => null, 'classname' => 'DebugPDO', 'options' => array(), 'attributes' => array(), 'settings' => array('charset' => array('value' => 'UTF8')));
     $defaultConnectionName = isset($config['default_connection']) ? $config['default_connection'] : $container->getParameter('propel.dbal.default_connection');
     $container->setParameter('propel.dbal.default_connection', $defaultConnectionName);
     $connections = array();
     if (isset($config['connections'])) {
         foreach ($config['connections'] as $name => $connection) {
             $connections[isset($connection['id']) ? $connection['id'] : $name] = $connection;
         }
     } else {
         $connections = array($defaultConnectionName => $config);
     }
     $arguments = $container->getDefinition('propel.configuration')->getArguments();
     if (count($arguments)) {
         $c = $arguments[0];
     } else {
         $c = array('log' => array('level' => 7), 'datasources' => array());
     }
     foreach ($connections as $name => $connection) {
         if (isset($c['datasources'][$name])) {
         } else {
             $connection = array_replace($defaultConnection, $connection);
             $c['datasources'][$name] = array('connection' => array());
         }
         if (isset($connection['driver'])) {
             $c['datasources'][$name]['adapter'] = $connection['driver'];
         }
         foreach (array('dsn', 'user', 'password', 'classname', 'options', 'attributes', 'settings') as $att) {
             if (isset($connection[$att])) {
                 $c['datasources'][$name]['connection'][$att] = $connection[$att];
             }
         }
     }
     $container->getDefinition('propel.configuration')->setArguments(array($c));
 }
Exemplo n.º 11
0
 /**
  * Loads the ORM default configuration.
  *
  * @param array $config An array of configuration settings
  * @param ContainerBuilder $container A ContainerBuilder instance
  */
 protected function loadOrmDefaults(array $config, ContainerBuilder $container)
 {
     $loader = new XmlFileLoader($container, __DIR__ . '/../Resources/config');
     $loader->load($this->resources['orm']);
     // Allow these application configuration options to override the defaults
     $options = array('default_entity_manager', 'default_connection', 'metadata_cache_driver', 'query_cache_driver', 'result_cache_driver', 'proxy_namespace', 'auto_generate_proxy_classes');
     foreach ($options as $key) {
         if (isset($config[$key])) {
             $container->setParameter('doctrine.orm.' . $key, $config[$key]);
         }
     }
     $container->setParameter('doctrine.orm.mapping_dirs', $this->findBundleSubpaths('Resources/config/doctrine/metadata', $container));
     $container->setParameter('doctrine.orm.entity_dirs', $this->findBundleSubpaths('Entity', $container));
 }
Exemplo n.º 12
0
 /**
  * Loads the templating configuration.
  *
  * @param array                                                        $config        An array of configuration settings
  * @param \Symfony\Components\DependencyInjection\ContainerBuilder $container A ContainerBuilder instance
  */
 public function templatingLoad($config, ContainerBuilder $container)
 {
     if (!$container->hasDefinition('templating')) {
         $loader = new XmlFileLoader($container, __DIR__ . '/../Resources/config');
         $loader->load($this->resources['templating']);
     }
     if (array_key_exists('escaping', $config)) {
         $container->setParameter('templating.output_escaper', $config['escaping']);
     }
     if (array_key_exists('assets_version', $config)) {
         $container->setParameter('templating.assets.version', $config['assets_version']);
     }
     // path for the filesystem loader
     if (isset($config['path'])) {
         $container->setParameter('templating.loader.filesystem.path', $config['path']);
     }
     // loaders
     if (isset($config['loader'])) {
         $loaders = array();
         $ids = is_array($config['loader']) ? $config['loader'] : array($config['loader']);
         foreach ($ids as $id) {
             $loaders[] = new Reference($id);
         }
         if (1 === count($loaders)) {
             $container->setAlias('templating.loader', (string) $loaders[0]);
         } else {
             $container->getDefinition('templating.loader.chain')->addArgument($loaders);
             $container->setAlias('templating.loader', 'templating.loader.chain');
         }
     }
     // cache?
     $container->setParameter('templating.loader.cache.path', null);
     if (isset($config['cache'])) {
         // wrap the loader with some cache
         $container->setDefinition('templating.loader.wrapped', $container->findDefinition('templating.loader'));
         $container->setDefinition('templating.loader', $container->getDefinition('templating.loader.cache'));
         $container->setParameter('templating.loader.cache.path', $config['cache']);
     }
 }
Exemplo n.º 13
0
 /**
  * @covers Symfony\Components\DependencyInjection\ContainerBuilder::createService
  */
 public function testCreateServiceConfigurator()
 {
     $builder = new ContainerBuilder();
     $builder->register('foo1', 'FooClass')->setConfigurator('sc_configure');
     $this->assertTrue($builder->get('foo1')->configured, '->createService() calls the configurator');
     $builder->register('foo2', 'FooClass')->setConfigurator(array('%class%', 'configureStatic'));
     $builder->setParameter('class', 'BazClass');
     $this->assertTrue($builder->get('foo2')->configured, '->createService() calls the configurator');
     $builder->register('baz', 'BazClass');
     $builder->register('foo3', 'FooClass')->setConfigurator(array(new Reference('baz'), 'configure'));
     $this->assertTrue($builder->get('foo3')->configured, '->createService() calls the configurator');
     $builder->register('foo4', 'FooClass')->setConfigurator('foo');
     try {
         $builder->get('foo4');
         $this->fail('->createService() throws an InvalidArgumentException if the configure callable is not a valid callable');
     } catch (\Exception $e) {
         $this->assertInstanceOf('\\InvalidArgumentException', $e, '->createService() throws an InvalidArgumentException if the configure callable is not a valid callable');
         $this->assertEquals('The configure callable for class "FooClass" is not a callable.', $e->getMessage(), '->createService() throws an InvalidArgumentException if the configure callable is not a valid callable');
     }
 }