Completed
Push — 2.x ( 7a9740...56924e )
by Lukas Kahwe
17s queued 11s
created

FlysystemResolverFactory::getChildResolverName()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 8

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 8
rs 10
c 0
b 0
f 0
cc 2
nc 2
nop 0
1
<?php
2
3
/*
4
 * This file is part of the `liip/LiipImagineBundle` project.
5
 *
6
 * (c) https://github.com/liip/LiipImagineBundle/graphs/contributors
7
 *
8
 * For the full copyright and license information, please view the LICENSE.md
9
 * file that was distributed with this source code.
10
 */
11
12
namespace Liip\ImagineBundle\DependencyInjection\Factory\Resolver;
13
14
use League\Flysystem\FilesystemOperator;
15
use Symfony\Component\Config\Definition\Builder\ArrayNodeDefinition;
16
use Symfony\Component\DependencyInjection\ContainerBuilder;
17
use Symfony\Component\DependencyInjection\Reference;
18
19
class FlysystemResolverFactory extends AbstractResolverFactory
20
{
21
    /**
22
     * {@inheritdoc}
23
     */
24
    public function create(ContainerBuilder $container, $resolverName, array $config)
25
    {
26
        $resolverDefinition = $this->getChildResolverDefinition($this->getChildResolverName());
27
        $resolverDefinition->replaceArgument(0, new Reference($config['filesystem_service']));
28
        $resolverDefinition->replaceArgument(2, $config['root_url']);
29
        $resolverDefinition->replaceArgument(3, $config['cache_prefix']);
30
        $resolverDefinition->replaceArgument(4, $config['visibility']);
31
        $resolverDefinition->addTag('liip_imagine.cache.resolver', [
32
            'resolver' => $resolverName,
33
        ]);
34
35
        $resolverId = 'liip_imagine.cache.resolver.'.$resolverName;
36
        $container->setDefinition($resolverId, $resolverDefinition);
37
38
        return $resolverId;
39
    }
40
41
    /**
42
     * {@inheritdoc}
43
     */
44
    public function getName()
45
    {
46
        return 'flysystem';
47
    }
48
49
    /**
50
     * {@inheritdoc}
51
     */
52
    public function addConfiguration(ArrayNodeDefinition $builder)
53
    {
54
        $builder
55
            ->children()
56
                ->scalarNode('filesystem_service')
57
                    ->isRequired()
58
                    ->cannotBeEmpty()
59
                ->end()
60
                ->scalarNode('cache_prefix')
61
                    ->defaultValue(null)
62
                ->end()
63
                ->scalarNode('root_url')
64
                    ->isRequired()
65
                    ->cannotBeEmpty()
66
                ->end()
67
                ->enumNode('visibility')
68
                    ->values(['public', 'private'])
69
                    ->defaultValue('public')
70
                ->end()
71
            ->end();
72
    }
73
74
    /**
75
     * @return string|null
76
     */
77
    private function getChildResolverName()
78
    {
79
        if (interface_exists(FilesystemOperator::class)) {
80
            return 'flysystem2';
81
        }
82
83
        return null;
84
    }
85
}
86