SettingService.php
2.12 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
<?php namespace Oxbow\Services;
use Oxbow\Setting;
/**
* Class SettingService
*
* The settings are a simple key-value database store.
*
* @package Oxbow\Services
*/
class SettingService
{
protected $setting;
/**
* SettingService constructor.
* @param $setting
*/
public function __construct(Setting $setting)
{
$this->setting = $setting;
}
/**
* Gets a setting from the database,
* If not found, Returns default, Which is false by default.
* @param $key
* @param string|bool $default
* @return bool|string
*/
public function get($key, $default = false)
{
$setting = $this->getSettingObjectByKey($key);
$value = $setting === null ? null : $setting->value;
// Change string booleans to actual booleans
if($value === 'true') $value = true;
if($value === 'false') $value = false;
// Set to default if empty
if($value === '') $value = $default;
return $value === null ? $default : $value;
}
/**
* Checks if a setting exists.
* @param $key
* @return bool
*/
public function has($key)
{
$setting = $this->getSettingObjectByKey($key);
return $setting !== null;
}
/**
* Add a setting to the database.
* @param $key
* @param $value
* @return bool
*/
public function put($key, $value)
{
$setting = $this->setting->firstOrNew([
'setting_key' => $key
]);
$setting->value = $value;
$setting->save();
return true;
}
/**
* Removes a setting from the database.
* @param $key
* @return bool
*/
public function remove($key)
{
$setting = $this->getSettingObjectByKey($key);
if ($setting) {
$setting->delete();
}
return true;
}
/**
* Gets a setting model from the database for the given key.
* @param $key
* @return mixed
*/
private function getSettingObjectByKey($key)
{
return $this->setting->where('setting_key', '=', $key)->first();
}
}