Skip to content

Commit 56e2d92

Browse files
committed
Added default 'auto' for enable_initializer configuration option
1 parent 6b020e7 commit 56e2d92

File tree

4 files changed

+96
-6
lines changed

4 files changed

+96
-6
lines changed

DependencyInjection/CmfRoutingExtension.php

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -225,7 +225,7 @@ private function loadPhpcrProvider($config, XmlFileLoader $loader, ContainerBuil
225225
}
226226

227227
if ($config['enable_initializer']) {
228-
$loader->load('initializer-phpcr.xml');
228+
$this->loadInitializer($config, $loader, $container);
229229
}
230230
}
231231

@@ -242,6 +242,36 @@ private function loadSonataPhpcrAdmin($config, XmlFileLoader $loader, ContainerB
242242
$container->setParameter('cmf_routing.dynamic.persistence.phpcr.admin_basepath', $basePath);
243243
}
244244

245+
/**
246+
* @param array $config
247+
* @param XmlFileLoader $loader
248+
* @param ContainerBuilder $container
249+
*/
250+
private function loadInitializer($config, XmlFileLoader $loader, ContainerBuilder $container)
251+
{
252+
$adminBasepathParameter = $this->getAlias() . '.dynamic.persistence.phpcr.admin_basepath';
253+
254+
$initializedBasepaths = array();
255+
if ($container->hasParameter($adminBasepathParameter)) {
256+
$initializedBasepaths = array($container->getParameter($adminBasepathParameter));
257+
}
258+
259+
if ('auto' === $config['enable_initializer'] && empty($initializedBasepaths)) {
260+
return;
261+
}
262+
263+
if (true === $config['enable_initializer'] && empty($initializedBasepaths)) {
264+
$initializedBasepaths = $container->getParameter($this->getAlias() . '.dynamic.persistence.phpcr.route_basepaths');
265+
}
266+
267+
$container->setParameter(
268+
$this->getAlias() . '.dynamic.persistence.phpcr.initialized_basepaths',
269+
$initializedBasepaths
270+
);
271+
272+
$loader->load('initializer-phpcr.xml');
273+
}
274+
245275
private function loadOrmProvider($config, XmlFileLoader $loader, ContainerBuilder $container, $matchImplicitLocale)
246276
{
247277
$loader->load('provider-orm.xml');

DependencyInjection/Configuration.php

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -142,8 +142,26 @@ private function addDynamicSection(ArrayNodeDefinition $root)
142142
->end()
143143
->values(array(true, false, 'auto'))
144144
->defaultValue('auto')
145-
->end() // use_sonata_admin
146-
->booleanNode('enable_initializer')->defaultTrue()->end()
145+
->end()
146+
->enumNode('enable_initializer')
147+
->beforeNormalization()
148+
->ifString()
149+
->then(function ($v) {
150+
switch ($v) {
151+
case 'true':
152+
return true;
153+
154+
case 'false':
155+
return false;
156+
157+
default:
158+
return $v;
159+
}
160+
})
161+
->end()
162+
->values(array(true, false, 'auto'))
163+
->defaultValue('auto')
164+
->end()
147165
->end()
148166
->end() // phpcr
149167
->arrayNode('orm')

Resources/config/initializer-phpcr.xml

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,7 @@
88

99
<service id="cmf_routing.initializer" class="Doctrine\Bundle\PHPCRBundle\Initializer\GenericInitializer">
1010
<argument>CmfRoutingBundle</argument>
11-
<argument type="collection">
12-
<argument>%cmf_routing.dynamic.persistence.phpcr.route_basepath%</argument>
13-
</argument>
11+
<argument>%cmf_routing.dynamic.persistence.phpcr.initialized_basepaths%</argument>
1412
<tag name="doctrine_phpcr.initializer"/>
1513
</service>
1614

Tests/Unit/DependencyInjection/CmfRoutingExtensionTest.php

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -335,4 +335,48 @@ public function testInitializerEnabledEvenWithoutSonata()
335335

336336
$this->assertTrue($this->container->has('cmf_routing.initializer'));
337337
}
338+
339+
public function testInitializerEnabledAutomaticallyIfSonataIsEnabled()
340+
{
341+
$this->container->setParameter(
342+
'kernel.bundles',
343+
array(
344+
'CmfRoutingBundle' => true,
345+
'SonataDoctrinePHPCRAdminBundle' => true,
346+
)
347+
);
348+
349+
$this->load(array(
350+
'dynamic' => array(
351+
'enabled' => true,
352+
'persistence' => array(
353+
'phpcr' => array(
354+
'enabled' => true,
355+
'use_sonata_admin' => true,
356+
'enable_initializer' => 'auto',
357+
),
358+
),
359+
),
360+
));
361+
362+
$this->assertTrue($this->container->has('cmf_routing.initializer'));
363+
}
364+
365+
public function testInitializerDisabledAutomaticallyIfSonataIsDisabled()
366+
{
367+
$this->load(array(
368+
'dynamic' => array(
369+
'enabled' => true,
370+
'persistence' => array(
371+
'phpcr' => array(
372+
'enabled' => true,
373+
'use_sonata_admin' => false,
374+
'enable_initializer' => 'auto',
375+
),
376+
),
377+
),
378+
));
379+
380+
$this->assertFalse($this->container->has('cmf_routing.initializer'));
381+
}
338382
}

0 commit comments

Comments
 (0)