AdminSidebar::getMenu()   A
last analyzed

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 namespace Modules\Core\Sidebar;
2
3
use Illuminate\Contracts\Container\Container;
4
use Maatwebsite\Sidebar\Menu;
5
use Maatwebsite\Sidebar\ShouldCache;
6
use Maatwebsite\Sidebar\Sidebar;
7
use Maatwebsite\Sidebar\Traits\CacheableTrait;
8
use Pingpong\Modules\Contracts\RepositoryInterface;
9
10
class AdminSidebar implements Sidebar, ShouldCache
11
{
12
    use CacheableTrait;
13
    /**
14
     * @var Menu
15
     */
16
    protected $menu;
17
18
    /**
19
     * @var RepositoryInterface
20
     */
21
    protected $modules;
22
23
    /**
24
     * @var Container
25
     */
26
    protected $container;
27
28
    /**
29
     * @param Menu                $menu
30
     * @param RepositoryInterface $modules
31
     * @param Container           $container
32
     */
33
    public function __construct(Menu $menu, RepositoryInterface $modules, Container $container)
34
    {
35
        $this->menu = $menu;
36
        $this->modules = $modules;
37
        $this->container = $container;
38
    }
39
40
    /**
41
     * Build your sidebar implementation here
42
     */
43
    public function build()
44
    {
45
        foreach ($this->modules->enabled() as $module) {
46
            $name = studly_case($module->getName());
47
            $class = 'Modules\\' . $name . '\\Sidebar\\SidebarExtender';
48
49
            if (class_exists($class)) {
50
                $extender = $this->container->make($class);
51
52
                $this->menu->add(
53
                    $extender->extendWith($this->menu)
54
                );
55
            }
56
        }
57
    }
58
59
    /**
60
     * @return Menu
61
     */
62
    public function getMenu()
63
    {
64
        return $this->menu;
65
    }
66
}
67