Passed
Push — master ( 5e4ab8...5cf54f )
by Vasyl
02:44
created

VariableManager::cacheClear()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 1
dl 0
loc 3
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 0
1
<?php
2
3
namespace Fomvasss\Variable;
4
5
/**
6
 * Class VariableManager
7
 *
8
 * @package \Fomvasss\Variable
9
 */
10
class VariableManager implements VariableManagerContract
11
{
12
    protected $app;
13
14
    protected $variableModel;
15
16
    protected $cacheRepository;
17
18
    protected $locale = null;
19
20
    protected $variables = null;
21
22
    /**
23
     * VariableManager constructor.
24
     * @param $cacheRepository
25
     * @param null $app
0 ignored issues
show
Documentation Bug introduced by
Are you sure the doc-type for parameter $app is correct as it would always require null to be passed?
Loading history...
26
     */
27
    public function __construct($variableModel, $cacheRepository, $app = null)
28
    {
29
        if (! $app) {
0 ignored issues
show
introduced by
$app is of type null, thus it always evaluated to false.
Loading history...
30
            $app = app();   //Fallback when $app is not given
0 ignored issues
show
Bug introduced by
The function app was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

30
            $app = /** @scrutinizer ignore-call */ app();   //Fallback when $app is not given
Loading history...
31
        }
32
        $this->app = $app;
33
34
        $this->config = $this->app['config']->get('variables');
0 ignored issues
show
Bug Best Practice introduced by
The property config does not exist. Although not strictly required by PHP, it is generally a best practice to declare properties explicitly.
Loading history...
35
36
        $this->variableModel = $variableModel;
37
38
        $this->cacheRepository = $cacheRepository;
39
    }
40
41
    /**
42
     * @param string $key
43
     * @param null $default
0 ignored issues
show
Documentation Bug introduced by
Are you sure the doc-type for parameter $default is correct as it would always require null to be passed?
Loading history...
44
     * @return mixed|null
45
     */
46
    public function get(string $key, $default = null)
47
    {
48
       if (isset($this->all()[$key])) {
49
           return $this->all()[$key];
50
       }
51
       
52
       return $default;
53
        
54
    }
55
56
    /**
57
     * @return array
58
     */
59
    public function all(): array
60
    {
61
        if ($this->variables === null) {
62
63
            $all = $this->cacheRepository->remember($this->config['cache']['name'], $this->config['cache']['time'], function () {
64
                return $this->getCollection();
65
            });
66
67
            if ($all) {
68
                $allByLocale = $this->locale ? $all->where('locale', $this->locale) : $all;
69
                $this->variables = $allByLocale->pluck('value', 'key')->toArray();
70
            } else {
71
                $this->variables = [];
72
            }
73
74
        }
75
76
        return $this->variables;
77
    }
78
79
    /**
80
     * @param string $locale
81
     * @return $this
82
     */
83
    public function locale(string $locale = null)
84
    {
85
        $this->locale = $locale;
86
87
        return $this;
88
    }
89
90
    public function cacheClear()
91
    {
92
        return $this->cacheRepository->forget($this->config['cache']['name']);
93
    }
94
95
    /**
96
     * @return \Illuminate\Support\Collection | null
97
     */
98
    protected function getCollection()
99
    {
100
        try {
101
            return $this->variableModel->select('key', 'value', 'locale')->get();
102
        } catch (\Exception $exception) {
103
            $this->app['log']->info(__CLASS__ . ' - ' . $exception->getMessage());
104
105
            return null;
106
        }
107
    }
108
}
109