Completed
Pull Request — dev (#9)
by Arnaud
16:32 queued 13:45
created

getApplicationConfiguration()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 4
rs 10
cc 1
eloc 2
nc 1
nop 0
1
<?php
2
3
namespace LAG\AdminBundle\Configuration\Factory;
4
5
use LAG\AdminBundle\Action\Configuration\ActionConfiguration;
6
use LAG\AdminBundle\Admin\AdminInterface;
7
use LAG\AdminBundle\Admin\Configuration\AdminConfiguration;
8
use LAG\AdminBundle\Application\Configuration\ApplicationConfiguration;
9
use Symfony\Component\OptionsResolver\OptionsResolver;
10
11
class ConfigurationFactory
12
{
13
    /**
14
     * @var ApplicationConfiguration
15
     */
16
    protected $applicationConfiguration;
17
18
    /**
19
     * Create an action configuration object.
20
     *
21
     * @param $actionName
22
     * @param AdminInterface|null $admin
23
     * @param array $configuration
24
     * @return ActionConfiguration
25
     */
26
    public function createActionConfiguration($actionName, AdminInterface $admin = null, array $configuration = [])
27
    {
28
        $resolver = new OptionsResolver();
29
        $actionConfiguration = new ActionConfiguration($actionName, $admin);
30
        $actionConfiguration->configureOptions($resolver);
31
        $actionConfiguration->setParameters($resolver->resolve($configuration));
32
33
        return $actionConfiguration;
34
    }
35
36
    /**
37
     * Create an application configuration object.
38
     *
39
     * @param array $configuration
40
     * @return ApplicationConfiguration
41
     */
42
    public function createApplicationConfiguration(array $configuration = [])
43
    {
44
        $resolver = new OptionsResolver();
45
        $this->applicationConfiguration = new ApplicationConfiguration();
46
        $this->applicationConfiguration->configureOptions($resolver);
47
        $this->applicationConfiguration->setParameters($resolver->resolve($configuration));
48
49
        return $this->applicationConfiguration;
50
    }
51
52
    /**
53
     * Create an admin configuration object.
54
     *
55
     * @param array $configuration
56
     * @return AdminConfiguration
57
     */
58
    public function createAdminConfiguration(array $configuration = [])
59
    {
60
        $resolver = new OptionsResolver();
61
        $adminConfiguration = new AdminConfiguration($this->applicationConfiguration);
62
        $adminConfiguration->configureOptions($resolver);
63
        $adminConfiguration->setParameters($resolver->resolve($configuration));
64
65
        return $adminConfiguration;
66
    }
67
68
    /**
69
     * @return ApplicationConfiguration
70
     */
71
    public function getApplicationConfiguration()
72
    {
73
        return $this->applicationConfiguration;
74
    }
75
}
76