CreateSettingsModule   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 67
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 27
dl 0
loc 67
rs 10
c 0
b 0
f 0
wmc 5

4 Methods

Rating   Name   Duplication   Size   Complexity  
A up() 0 4 1
A down() 0 7 1
A createModule() 0 33 1
A activateModuleOnDomains() 0 5 2
1
<?php
2
3
use Illuminate\Support\Facades\Schema;
4
use Uccello\Core\Database\Migrations\Migration;
5
use Uccello\Core\Models\Module;
6
use Uccello\Core\Models\Domain;
7
8
class CreateSettingsModule extends Migration
9
{
10
    /**
11
     * Run the migrations.
12
     *
13
     * @return void
14
     */
15
    public function up()
16
    {
17
        $module = $this->createModule();
18
        $this->activateModuleOnDomains($module);
19
    }
20
21
    /**
22
     * Reverse the migrations.
23
     *
24
     * @return void
25
     */
26
    public function down()
27
    {
28
        // Drop table
29
        Schema::dropIfExists($this->tablePrefix.'settings');
30
31
        // Delete module
32
        Module::where('name', 'settings')->forceDelete();
33
    }
34
35
    protected function createModule()
36
    {
37
        $module = new Module([
38
            'name' => 'settings',
39
            'icon' => 'settings',
40
            'model_class' => null,
41
            'data' => [
42
                'package' => 'uccello/uccello',
43
                'admin' => true,
44
                'mandatory' => true,
45
                'menu' => [
46
                    // Dashboard
47
                    [
48
                        'label' => 'dashboard',
49
                        'route' => 'uccello.settings.dashboard'
50
                    ],
51
                    // Module manager
52
                    [
53
                        'label' => 'module.manager',
54
                        'route' => 'uccello.settings.module.manager',
55
                        'icon' => 'extension'
56
                    ],
57
                    // Menu manager
58
                    [
59
                        'label' => 'menu.manager',
60
                        'route' => 'uccello.settings.menu.manager',
61
                        'icon' => 'menu'
62
                    ]
63
                ]
64
            ]
65
        ]);
66
        $module->save();
67
        return $module;
68
    }
69
70
    protected function activateModuleOnDomains($module)
71
    {
72
        $domains = Domain::all();
73
        foreach ($domains as $domain) {
74
            $domain->modules()->attach($module);
75
        }
76
    }
77
}