Settings::get()   B
last analyzed

Complexity

Conditions 7
Paths 7

Size

Total Lines 19
Code Lines 11

Duplication

Lines 0
Ratio 0 %

Importance

Changes 6
Bugs 0 Features 1
Metric Value
c 6
b 0
f 1
dl 0
loc 19
rs 8.2222
cc 7
eloc 11
nc 7
nop 3
1
<?php namespace Modules\Setting\Support;
2
3
use Modules\Core\Contracts\Setting;
4
use Modules\Setting\Repositories\SettingRepository;
5
6
class Settings implements Setting
7
{
8
    /**
9
     * @var SettingRepository
10
     */
11
    private $setting;
12
13
    /**
14
     * @param SettingRepository $setting
15
     */
16
    public function __construct(SettingRepository $setting)
17
    {
18
        $this->setting = $setting;
19
    }
20
21
    /**
22
     * Getting the setting
23
     * @param  string $name
24
     * @param  string   $locale
25
     * @param  string   $default
26
     * @return mixed
27
     */
28
    public function get($name, $locale = null, $default = null)
29
    {
30
        $defaultFromConfig = $this->getDefaultFromConfigFor($name);
31
32
        $setting = $this->setting->get($name);
33
        if (! $setting) {
34
            return is_null($default) ? $defaultFromConfig : $default;
35
        }
36
37
        if ($setting->isTranslatable) {
38
            if ($setting->hasTranslation($locale)) {
39
                return empty($setting->translate($locale)->value) ? $defaultFromConfig : $setting->translate($locale)->value;
40
            }
41
        } else {
42
            return empty($setting->plainValue) ? $defaultFromConfig : $setting->plainValue;
43
        }
44
45
        return $defaultFromConfig;
46
    }
47
48
    /**
49
     * Determine if the given configuration value exists.
50
     *
51
     * @param  string $name
52
     * @return bool
53
     */
54
    public function has($name)
55
    {
56
        $default = microtime(true);
57
58
        return $this->get($name, null, $default) !== $default;
59
    }
60
61
    /**
62
     * Set a given configuration value.
63
     *
64
     * @param  string $key
65
     * @param  mixed  $value
66
     * @return void
67
     */
68
    public function set($key, $value)
69
    {
70
    }
71
72
    /**
73
     * Get the default value from the settings configuration file,
74
     * for the given setting name.
75
     * @param string $name
76
     * @return string
77
     */
78
    private function getDefaultFromConfigFor($name)
79
    {
80
        list($module, $settingName) = explode('::', $name);
81
82
        return config("asgard.$module.settings.$settingName.default", '');
83
    }
84
}
85