From 8ba43ffe62fb9796e7d88fc7e896f7ea4068f27e Mon Sep 17 00:00:00 2001 From: Tim Fry Date: Mon, 3 Mar 2025 16:58:55 -0400 Subject: [PATCH] Update settings class to use the php filter_var function for boolean Using the built-in filter type for boolean seems like a better option as they are faster, already hardened, and more widely tested. I found this better method used originally by Mark J. Crane in 2022 in the content.php page so I included it here. --- resources/classes/settings.php | 38 ++++------------------------------ 1 file changed, 4 insertions(+), 34 deletions(-) diff --git a/resources/classes/settings.php b/resources/classes/settings.php index 3a9a21c452..77eec854a0 100644 --- a/resources/classes/settings.php +++ b/resources/classes/settings.php @@ -166,8 +166,8 @@ class settings { * @param string $uuid uuid of the setting if available. If set to an empty string then a new uuid will be created. * @param string $category Category of the setting. * @param string $subcategory Subcategory of the setting. - * @param string $type Type of the setting (array, numeric, text, etc) * @param string $value (optional) Value to set. Default is empty string. + * @param string $type Type of the setting (array, numeric, text, etc) * @param bool $enabled (optional) True or False. Default is True. * @param string $description (optional) Description. Default is empty string. */ @@ -248,17 +248,7 @@ class settings { $subcategory = $row['default_setting_subcategory']; if (isset($row['default_setting_value']) && $row['default_setting_value'] !== '') { if ($name == "boolean") { - if (gettype($row['default_setting_value']) === 'string') { - if ($row['default_setting_value'] === 'true') { - $this->settings[$category][$subcategory] = true; - } - else { - $this->settings[$category][$subcategory] = false; - } - } - elseif (gettype($row['default_setting_value']) === 'boolean') { - $this->settings[$category][$subcategory] = $row['default_setting_value']; - } + $this->settings[$category][$subcategory] = filter_var($row['default_setting_value'], FILTER_VALIDATE_BOOLEAN); } elseif ($name == "array") { if (!isset($this->settings[$category][$subcategory]) || !is_array($this->settings[$category][$subcategory])) { @@ -318,17 +308,7 @@ class settings { $subcategory = $row['domain_setting_subcategory']; if (isset($row['domain_setting_value']) && $row['domain_setting_value'] !== '') { if ($name == "boolean") { - if (gettype($row['domain_setting_value']) === 'string') { - if ($row['domain_setting_value'] === 'true') { - $this->settings[$category][$subcategory] = true; - } - else { - $this->settings[$category][$subcategory] = false; - } - } - elseif (gettype($row['domain_setting_value']) === 'boolean') { - $this->settings[$category][$subcategory] = $row['domain_setting_value']; - } + $this->settings[$category][$subcategory] = filter_var($row['domain_setting_value'], FILTER_VALIDATE_BOOLEAN); } if ($name == "array") { if (!isset($this->settings[$category][$subcategory]) || !is_array($this->settings[$category][$subcategory])) { @@ -377,17 +357,7 @@ class settings { $subcategory = $row['user_setting_subcategory']; if (isset($row['user_setting_value']) && $row['user_setting_value'] !== '') { if ($name == "boolean") { - if (gettype($row['user_setting_value']) === 'string') { - if ($row['user_setting_value'] === 'true') { - $this->settings[$category][$subcategory] = true; - } - else { - $this->settings[$category][$subcategory] = false; - } - } - elseif (gettype($row['user_setting_value']) === 'boolean') { - $this->settings[$category][$subcategory] = $row['user_setting_value']; - } + $this->settings[$category][$subcategory] = filter_var($row['user_setting_value'], FILTER_VALIDATE_BOOLEAN); } elseif ($name == "array") { $this->settings[$category][$subcategory][] = $row['user_setting_value'];