From 2cd3e6c3cd5f45eac10520e7e8802ef98a2272b5 Mon Sep 17 00:00:00 2001 From: Kamil Kokot Date: Thu, 3 Dec 2015 13:09:34 +0100 Subject: [PATCH 1/2] Made PHPCR initializer independent from Sonata-related setting, creating all defined route_basepaths if enable_initializer=true --- DependencyInjection/CmfRoutingExtension.php | 34 ++++++++++++- DependencyInjection/Configuration.php | 22 ++++++++- Resources/config/initializer-phpcr.xml | 4 +- .../CmfRoutingExtensionTest.php | 49 +++++++++++++++++-- 4 files changed, 99 insertions(+), 10 deletions(-) diff --git a/DependencyInjection/CmfRoutingExtension.php b/DependencyInjection/CmfRoutingExtension.php index fa3abb83..5477d665 100644 --- a/DependencyInjection/CmfRoutingExtension.php +++ b/DependencyInjection/CmfRoutingExtension.php @@ -223,6 +223,10 @@ private function loadPhpcrProvider($config, XmlFileLoader $loader, ContainerBuil if ($config['use_sonata_admin']) { $this->loadSonataPhpcrAdmin($config, $loader, $container); } + + if ($config['enable_initializer']) { + $this->loadInitializer($config, $loader, $container); + } } private function loadSonataPhpcrAdmin($config, XmlFileLoader $loader, ContainerBuilder $container) @@ -236,10 +240,36 @@ private function loadSonataPhpcrAdmin($config, XmlFileLoader $loader, ContainerB $basePath = $config['admin_basepath'] ?: reset($config['route_basepaths']); $container->setParameter('cmf_routing.dynamic.persistence.phpcr.admin_basepath', $basePath); + } - if ($config['enable_initializer']) { - $loader->load('initializer-phpcr.xml'); + /** + * @param array $config + * @param XmlFileLoader $loader + * @param ContainerBuilder $container + */ + private function loadInitializer($config, XmlFileLoader $loader, ContainerBuilder $container) + { + $adminBasepathParameter = $this->getAlias().'.dynamic.persistence.phpcr.admin_basepath'; + + $initializedBasepaths = array(); + if ($container->hasParameter($adminBasepathParameter)) { + $initializedBasepaths = array($container->getParameter($adminBasepathParameter)); + } + + if ('auto' === $config['enable_initializer'] && empty($initializedBasepaths)) { + return; } + + if (true === $config['enable_initializer'] && empty($initializedBasepaths)) { + $initializedBasepaths = $container->getParameter($this->getAlias().'.dynamic.persistence.phpcr.route_basepaths'); + } + + $container->setParameter( + $this->getAlias().'.dynamic.persistence.phpcr.initialized_basepaths', + $initializedBasepaths + ); + + $loader->load('initializer-phpcr.xml'); } private function loadOrmProvider($config, XmlFileLoader $loader, ContainerBuilder $container, $matchImplicitLocale) diff --git a/DependencyInjection/Configuration.php b/DependencyInjection/Configuration.php index da31cc25..67b838a6 100644 --- a/DependencyInjection/Configuration.php +++ b/DependencyInjection/Configuration.php @@ -142,8 +142,26 @@ private function addDynamicSection(ArrayNodeDefinition $root) ->end() ->values(array(true, false, 'auto')) ->defaultValue('auto') - ->end() // use_sonata_admin - ->booleanNode('enable_initializer')->defaultTrue()->end() + ->end() + ->enumNode('enable_initializer') + ->beforeNormalization() + ->ifString() + ->then(function ($v) { + switch ($v) { + case 'true': + return true; + + case 'false': + return false; + + default: + return $v; + } + }) + ->end() + ->values(array(true, false, 'auto')) + ->defaultValue('auto') + ->end() ->end() ->end() // phpcr ->arrayNode('orm') diff --git a/Resources/config/initializer-phpcr.xml b/Resources/config/initializer-phpcr.xml index 5eb6b721..89b94c32 100644 --- a/Resources/config/initializer-phpcr.xml +++ b/Resources/config/initializer-phpcr.xml @@ -8,9 +8,7 @@ CmfRoutingBundle - - %cmf_routing.dynamic.persistence.phpcr.admin_basepath% - + %cmf_routing.dynamic.persistence.phpcr.initialized_basepaths% diff --git a/Tests/Unit/DependencyInjection/CmfRoutingExtensionTest.php b/Tests/Unit/DependencyInjection/CmfRoutingExtensionTest.php index 57cdca8d..2cc77e4b 100644 --- a/Tests/Unit/DependencyInjection/CmfRoutingExtensionTest.php +++ b/Tests/Unit/DependencyInjection/CmfRoutingExtensionTest.php @@ -300,7 +300,6 @@ public function testInitializerDisabled() 'kernel.bundles', array( 'CmfRoutingBundle' => true, - 'SonataDoctrinePHPCRAdminBundle' => true, ) ); @@ -310,7 +309,6 @@ public function testInitializerDisabled() 'persistence' => array( 'phpcr' => array( 'enabled' => true, - 'use_sonata_admin' => true, 'enable_initializer' => false, ), ), @@ -320,7 +318,7 @@ public function testInitializerDisabled() $this->assertFalse($this->container->has('cmf_routing.initializer')); } - public function testInitializerDisabledWithoutSonata() + public function testInitializerEnabledEvenWithoutSonata() { $this->load(array( 'dynamic' => array( @@ -329,11 +327,56 @@ public function testInitializerDisabledWithoutSonata() 'phpcr' => array( 'enabled' => true, 'use_sonata_admin' => false, + 'enable_initializer' => true, ), ), ), )); + $this->assertTrue($this->container->has('cmf_routing.initializer')); + } + + public function testInitializerEnabledAutomaticallyIfSonataIsEnabled() + { + $this->container->setParameter( + 'kernel.bundles', + array( + 'CmfRoutingBundle' => true, + 'SonataDoctrinePHPCRAdminBundle' => true, + ) + ); + + $this->load(array( + 'dynamic' => array( + 'enabled' => true, + 'persistence' => array( + 'phpcr' => array( + 'enabled' => true, + 'use_sonata_admin' => true, + 'enable_initializer' => 'auto', + ), + ), + ), + )); + + $this->assertTrue($this->container->has('cmf_routing.initializer')); + } + + public function testInitializerDisabledAutomaticallyIfSonataIsDisabled() + { + $this->load(array( + 'dynamic' => array( + 'enabled' => true, + 'persistence' => array( + 'phpcr' => array( + 'enabled' => true, + 'use_sonata_admin' => false, + 'enable_initializer' => 'auto', + ), + ), + ), + )); + $this->assertFalse($this->container->has('cmf_routing.initializer')); } } From 49e6cb18e767d3258cc7555281043e4a56d95a8b Mon Sep 17 00:00:00 2001 From: Kamil Kokot Date: Thu, 3 Dec 2015 14:20:18 +0100 Subject: [PATCH 2/2] [Travis] Disabled XDebug --- .travis.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.travis.yml b/.travis.yml index b4fc8c0d..e36781b6 100644 --- a/.travis.yml +++ b/.travis.yml @@ -34,6 +34,8 @@ matrix: before_install: - if [[ "$TRAVIS_PHP_VERSION" != "hhvm" ]]; then echo "memory_limit = -1" >> ~/.phpenv/versions/$(phpenv version-name)/etc/conf.d/travis.ini; fi + - phpenv config-rm xdebug.ini || true + - composer self-update - composer require symfony/symfony:${SYMFONY_VERSION} --no-update