From 2e49b42f8d438058b5339023d7f52e97c66dea55 Mon Sep 17 00:00:00 2001 From: Xavier Coureau Date: Wed, 20 Jan 2016 19:53:16 +0100 Subject: [PATCH] Removed Wordpress class dependency with KernelInterface --- DependencyInjection/Configuration.php | 4 +-- .../EkinoWordpressExtension.php | 29 +++---------------- Resources/config/services.xml | 4 +-- Tests/Wordpress/WordpressTest.php | 18 ++---------- Wordpress/Wordpress.php | 29 +++++-------------- composer.json | 2 +- 6 files changed, 19 insertions(+), 67 deletions(-) diff --git a/DependencyInjection/Configuration.php b/DependencyInjection/Configuration.php index 178f87a..c1de269 100644 --- a/DependencyInjection/Configuration.php +++ b/DependencyInjection/Configuration.php @@ -36,7 +36,7 @@ public function getConfigTreeBuilder() $rootNode ->children() ->scalarNode('table_prefix')->end() - ->scalarNode('wordpress_directory')->end() + ->scalarNode('wordpress_directory')->defaultNull()->end() ->scalarNode('entity_manager')->end() ->booleanNode('load_twig_extension')->defaultFalse()->end() ->booleanNode('cookie_hash')->defaultNull()->end() @@ -44,7 +44,7 @@ public function getConfigTreeBuilder() ->booleanNode('enable_wordpress_listener')->defaultTrue()->end() ->arrayNode('globals') - ->prototype('scalar')->end() + ->prototype('scalar')->defaultValue([])->end() ->end() ->arrayNode('security') diff --git a/DependencyInjection/EkinoWordpressExtension.php b/DependencyInjection/EkinoWordpressExtension.php index 9ed156e..e0f14b3 100644 --- a/DependencyInjection/EkinoWordpressExtension.php +++ b/DependencyInjection/EkinoWordpressExtension.php @@ -53,6 +53,9 @@ public function load(array $configs, ContainerBuilder $container) { $config = $this->processConfiguration(new Configuration(), $configs); + $container->setParameter('ekino.wordpress.install_directory', $config['wordpress_directory'] ?: $container->getParameter('kernel.root_dir').'/../../'); + $this->loadWordpressGlobals($container, $config['globals']); + $loader = new XmlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config')); $loader->load('manager.xml'); $loader->load('services.xml'); @@ -66,10 +69,6 @@ public function load(array $configs, ContainerBuilder $container) $this->loadTablePrefix($container, $config['table_prefix']); } - if (isset($config['wordpress_directory'])) { - $this->loadWordpressDirectory($container, $config['wordpress_directory']); - } - if (isset($config['entity_manager'])) { $this->loadEntityManager($container, $config['entity_manager']); } @@ -87,10 +86,6 @@ public function load(array $configs, ContainerBuilder $container) $loader->load('listener.xml'); } - if (isset($config['globals'])) { - $this->loadWordpressGlobals($container, $config['globals']); - } - $container->setParameter('ekino.wordpress.cookie_hash', $config['cookie_hash']); $container->setParameter('ekino.wordpress.firewall_name', $config['security']['firewall_name']); $container->setParameter('ekino.wordpress.login_url', $config['security']['login_url']); @@ -135,22 +130,6 @@ protected function loadTablePrefix(ContainerBuilder $container, $prefix) $container->setDefinition($identifier, $serviceDefinition); } - /** - * Loads Wordpress directory from configuration. - * - * @param ContainerBuilder $container Symfony dependency injection container - * @param string $directory Wordpress directory - */ - protected function loadWordpressDirectory(ContainerBuilder $container, $directory) - { - $identifier = 'ekino.wordpress.wordpress'; - - $serviceDefinition = $container->getDefinition($identifier); - $serviceDefinition->addArgument($directory); - - $container->setDefinition($identifier, $serviceDefinition); - } - /** * Sets Doctrine entity manager for Wordpress. * @@ -177,7 +156,7 @@ protected function loadWordpressGlobals(ContainerBuilder $container, $globals) $coreGlobals = ['wp', 'wp_the_query', 'wpdb', 'wp_query', 'allowedentitynames']; $globals = array_merge($globals, $coreGlobals); - $container->findDefinition('ekino.wordpress.wordpress')->replaceArgument(1, $globals); + $container->setParameter('ekino.wordpress.globals', $globals); } /** diff --git a/Resources/config/services.xml b/Resources/config/services.xml index 37c0c39..0b82bb2 100644 --- a/Resources/config/services.xml +++ b/Resources/config/services.xml @@ -9,8 +9,8 @@ - - + %ekino.wordpress.install_directory% + %ekino.wordpress.globals% diff --git a/Tests/Wordpress/WordpressTest.php b/Tests/Wordpress/WordpressTest.php index a96fec3..a828ab7 100644 --- a/Tests/Wordpress/WordpressTest.php +++ b/Tests/Wordpress/WordpressTest.php @@ -81,7 +81,7 @@ public function testExceptionWhenDirectoryNotFound() { $this->setExpectedException('InvalidArgumentException'); - $wordpress = new Wordpress($this->getKernelMock(), ['wp_test_global1', 'wp_test_global2'], '/a/path/that/does/not/exists'); + $wordpress = new Wordpress('/a/path/that/does/not/exists', ['wp_test_global1', 'wp_test_global2']); $wordpress->initialize(); } @@ -104,20 +104,6 @@ public function testGlobalVariables() */ protected function getWordpressMock() { - $kernel = $this->getKernelMock(); - - return $this->getMock('\Ekino\WordpressBundle\Wordpress\Wordpress', ['getContent'], [$kernel, ['wp_test_global1', 'wp_test_global2']]); - } - - /** - * Returns a mock of Symfony kernel. - * - * @return \Symfony\Component\HttpKernel\Kernel - */ - protected function getKernelMock() - { - return $this->getMockBuilder('\Symfony\Component\HttpKernel\Kernel') - ->disableOriginalConstructor() - ->getMock(); + return $this->getMock('\Ekino\WordpressBundle\Wordpress\Wordpress', ['getContent'], [__DIR__, ['wp_test_global1', 'wp_test_global2']]); } } diff --git a/Wordpress/Wordpress.php b/Wordpress/Wordpress.php index 2074ef0..66762de 100644 --- a/Wordpress/Wordpress.php +++ b/Wordpress/Wordpress.php @@ -10,8 +10,6 @@ namespace Ekino\WordpressBundle\Wordpress; -use Symfony\Component\HttpKernel\KernelInterface; - /** * Class Wordpress. * @@ -23,20 +21,15 @@ class Wordpress { /** - * @var KernelInterface + * @var string */ - protected $kernel; + protected $wordpressDirectory; /** * @var array */ protected $globals; - /** - * @var string - */ - protected $directory; - /** * @var WordpressResponse */ @@ -45,20 +38,16 @@ class Wordpress /** * @var bool */ - protected $alreadyInitialized; + protected $alreadyInitialized = false; /** - * Constructor. - * - * @param KernelInterface $kernel Symfony kernel instance - * @param array $globals A Wordpress global variables array - * @param string $directory A wordpress directory (if specified in configuration) + * @param string $wordpressDirectory The wordpress directory installation + * @param array $globals A Wordpress global variables array */ - public function __construct(KernelInterface $kernel, array $globals, $directory = null) + public function __construct($wordpressDirectory, array $globals) { - $this->kernel = $kernel; $this->globals = $globals; - $this->directory = $directory; + $this->wordpressDirectory = $wordpressDirectory; } /** @@ -154,8 +143,6 @@ public function getWpQuery() */ protected function getWordpressDirectory() { - $directory = $this->directory ?: sprintf('%s/../../', $this->kernel->getRootDir()); - - return '/' == substr($directory, -1) ? $directory : $directory.'/'; + return '/' == substr($this->wordpressDirectory, -1) ? $this->wordpressDirectory : $this->wordpressDirectory.'/'; } } diff --git a/composer.json b/composer.json index c089b80..9e7e3e5 100644 --- a/composer.json +++ b/composer.json @@ -1,6 +1,6 @@ { "name": "ekino/wordpress-bundle", - "type": "library", + "type": "symfony-bundle", "description": "A Symfony bundle to link Symfony with Wordpress", "keywords": ["ekino", "bundle", "symfony", "wordpress"], "homepage": "http://github.com/ekino/EkinoWordpressBundle",