From aef13ccdf4497b3e19a089d2e5c0b08be7cc35f3 Mon Sep 17 00:00:00 2001 From: James Brooks Date: Sat, 8 Oct 2016 14:15:50 +0100 Subject: [PATCH 1/2] Boolean settings should be bools! --- app/Settings/Repository.php | 36 ++++++++++++++++++++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) diff --git a/app/Settings/Repository.php b/app/Settings/Repository.php index 9b44173a3b86..b5f9c1a0be1b 100644 --- a/app/Settings/Repository.php +++ b/app/Settings/Repository.php @@ -21,6 +21,15 @@ */ class Repository { + /** + * Array of numerical settings that are not bools. + * + * @var string[] + */ + const NOT_BOOL = [ + 'app_incident_days', + ]; + /** * The eloquent model instance. * @@ -54,7 +63,9 @@ public function __construct(Setting $model) */ public function all() { - return $this->model->all(['name', 'value'])->pluck('value', 'name')->toArray(); + return $this->model->all(['name', 'value'])->pluck('value', 'name')->map(function ($value, $name) { + return $this->castSetting($name, $value); + })->toArray(); } /** @@ -87,7 +98,7 @@ public function set($name, $value) public function get($name, $default = null) { if ($setting = $this->model->where('name', $name)->first()) { - return $setting->value; + return $this->castSetting($name, $setting->value); } return $default; @@ -128,4 +139,25 @@ public function stale() { return $this->stale; } + + /** + * Cast setting as the applicable type. + * + * @param string $key + * @param string $value + * + * @return mixed + */ + protected function castSetting($key, $value) + { + if (is_null($value)) { + return $value; + } + + if (!in_array($key, self::NOT_BOOL) && in_array($value, ["0", "1"])) { + return (bool) $value; + } + + return $value; + } } From c858742b7d03420b0829a0638937376c25117af3 Mon Sep 17 00:00:00 2001 From: James Brooks Date: Sat, 8 Oct 2016 13:16:00 +0000 Subject: [PATCH 2/2] Applied fixes from StyleCI [ci skip] [skip ci] --- app/Settings/Repository.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Settings/Repository.php b/app/Settings/Repository.php index b5f9c1a0be1b..6b398bce1226 100644 --- a/app/Settings/Repository.php +++ b/app/Settings/Repository.php @@ -154,7 +154,7 @@ protected function castSetting($key, $value) return $value; } - if (!in_array($key, self::NOT_BOOL) && in_array($value, ["0", "1"])) { + if (!in_array($key, self::NOT_BOOL) && in_array($value, ['0', '1'])) { return (bool) $value; }