From 0ec6ed696c80df280aa0d688aac77f898569d9cf Mon Sep 17 00:00:00 2001 From: FusionPBX Date: Wed, 13 Sep 2023 09:46:52 -0600 Subject: [PATCH] Create a new settings class --- resources/classes/settings.php | 213 +++++++++++++++++++++++++++++++++ 1 file changed, 213 insertions(+) create mode 100644 resources/classes/settings.php diff --git a/resources/classes/settings.php b/resources/classes/settings.php new file mode 100644 index 0000000000..f59158ff85 --- /dev/null +++ b/resources/classes/settings.php @@ -0,0 +1,213 @@ +select($sql, $parameters, 'all'); + if (is_array($result) && @sizeof($result) != 0) { + foreach ($result as $row) { + $name = $row['default_setting_name']; + $category = $row['default_setting_category']; + $subcategory = $row['default_setting_subcategory']; + if (empty($subcategory)) { + if ($name == "array") { + $settings[$category][] = $row['default_setting_value']; + } + else { + $settings[$category][$name] = $row['default_setting_value']; + } + } + else { + if ($name == "array") { + $settings[$category][$subcategory][] = $row['default_setting_value']; + } + else { + $settings[$category][$subcategory]['uuid'] = $row['default_setting_uuid']; + $settings[$category][$subcategory][$name] = $row['default_setting_value']; + } + } + } + } + unset($sql, $result, $row); + + //return the settings array + return $settings; + + } + + + /** + * get the domain settings + * @var uuid domain_uuid + */ + public function domain_settings($domain_uuid) { + + $sql = "select * from v_domain_settings "; + $sql .= "where domain_uuid = :domain_uuid "; + $sql .= "and domain_setting_enabled = 'true' "; + $parameters['domain_uuid'] = $domain_uuid; + $database = new database; + $result = $database->select($sql, $parameters, 'all'); + unset($sql, $parameters); + + if (is_array($result) && sizeof($result) != 0) { + foreach ($result as $row) { + $name = $row['domain_setting_name']; + $category = $row['domain_setting_category']; + $subcategory = $row['domain_setting_subcategory']; + if ($subcategory != '') { + if ($name == "array") { + $settings[$category][] = $row['default_setting_value']; + } + else { + $settings[$category][$name] = $row['default_setting_value']; + } + } + else { + if ($name == "array") { + $settings[$category][$subcategory][] = $row['default_setting_value']; + } + else { + $settings[$category][$subcategory]['uuid'] = $row['default_setting_uuid']; + $settings[$category][$subcategory][$name] = $row['default_setting_value']; + } + } + } + } + unset($result, $row); + + //return the settings array + return $settings; + + } + + + /** + * get the user settings + * @var uuid domain_uuid + * @var uuid user_uuid + */ + public function user_settings($domain_uuid, $user_uuid) { + + //if (array_key_exists("domain_uuid",$_SESSION) && array_key_exists("user_uuid",$_SESSION) && is_uuid($_SESSION["domain_uuid"])) { + $sql = "select * from v_user_settings "; + $sql .= "where domain_uuid = :domain_uuid "; + $sql .= "and user_uuid = :user_uuid "; + $sql .= " order by user_setting_order asc "; + $parameters['domain_uuid'] = $domain_uuid; + $parameters['user_uuid'] = $user_uuid; + $database = new database; + $result = $database->select($sql, $parameters, 'all'); + if (is_array($result)) { + foreach ($result as $row) { + if ($row['user_setting_enabled'] == 'true') { + $name = $row['user_setting_name']; + $category = $row['user_setting_category']; + $subcategory = $row['user_setting_subcategory']; + if (!empty($row['user_setting_value'])) { + if (empty($subcategory)) { + //$$category[$name] = $row['domain_setting_value']; + if ($name == "array") { + $settings[$category][] = $row['user_setting_value']; + } + else { + $settings[$category][$name] = $row['user_setting_value']; + } + } + else { + //$$category[$subcategory][$name] = $row['domain_setting_value']; + if ($name == "array") { + $settings[$category][$subcategory][] = $row['user_setting_value']; + } + else { + $settings[$category][$subcategory][$name] = $row['user_setting_value']; + } + } + } + } + } + } + //} + + //return the settings array + return $settings; + } + + + /** + * Build the all settings into an array + * @var uuid domain_uuid + * @var uuid user_uuid + */ + public function all($domain_uuid, $user_uuid = null) { + + //get the default settings + $settings = $this->default_settings(); + + //get the domains settings + if (file_exists($_SERVER["PROJECT_ROOT"]."/app/domains/app_config.php")) { + include "app/domains/resources/settings.php"; + } + + //get the domain settings + if (!empty($domain_uuid)) { + $result = $this->domain_settings($domain_uuid); + foreach($result as $key => $row) { + $settings[$key] = $row; + } + } + + //get the user settings + if (!empty($user_uuid)) { + $result = $this->user_settings($domain_uuid, $user_uuid); + foreach($result as $key => $row) { + $settings[$key] = $row; + } + } + + //add settings to the session array + if (!defined('STDIN') && !empty($settings)) { + foreach($settings as $key => $row) { + $_SESSION[$key] = $row; + } + } + + //return the settings array + return $settings; + } + +} + +?>