From 5b8f12fa94d5d81bf8ce300d8833ae4ff05bc685 Mon Sep 17 00:00:00 2001 From: IceToast Date: Tue, 4 Apr 2023 01:45:18 +0200 Subject: [PATCH] =?UTF-8?q?fix:=20=F0=9F=90=9B=20Settings=20update=20->=20?= =?UTF-8?q?type=20check?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/Admin/SettingsController.php | 30 +++++++------------ 1 file changed, 11 insertions(+), 19 deletions(-) diff --git a/app/Http/Controllers/Admin/SettingsController.php b/app/Http/Controllers/Admin/SettingsController.php index 6a7527bb..7e1c5457 100644 --- a/app/Http/Controllers/Admin/SettingsController.php +++ b/app/Http/Controllers/Admin/SettingsController.php @@ -109,26 +109,18 @@ class SettingsController extends Controller $settingsClass = new $settings_class(); foreach ($settingsClass->toArray() as $key => $value) { - switch (gettype($request->input($key))) { - case 'boolean': - $settingsClass->$key = $request->has($key); - break; - case 'string': - $settingsClass->$key = $request->input($key) ?? ''; - break; - case 'integer': - $settingsClass->$key = $request->input($key) ?? 0; - break; - case 'array': - $settingsClass->$key = $request->input($key) ?? []; - break; - case 'double': - $settingsClass->$key = $request->input($key) ?? 0.0; - break; - case 'NULL': - $settingsClass->$key = null; - break; + // Get the type of the settingsclass property + $rp = new \ReflectionProperty($settingsClass, $key); + $rpType = $rp->getType(); + + if ($rpType == 'bool') { + $settingsClass->$key = $request->has($key); + continue; } + + $nullable = $rpType->allowsNull(); + if ($nullable) $settingsClass->$key = $request->input($key) ?? null; + else $settingsClass->$key = $request->input($key); } $settingsClass->save();