ModuleManagerController::checkPermissions()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 1
c 1
b 0
f 0
nc 1
nop 0
dl 0
loc 3
rs 10
1
<?php
2
3
namespace Uccello\Core\Http\Controllers\Settings;
4
5
use Illuminate\Http\Request;
6
use Illuminate\Support\Facades\Artisan;
7
use Uccello\Core\Http\Controllers\Core\Controller;
8
use Uccello\Core\Models\Domain;
9
use Uccello\Core\Models\Module;
10
11
class ModuleManagerController extends Controller
12
{
13
    /**
14
     * Default view name
15
     *
16
     * @var string
17
     */
18
    protected $viewName = 'module-manager.main';
19
20
    /**
21
     * Check user permissions
22
     */
23
    protected function checkPermissions()
24
    {
25
        $this->middleware('uccello.permissions:admin');
26
    }
27
28
    /**
29
     * Displays the list of modules
30
     *
31
     * @param \Uccello\Core\Models\Domain|null $domain
32
     * @param \Uccello\Core\Models\Module $module
33
     * @param \Illuminate\Http\Request $request
34
     * @return void
35
     */
36
    public function process(?Domain $domain, Module $module, Request $request)
37
    {
38
        // Pre-process
39
        $this->preProcess($domain, $module, $request);
40
41
        $mainModules = [ ];
42
        $adminModules = [ ];
43
        foreach (Module::orderBy('id')->get() as $_module) {
44
            if ($_module->isAdminModule()) {
45
                $adminModules[ ] = $_module;
46
            } else {
47
                $mainModules[ ] = $_module;
48
            }
49
        }
50
51
        return $this->autoView(compact('mainModules', 'adminModules'));
0 ignored issues
show
Bug Best Practice introduced by
The expression return $this->autoView(c...ules', 'adminModules')) returns the type Illuminate\View\View which is incompatible with the documented return type void.
Loading history...
52
    }
53
54
    /**
55
     * Activates or deactivates a module on the current domain
56
     *
57
     * @param \Uccello\Core\Models\Domain|null $domain
58
     * @param \Uccello\Core\Models\Module $module
59
     * @param \Illuminate\Http\Request $request
60
     * @return array
61
     */
62
    public function activation(?Domain $domain, Module $module, Request $request)
63
    {
64
        // Pre-process
65
        $this->preProcess($domain, $module, $request);
66
67
        // Activate or deactivate a module on the current domain
68
        $success = false;
69
        $error = '';
70
        if (request('src_module')) {
71
            $sourceModule = ucmodule(request('src_module'));
72
            $isActive = request('active') == 1;
73
74
            if ($sourceModule) {
75
                // Activate the module on the current domain
76
                if ($isActive === true) {
77
                    $domain->modules()->attach($sourceModule);
78
                    $success = true;
79
                    $message = 'message.module_activated';
80
                }
81
                // Deactivate the module on the current domain only if it is not mandatory
82
                elseif (!$sourceModule->isMandatory()) {
83
                    $domain->modules()->detach($sourceModule);
84
                    $success = true;
85
                    $message = 'message.module_deactivated';
86
                }
87
                // Impossible to deactivate a mandatory module
88
                else {
89
                    $error = 'error.module_is_mandatory';
90
                }
91
            }
92
        }
93
        // Module name is not defined
94
        else {
95
            $error = 'error.module_not_defined';
96
        }
97
98
        $result = [
99
            'success' => $success
100
        ];
101
102
        // Add message if defined
103
        if (!empty($message)) {
104
            $result[ 'message' ] = uctrans($message, $module);
105
        }
106
107
        // Add error if defined
108
        if (!empty($error)) {
109
            $result[ 'error' ] = uctrans($error, $module);
110
        }
111
112
        if ($success) {
113
            Artisan::call('cache:clear');
114
        }
115
116
        return $result;
117
    }
118
}