Completed
Pull Request — master (#4)
by ANTHONIUS
04:04
created

UserResourcePass::process()   A

Complexity

Conditions 3
Paths 3

Size

Total Lines 8
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 6
CRAP Score 3

Importance

Changes 0
Metric Value
cc 3
eloc 5
nc 3
nop 1
dl 0
loc 8
ccs 6
cts 6
cp 1
crap 3
rs 10
c 0
b 0
f 0
1
<?php
2
3
4
namespace Doyo\UserBundle\Bridge\ApiPlatform;
5
6
7
use Symfony\Component\Config\ConfigCache;
8
use Symfony\Component\Config\Resource\FileResource;
9
use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
10
use Symfony\Component\DependencyInjection\ContainerBuilder;
11
12
class UserResourcePass implements CompilerPassInterface
13
{
14 2
    public function process(ContainerBuilder $container)
15
    {
16 2
        if(!$container->getParameter('doyo_user.api_platform')){
0 ignored issues
show
Coding Style introduced by
Expected 1 space(s) after IF keyword; 0 found
Loading history...
17 1
            return;
18
        }
19 1
        $this->generateApiResourceCache($container, 'user-resource.yaml','User.yaml');
20 1
        if($container->hasParameter('doyo_user.model.group.class')){
0 ignored issues
show
Coding Style introduced by
Expected 1 space(s) after IF keyword; 0 found
Loading history...
21 1
            $this->generateApiResourceCache($container, 'group-resource.yaml','Group.yaml');
22
        }
23
    }
24
25 1
    private function generateApiResourceCache(ContainerBuilder $container, $template, $path)
26
    {
27 1
        $cacheDir = __DIR__.'/../../Resources/config/api_resources';
28 1
        $debug = $container->getParameter('kernel.debug');
29 1
        $path  = $cacheDir.'/'.$path;
30 1
        $cache = new ConfigCache($path, $debug);
31
32 1
        if (!$cache->isFresh()) {
33 1
            $template = __DIR__.'/../../Resources/config/template/'.$template;
34 1
            $contents = file_get_contents($template);
35 1
            $contents = strtr($contents, [
36 1
                '%doyo_user.model.user.class%' => $container->getParameter('doyo_user.model.user.class'),
37 1
                '%doyo_user.model.group.class%' => $container->getParameter('doyo_user.model.group.class')
38
            ]);
39
40
            //file_put_contents($dir.'/user-resource.yaml', $contents, LOCK_EX);
41 1
            $resources = [new FileResource($template)];
42 1
            $cache->write($contents, $resources);
43
        }
44 1
        return $path;
45
    }
46
}