diff --git a/resources/classes/settings.php b/resources/classes/settings.php index f59158ff85..4b43fc5b60 100644 --- a/resources/classes/settings.php +++ b/resources/classes/settings.php @@ -2,134 +2,177 @@ /** * settings class - * - * @method array default_settings - * @method array domain_settings - * @method array user_settings - * @method array all + * */ class settings { + private $domain_uuid; + private $user_uuid; + private $device_uuid; + private $device_profile_uuid; + private $category; + private $settings; + private $database; + /** * Called when the object is created + * @param array setting_array + * @depends database::new() */ - public function __construct() { - //place holder + public function __construct($setting_array = []) { + + //open a database connection + $this->database = database::new(); + + //set the values from the array + $this->domain_uuid = $setting_array['domain_uuid'] ?? null; + $this->user_uuid = $setting_array['user_uuid'] ?? null; + $this->device_uuid = $setting_array['device_uuid'] ?? null; + $this->device_profile_uuid = $setting_array['device_profile_uuid'] ?? null; + $this->category = $setting_array['category'] ?? null; + + //set the default settings + $this->default_settings(); + + //set the domains settings + //if (file_exists($_SERVER["PROJECT_ROOT"]."/app/domains/app_config.php")) { + // include "app/domains/resources/settings.php"; + //} + + //set the domain settings + if (!empty($this->domain_uuid)) { + $this->domain_settings(); + } + + //set the user settings + if (!empty($this->user_uuid)) { + $this->user_settings(); + } + + //debug show the settings + //print_r($this->settings); + + //add settings to the session array + //if (!defined('STDIN') && !empty($this->settings)) { + // foreach($this->settings as $key => $row) { + // $_SESSION[$key] = $row; + // } + //} + } /** - * get the default settings - * @var string $setting_category the category + * get the value + * @param text category + * @param text subcategory */ - public function default_settings($setting_category = null) { + public function get($category = null, $subcategory = null) { - //set default parameters - $parameters = null; + if (empty($category)) { + return $this->settings; + } + elseif (empty($subcategory)) { + return $this->settings[$category]; + } + else { + return $this->settings[$category][$subcategory]; + } + + } + + /** + * set the default settings + * + */ + private function default_settings() { //get the default settings $sql = "select * from v_default_settings "; $sql .= "where default_setting_enabled = 'true' "; - if (!empty($setting_category)) { + if (!empty($this->category)) { $sql .= "and default_setting_category = :default_setting_category "; - $parameters['default_setting_category'] = $setting_category; + $parameters['default_setting_category'] = $this->category; } $sql .= "order by default_setting_order asc "; - $database = new database; - $result = $database->select($sql, $parameters, 'all'); - if (is_array($result) && @sizeof($result) != 0) { + $result = $this->database->select($sql, $parameters ?? null, 'all'); + if (!empty($result)) { 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']; + $this->settings[$category][] = $row['default_setting_value']; } else { - $settings[$category][$name] = $row['default_setting_value']; + $this->settings[$category] = $row['default_setting_value']; } } else { if ($name == "array") { - $settings[$category][$subcategory][] = $row['default_setting_value']; + $this->settings[$category][$subcategory][] = $row['default_setting_value']; } else { - $settings[$category][$subcategory]['uuid'] = $row['default_setting_uuid']; - $settings[$category][$subcategory][$name] = $row['default_setting_value']; + $this->settings[$category][$subcategory] = $row['default_setting_value']; } } } } unset($sql, $result, $row); - - //return the settings array - return $settings; - } /** - * get the domain settings - * @var uuid domain_uuid + * set the domain settings */ - public function domain_settings($domain_uuid) { + private function domain_settings() { $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'); + $parameters['domain_uuid'] = $this->domain_uuid; + $result = $this->database->select($sql, $parameters, 'all'); unset($sql, $parameters); - - if (is_array($result) && sizeof($result) != 0) { + if (!empty($result)) { foreach ($result as $row) { $name = $row['domain_setting_name']; $category = $row['domain_setting_category']; $subcategory = $row['domain_setting_subcategory']; - if ($subcategory != '') { + if (empty($subcategory)) { if ($name == "array") { - $settings[$category][] = $row['default_setting_value']; + $this->settings[$category][] = $row['domain_setting_value']; } else { - $settings[$category][$name] = $row['default_setting_value']; + $this->settings[$category] = $row['domain_setting_value']; } } else { if ($name == "array") { - $settings[$category][$subcategory][] = $row['default_setting_value']; + $this->settings[$category][$subcategory][] = $row['domain_setting_value']; } else { - $settings[$category][$subcategory]['uuid'] = $row['default_setting_uuid']; - $settings[$category][$subcategory][$name] = $row['default_setting_value']; + $this->settings[$category][$subcategory] = $row['domain_setting_value']; } } } } unset($result, $row); - //return the settings array - return $settings; - } /** - * get the user settings - * @var uuid domain_uuid - * @var uuid user_uuid + * set the user settings */ - public function user_settings($domain_uuid, $user_uuid) { + private function user_settings() { - //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'); + $parameters['domain_uuid'] = $this->domain_uuid; + $parameters['user_uuid'] = $this->user_uuid; + $result = $this->database->select($sql, $parameters, 'all'); if (is_array($result)) { foreach ($result as $row) { if ($row['user_setting_enabled'] == 'true') { @@ -138,74 +181,26 @@ class settings { $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']; + $this->settings[$category][] = $row['user_setting_value']; } else { - $settings[$category][$name] = $row['user_setting_value']; + $this->settings[$category] = $row['user_setting_value']; } } else { - //$$category[$subcategory][$name] = $row['domain_setting_value']; if ($name == "array") { - $settings[$category][$subcategory][] = $row['user_setting_value']; + $this->settings[$category][$subcategory][] = $row['user_setting_value']; } else { - $settings[$category][$subcategory][$name] = $row['user_setting_value']; + $this->settings[$category][$subcategory] = $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; } }