Completed
Pull Request — master (#857)
by Lex
13:03
created

DatabaseActivator::disable()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
nc 1
nop 1
dl 0
loc 4
rs 10
c 0
b 0
f 0
1
<?php
2
3
namespace Nwidart\Modules\Activators;
4
5
use Illuminate\Cache\CacheManager;
6
use Illuminate\Config\Repository as Config;
7
use Illuminate\Container\Container;
8
use Illuminate\Filesystem\Filesystem;
9
use Nwidart\Modules\Contracts\ActivatorInterface;
10
use Nwidart\Modules\Entities\Module as ModuleEntity;
11
use Nwidart\Modules\Module;
12
13
class DatabaseActivator implements ActivatorInterface
14
{
15
    /**
16
     * Laravel cache instance
17
     *
18
     * @var CacheManager
19
     */
20
    private $cache;
21
22
    /**
23
     * Laravel Filesystem instance
24
     *
25
     * @var Filesystem
26
     */
27
    private $files;
28
29
    /**
30
     * Laravel config instance
31
     *
32
     * @var Config
33
     */
34
    private $config;
35
36
    /**
37
     * DatabaseActivator constructor.
38
     *
39
     * @param \Illuminate\Container\Container $app
40
     */
41
    public function __construct(Container $app)
42
    {
43
        $this->cache = $app['cache'];
44
        $this->files = $app['files'];
45
        $this->config = $app['config'];
46
    }
47
48
    /**
49
     * Enables a module
50
     *
51
     * @param Module $module
52
     */
53
    public function enable(Module $module): void
54
    {
55
        $this->setActive($module, true);
56
    }
57
58
    /**
59
     * Disables a module
60
     *
61
     * @param Module $module
62
     */
63
    public function disable(Module $module): void
64
    {
65
        $this->setActive($module, false);
66
    }
67
68
    /**
69
     * Determine whether the given status same with a module status.
70
     *
71
     * @param Module $module
72
     * @param bool   $status
73
     *
74
     * @return bool
75
     */
76
    public function hasStatus(Module $module, bool $status): bool
77
    {
78
        $entity = ModuleEntity::findByName($module->getName());
79
80
        return $entity ? $entity->hasStatus($status) : false;
81
    }
82
83
    /**
84
     * Set active state for a module.
85
     *
86
     * @param Module $module
87
     * @param bool   $active
88
     */
89
    public function setActive(Module $module, bool $active): void
90
    {
91
        /** @var ModuleEntity $entity */
92
        $entity = ModuleEntity::findByNameOrCreate($module->getName(), $module->getPath());
93
94
        $entity->setActive($active);
95
    }
96
97
    /**
98
     * Sets a module status by its name
99
     *
100
     * @param string $name
101
     * @param bool   $active
102
     */
103
    public function setActiveByName(string $name, bool $active): void
104
    {
105
        $entity = ModuleEntity::findByNameOrCreate($name);
106
107
        $entity->setActive($active);
108
    }
109
110
    /**
111
     * Deletes a module activation status
112
     *
113
     * @param Module $module
114
     * @throws \Exception
115
     */
116
    public function delete(Module $module): void
117
    {
118
        $entity = ModuleEntity::findByNameOrFail($module->getName());
119
120
        $entity->delete();
121
    }
122
123
    /**
124
     * Deletes any module activation statuses created by this class.
125
     */
126
    public function reset(): void
127
    {
128
        ModuleEntity::deleteAll();
129
    }
130
}
131