Issues (56)

Manager/ConfigDisplayManager.php (1 issue)

1
<?php
2
3
namespace oliverde8\ComfyBundle\Manager;
4
5
use oliverde8\ComfyBundle\Model\ConfigInterface;
6
use oliverde8\ComfyBundle\Model\Scope;
7
use oliverde8\ComfyBundle\Resolver\ScopeResolverInterface;
8
use oliverde8\ComfyBundle\Security\ScopeVoter;
9
use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface;
0 ignored issues
show
The type Symfony\Component\Securi...izationCheckerInterface was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
10
11
class ConfigDisplayManager
12
{
13
    protected AuthorizationCheckerInterface $checker;
14
    protected ConfigManagerInterface $configManager;
15
    protected ScopeResolverInterface $scopeResolver;
16
17
    public function __construct(
18
        ConfigManagerInterface $configManager,
19
        ScopeResolverInterface $scopeResolver,
20
        AuthorizationCheckerInterface $checker
21
    ) {
22
        $this->configManager = $configManager;
23
        $this->scopeResolver = $scopeResolver;
24
        $this->checker = $checker;
25
    }
26
27
    public function getConfigHtmlName(ConfigInterface $config)
28
    {
29
        return str_replace("/", "-", $config->getPath());
30
    }
31
32
    public function getScopeTreeForHtml()
33
    {
34
        return $this->getRecursiveScopeTreeForHtml($this->scopeResolver->getScopeTree());
35
    }
36
37
    public function getFirstConfigPath(): ?string
38
    {
39
        return $this->getRecursiveFirstConfigPath($this->configManager->getAllConfigs()->getArray());
40
    }
41
42
    /**
43
     * Get path to the first config element.
44
     *
45
     * @param $configItems
46
     * @param string $parent
47
     * @return string|null
48
     * @deprecated This method is now internal, use getFirstConfigPath instead.
49
     */
50
    public function getRecursiveFirstConfigPath($configItems, $parent = "")
51
    {
52
        foreach ($configItems as $key => $config) {
53
            if (is_object($config)) {
54
                return null;
55
            }
56
            $child = $this->getRecursiveFirstConfigPath( $config, $parent . "/" . $key);
57
58
            if (is_null($child)) {
59
                return $parent . "/" . $key;
60
            } else {
61
                return $child;
62
            }
63
        }
64
    }
65
66
    protected function getRecursiveScopeTreeForHtml($tree, $parent = "")
67
    {
68
        $data = [];
69
70
        if (isset($tree['~name'])) {
71
            $data['name'] = $tree['~name'];
72
            unset($tree['~name']);
73
        }
74
75
        $data['sub_scopes'] = [];
76
        if (count($tree) > 0) {
77
            foreach ($tree as $key => $item) {
78
                if ($this->checker->isGranted(ScopeVoter::ACTION_VIEW, new Scope($parent . $key . "/"))) {
79
                    $data['sub_scopes'][$parent . $key] = $this->getRecursiveScopeTreeForHtml($item, $parent . $key . "/");
80
                }
81
            }
82
        }
83
84
        return $data;
85
    }
86
87
88
}
89