Skip to content

Commit d6b69ea

Browse files
committed
1.6.0
Refactoring ...
1 parent b4a822b commit d6b69ea

File tree

10 files changed

+229
-274
lines changed

10 files changed

+229
-274
lines changed

composer.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,8 @@
2828
"Oriceon\\Settings\\": "src/"
2929
},
3030
"files": [
31-
"src/helpers.php"
31+
"src/helpers.php",
32+
"Utils/Utils.php"
3233
]
3334
},
3435
"scripts": {
File renamed without changes.

src/Repositories/CacheRepository.php

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
namespace Oriceon\Settings\Repositories;
44

5-
use Oriceon\Settings\Utils\Utils;
5+
use Illuminate\Support\Arr;
66

77
class CacheRepository
88
{
@@ -20,19 +20,18 @@ class CacheRepository
2020
*/
2121
protected $settings;
2222

23-
24-
/**
25-
* Constructor
26-
*
27-
* @param string $cacheFile
28-
*/
23+
/**
24+
* Constructor
25+
*
26+
* @param string $cacheFile
27+
*/
2928
public function __construct($cacheFile)
3029
{
3130
$this->cacheFile = $cacheFile;
3231
$this->checkCacheFile();
3332

34-
$this->settings = $this->getAll();
35-
}
33+
$this->settings = $this->getAll();
34+
}
3635

3736
/**
3837
* Sets a value
@@ -44,7 +43,7 @@ public function __construct($cacheFile)
4443
*/
4544
public function set($key, $value)
4645
{
47-
Utils::set_nested_array_value($this->settings, $key, $value);
46+
set_nested_array_value($this->settings, $key, $value);
4847

4948
$this->store();
5049

@@ -62,7 +61,7 @@ public function set($key, $value)
6261
public function get($key, $default = null)
6362
{
6463
$value = $this->settings;
65-
$value = Utils::set_nested_array_value($value, $key);
64+
$value = set_nested_array_value($value, $key);
6665

6766
if ( ! is_null($value))
6867
{
@@ -98,7 +97,7 @@ public function getAll()
9897
*/
9998
public function has($key)
10099
{
101-
return Utils::multi_key_exists(explode('.', $key), $this->settings);
100+
return multi_key_exists(explode('.', $key), $this->settings);
102101
}
103102

104103
/**
@@ -110,7 +109,7 @@ public function has($key)
110109
*/
111110
public function forget($key)
112111
{
113-
Utils::array_unset($this->settings, $key);
112+
Arr::forget($this->settings, $key);
114113

115114
$this->store();
116115
}
@@ -122,7 +121,7 @@ public function forget($key)
122121
*/
123122
public function flush()
124123
{
125-
file_put_contents($this->cacheFile, json_encode([]));
124+
file_put_contents($this->cacheFile, json_encode([]));
126125
}
127126

128127

@@ -149,4 +148,4 @@ private function store()
149148
file_put_contents($this->cacheFile, json_encode($this->settings));
150149
}
151150

152-
}
151+
}

src/Repositories/DatabaseRepository.php

Lines changed: 41 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
use Illuminate\Database\DatabaseManager;
66
use Illuminate\Support\Arr;
77
use Illuminate\Support\Facades\Config;
8-
use Oriceon\Settings\Utils\Utils;
98

109
class DatabaseRepository
1110
{
@@ -75,7 +74,7 @@ public function set($key, $value)
7574
if (count($newKeyExp) > 0)
7675
{
7776
// we should compose a new array with keys from setter key
78-
$newValue = Utils::build_array($newKeyExp, $value);
77+
$newValue = build_array($newKeyExp, $value);
7978
}
8079

8180

@@ -88,7 +87,7 @@ public function set($key, $value)
8887
else
8988
{
9089
$setting_value = json_decode($row->setting_value, true);
91-
Utils::set_nested_array_value($setting_value, $keyExp, $value);
90+
set_nested_array_value($setting_value, $keyExp, $value);
9291

9392
$this->database->table($this->config['db_table'])
9493
->where('setting_key', $keyExp[0])
@@ -197,14 +196,14 @@ public function has($key)
197196

198197
array_shift($keyExp);
199198

200-
return Utils::multi_key_exists($keyExp, $setting_value);
199+
return multi_key_exists($keyExp, $setting_value);
201200
}
202201

203202
return false;
204203
}
205204

206205
/**
207-
* Remove a setting
206+
* Remove a settings from database and cache file
208207
*
209208
* @param string $key
210209
*
@@ -214,7 +213,7 @@ public function forget($key)
214213
{
215214
$keyExp = explode('.', $key);
216215

217-
216+
// get settings value by first key name
218217
$query = $this->database
219218
->table($this->config['db_table'])
220219
->where('setting_key', $keyExp[0]);
@@ -225,26 +224,38 @@ public function forget($key)
225224
{
226225
if (count($keyExp) > 1)
227226
{
227+
// if found more keys, then forget last key from array
228228
$setting_value = json_decode($row->setting_value, true);
229229

230-
Utils::array_unset($setting_value, $keyExp);
230+
unset($keyExp[0]);
231+
$newKey = implode('.', $keyExp);
231232

232-
$query->update([
233-
'setting_value' => count($setting_value) ? json_encode($setting_value) : null
234-
]);
233+
Arr::forget($setting_value, $newKey);
234+
235+
236+
if (count($setting_value) > 0)
237+
{
238+
// if we still have settings, update settings row
239+
$query->update(['setting_value' => json_encode($setting_value)]);
240+
}
241+
else
242+
{
243+
// if settings value remain blank, delete settings row
244+
$query->delete();
245+
}
235246
}
236247
else
237248
{
249+
// if found only one key, delete settings row
238250
$query->delete();
239251
}
240252
}
241253

242-
243254
$this->cache->forget($key);
244255
}
245256

246257
/**
247-
* Clean unused settings
258+
* Cleans settings that are no longer used in primary config file
248259
*
249260
* @param $params
250261
*/
@@ -253,32 +264,40 @@ public function clean($params = [])
253264
if ( ! empty($this->config['primary_config_file']))
254265
{
255266
$default_settings = Arr::dot(Config::get($this->config['primary_config_file']));
256-
$settings = Arr::dot($this->getAll(false));
267+
$saved_settings = Arr::dot($this->getAll($cache = false));
257268

258269
if (array_key_exists('flush', $params) && $params['flush'] == true)
259270
{
260271
$this->flush();
261272

262-
$settings = [];
263-
264-
$this->_update($default_settings, $settings);
273+
$saved_settings = [];
265274
}
266275
else
267276
{
268-
// clean unused settings
269-
foreach ($settings as $key => $value)
277+
foreach ($saved_settings as $key => $value)
270278
{
271279
if ( ! array_key_exists($key, $default_settings))
272280
{
273-
if ( ! $this->key_represents_an_array($key, $default_settings))
281+
if ( ! key_represents_an_array($key, $default_settings))
274282
{
275283
$this->forget($key);
276284
}
277285
}
278286
}
287+
}
279288

280289

281-
$this->_update($default_settings, $settings);
290+
// update with new settings
291+
foreach ($default_settings as $key => $value)
292+
{
293+
if ( ! preg_key_exists($key, $saved_settings))
294+
{
295+
// check if key does not represents an array and exists in saved settings
296+
if ( ! key_represents_an_array($key, $saved_settings))
297+
{
298+
$this->set($key, $value);
299+
}
300+
}
282301
}
283302
}
284303
}
@@ -319,61 +338,12 @@ private function fetch($key)
319338
if ( ! is_null($row))
320339
{
321340
$setting_value = json_decode($row->setting_value, true);
322-
$value = Utils::set_nested_array_value($setting_value, $keyExp);
341+
$value = set_nested_array_value($setting_value, $keyExp);
323342

324343
return $this->cache->set($key, $value);
325344
}
326345

327346
return null;
328347
}
329348

330-
/**
331-
* @param $default_settings
332-
* @param $settings
333-
*/
334-
private function _update($default_settings, $settings)
335-
{
336-
// update with new settings
337-
foreach ($default_settings as $key => $value)
338-
{
339-
if ( ! $this->preg_key_exists($key, $settings))
340-
{
341-
$this->set($key, $value);
342-
}
343-
}
344-
}
345-
346-
347-
private function key_represents_an_array($key, $default_settings)
348-
{
349-
$split_key = preg_split('/\.([0-9]+)\.?/i', $key);
350-
351-
// key represents an array or a multi array ?
352-
if (count($split_key) > 0)
353-
{
354-
// but that array still exists in default settings ?
355-
if ($this->preg_key_exists($split_key[0], $default_settings))
356-
{
357-
return true;
358-
}
359-
}
360-
361-
return false;
362-
}
363-
364-
private function preg_key_exists($default_settings_key, array $settings)
365-
{
366-
$found = false;
367-
368-
foreach ($settings as $key => $value)
369-
{
370-
if (preg_match('/' . $default_settings_key . '/i', $key))
371-
{
372-
$found = true;
373-
}
374-
}
375-
376-
return $found;
377-
}
378-
379-
}
349+
}

src/SettingsServiceProvider.php

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88

99
class SettingsServiceProvider extends ServiceProvider
1010
{
11-
1211
/**
1312
* Indicates if loading of the provider is deferred.
1413
*
@@ -39,9 +38,7 @@ public function boot()
3938
*/
4039
public function register()
4140
{
42-
$this->mergeConfigFrom(
43-
__DIR__ . '/config/settings.php', 'settings'
44-
);
41+
$this->mergeConfigFrom(__DIR__ . '/config/settings.php', 'settings');
4542

4643
$this->app->singleton('settings', function ($app)
4744
{
@@ -55,7 +52,6 @@ public function register()
5552
});
5653
}
5754

58-
5955
/**
6056
* Get the services provided by the provider.
6157
*
@@ -65,4 +61,4 @@ public function provides()
6561
{
6662
return ['settings'];
6763
}
68-
}
64+
}

0 commit comments

Comments
 (0)