Эх сурвалжийг харах

settings class use get and refine further

FusionPBX 2 жил өмнө
parent
commit
068624a140
1 өөрчлөгдсөн 99 нэмэгдсэн , 104 устгасан
  1. 99 104
      resources/classes/settings.php

+ 99 - 104
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) {
+
+		if (empty($category)) {
+			return $this->settings;
+		}
+		elseif (empty($subcategory)) {
+			return $this->settings[$category];
+		}
+		else {
+			return $this->settings[$category][$subcategory];
+		}
+
+	}
 
-		//set default parameters		
-		$parameters = null;
+	/**
+	 * 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;
 	}
 
 }