/DependencyInjection/FOSFacebookExtension.php

http://github.com/FriendsOfSymfony/FOSFacebookBundle · PHP · 82 lines · 50 code · 15 blank · 17 comment · 3 complexity · 0d8cd2f396c3c259ba3b47cf53928670 MD5 · raw file

  1. <?php
  2. /*
  3. * This file is part of the FOSFacebookBundle package.
  4. *
  5. * (c) FriendsOfSymfony <http://friendsofsymfony.github.com/>
  6. *
  7. * For the full copyright and license information, please view the LICENSE
  8. * file that was distributed with this source code.
  9. */
  10. namespace FOS\FacebookBundle\DependencyInjection;
  11. use Symfony\Component\Config\Definition\Processor;
  12. use Symfony\Component\HttpKernel\DependencyInjection\Extension;
  13. use Symfony\Component\DependencyInjection\Loader\XmlFileLoader;
  14. use Symfony\Component\DependencyInjection\ContainerBuilder;
  15. use Symfony\Component\Config\FileLocator;
  16. class FOSFacebookExtension extends Extension
  17. {
  18. protected $resources = array(
  19. 'facebook' => 'facebook.xml',
  20. 'security' => 'security.xml',
  21. );
  22. public function load(array $configs, ContainerBuilder $container)
  23. {
  24. $processor = new Processor();
  25. $configuration = new Configuration();
  26. $config = $processor->processConfiguration($configuration, $configs);
  27. $this->loadDefaults($container);
  28. if (isset($config['alias'])) {
  29. $container->setAlias($config['alias'], 'fos_facebook.api');
  30. }
  31. foreach (array('api', 'helper', 'twig') as $attribute) {
  32. $container->setParameter('fos_facebook.'.$attribute.'.class', $config['class'][$attribute]);
  33. }
  34. foreach (array('app_id', 'secret', 'cookie', 'domain', 'logging', 'culture', 'permissions') as $attribute) {
  35. $container->setParameter('fos_facebook.'.$attribute, $config[$attribute]);
  36. }
  37. $container->setParameter('fos_facebook.channel.expire', $config['channel']['expire']);
  38. if (isset($config['file']) && $container->hasDefinition('fos_facebook.api')) {
  39. $facebookApi = $container->getDefinition('fos_facebook.api');
  40. $facebookApi->setFile($config['file']);
  41. }
  42. }
  43. /**
  44. * @codeCoverageIgnore
  45. */
  46. public function getXsdValidationBasePath()
  47. {
  48. return __DIR__ . '/../Resources/config/schema';
  49. }
  50. /**
  51. * @codeCoverageIgnore
  52. */
  53. public function getNamespace()
  54. {
  55. return 'http://symfony.com/schema/dic/fos_facebook';
  56. }
  57. /**
  58. * @codeCoverageIgnore
  59. */
  60. protected function loadDefaults($container)
  61. {
  62. $loader = new XmlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
  63. foreach ($this->resources as $resource) {
  64. $loader->load($resource);
  65. }
  66. }
  67. }