ソースを参照

Use the database object efficiently

FusionPBX 1 年間 前
コミット
5fe8d7a9ea
1 ファイル変更46 行追加50 行削除
  1. 46 50
      resources/classes/menu.php

+ 46 - 50
resources/classes/menu.php

@@ -49,14 +49,27 @@ if (!class_exists('menu')) {
 		public $menu_language;
 		public $text;
 
+		/**
+		 * Set in the constructor. Must be a database object and cannot be null.
+		 * @var database Database Object
+		 */
+		private $database;
+
 		/**
 		 * called when the object is created
 		 */
-		public function __construct() {
+		public function __construct($setting_array = []) {
 			//assign the variables
-				$this->app_name = 'menus';
-				$this->app_uuid = 'f4b3b3d2-6287-489c-2a00-64529e46f2d7';
-				$this->location = 'menus.php';
+			$this->app_name = 'menus';
+			$this->app_uuid = 'f4b3b3d2-6287-489c-2a00-64529e46f2d7';
+			$this->location = 'menus.php';
+
+			//open a database connection
+			if (empty($setting_array['database'])) {
+				$this->database = database::new();
+			} else {
+				$this->database = $setting_array['database'];
+			}
 		}
 
 		/**
@@ -113,10 +126,9 @@ if (!class_exists('menu')) {
 									$p->add('menu_language_delete', 'temp');
 
 								//execute delete
-									$database = new database;
-									$database->app_name = $this->app_name;
-									$database->app_uuid = $this->app_uuid;
-									$database->delete($array);
+									$this->database->app_name = $this->app_name;
+									$this->database->app_uuid = $this->app_uuid;
+									$this->database->delete($array);
 									unset($array);
 
 								//revoke temporary permissions
@@ -174,8 +186,7 @@ if (!class_exists('menu')) {
 							if (!empty($uuids) && @sizeof($uuids) != 0) {
 								$sql = "select menu_item_uuid as uuid from v_".$this->table." ";
 								$sql .= "where menu_item_parent_uuid in (".implode(', ', $uuids).") ";
-								$database = new database;
-								$rows = $database->select($sql, null, 'all');
+								$rows = $this->database->select($sql, null, 'all');
 								if (!empty($rows) && @sizeof($rows) != 0) {
 									foreach ($rows as $row) {
 										//remove menu languages
@@ -199,10 +210,9 @@ if (!class_exists('menu')) {
 									$p->add('menu_item_group_delete', 'temp');
 
 								//execute delete
-									$database = new database;
-									$database->app_name = $this->app_name;
-									$database->app_uuid = $this->app_uuid;
-									$database->delete($array);
+									$this->database->app_name = $this->app_name;
+									$this->database->app_uuid = $this->app_uuid;
+									$this->database->delete($array);
 									unset($array);
 
 								//revoke temporary permissions
@@ -252,9 +262,8 @@ if (!class_exists('menu')) {
 							if (!empty($uuids) && is_array($uuids) && @sizeof($uuids) != 0) {
 								$sql = "select ".$this->name."_uuid as uuid, ".$this->toggle_field." as toggle from v_".$this->table." ";
 								$sql .= "where ".$this->name."_uuid in (".implode(', ', $uuids).") ";
-								$database = new database;
 								$parameters = null;
-								$rows = $database->select($sql, $parameters, 'all');
+								$rows = $this->database->select($sql, $parameters, 'all');
 								if (is_array($rows) && @sizeof($rows) != 0) {
 									foreach ($rows as $row) {
 										$states[$row['uuid']] = $row['toggle'] == '' ? $this->toggle_values[1] : $row['toggle'];
@@ -279,10 +288,9 @@ if (!class_exists('menu')) {
 						//save the changes
 							if (!empty($array) && is_array($array) && @sizeof($array) != 0) {
 								//save the array
-									$database = new database;
-									$database->app_name = $this->app_name;
-									$database->app_uuid = $this->app_uuid;
-									$database->save($array);
+									$this->database->app_name = $this->app_name;
+									$this->database->app_uuid = $this->app_uuid;
+									$this->database->save($array);
 									unset($array);
 
 								//set message
@@ -310,8 +318,7 @@ if (!class_exists('menu')) {
 				$sql .= "	) ";
 				$sql .= ") ";
 				$parameters['menu_uuid'] = $this->menu_uuid;
-				$database = new database;
-				$database->execute($sql, $parameters);
+				$this->database->execute($sql, $parameters);
 				unset($sql, $parameters);
 
 			//remove existing unprotected menu item groups
@@ -327,8 +334,7 @@ if (!class_exists('menu')) {
 				$sql .= "	) ";
 				$sql .= ") ";
 				$parameters['menu_uuid'] = $this->menu_uuid;
-				$database = new database;
-				$database->execute($sql, $parameters);
+				$this->database->execute($sql, $parameters);
 				unset($sql, $parameters);
 
 			//remove existing unprotected menu items
@@ -339,8 +345,7 @@ if (!class_exists('menu')) {
 				$sql .= "	or menu_item_protected is null ";
 				$sql .= ") ";
 				$parameters['menu_uuid'] = $this->menu_uuid;
-				$database = new database;
-				$database->execute($sql, $parameters);
+				$this->database->execute($sql, $parameters);
 				unset($sql, $parameters);
 		}
 
@@ -388,8 +393,7 @@ if (!class_exists('menu')) {
 				$sql = "select * from v_menu_items ";
 				$sql .= "where menu_uuid = :menu_uuid ";
 				$parameters['menu_uuid'] = $this->menu_uuid;
-				$database = new database;
-				$menu_items = $database->select($sql, $parameters, 'all');
+				$menu_items = $this->database->select($sql, $parameters, 'all');
 
 			//use the app array to restore the default menu
 				if (is_array($apps)) {
@@ -493,10 +497,9 @@ if (!class_exists('menu')) {
 							$p->add('menu_item_add', 'temp');
 							$p->add('menu_language_add', 'temp');
 						//execute insert
-							$database = new database;
-							$database->app_name = 'menu';
-							$database->app_uuid = 'f4b3b3d2-6287-489c-2a00-64529e46f2d7';
-							$database->save($array);
+							$this->database->app_name = 'menu';
+							$this->database->app_uuid = 'f4b3b3d2-6287-489c-2a00-64529e46f2d7';
+							$this->database->save($array);
 							unset($array);
 						//revoke temporary permissions
 							$p->delete('menu_item_add', 'temp');
@@ -511,8 +514,7 @@ if (!class_exists('menu')) {
 			//get default global group_uuids
 				$sql = "select group_uuid, group_name from v_groups ";
 				$sql .= "where domain_uuid is null ";
-				$database = new database;
-				$result = $database->select($sql, null, 'all');
+				$result = $this->database->select($sql, null, 'all');
 				if (is_array($result) && @sizeof($result) != 0) {
 					foreach ($result as $row) {
 						$group_uuids[$row['group_name']] = $row['group_uuid'];
@@ -537,8 +539,7 @@ if (!class_exists('menu')) {
 										$parameters['menu_uuid'] = $this->menu_uuid;
 										$parameters['group_name'] = $group;
 										$parameters['group_uuid'] = $group_uuids[$group] ?? null;
-										$database = new database;
-										$num_rows = $database->select($sql, $parameters, 'column');
+										$num_rows = $this->database->select($sql, $parameters, 'column');
 										if ($num_rows == 0) {
 											//no menu item groups found, build insert array for defaults
 												$array['menu_item_groups'][$x]['menu_item_group_uuid'] = uuid();
@@ -560,10 +561,9 @@ if (!class_exists('menu')) {
 							$p = new permissions;
 							$p->add('menu_item_group_add', 'temp');
 						//execute insert
-							$database = new database;
-							$database->app_name = 'menu';
-							$database->app_uuid = 'f4b3b3d2-6287-489c-2a00-64529e46f2d7';
-							$database->save($array);
+							$this->database->app_name = 'menu';
+							$this->database->app_uuid = 'f4b3b3d2-6287-489c-2a00-64529e46f2d7';
+							$this->database->save($array);
 							unset($array);
 						//revoke temporary permissions
 							$p->delete('menu_item_group_add', 'temp');
@@ -758,8 +758,7 @@ if (!class_exists('menu')) {
 				$sql .= "order by i.menu_item_order asc ";
 				$parameters['menu_language'] = $_SESSION['domain']['language']['code'] ?? null;
 				$parameters['menu_uuid'] = $this->menu_uuid;
-				$database = new database;
-				$result = $database->select($sql, $parameters, 'all');
+				$result = $this->database->select($sql, $parameters, 'all');
 				unset($sql, $parameters);
 
 			//save the menu into an array
@@ -828,8 +827,7 @@ if (!class_exists('menu')) {
 				$parameters['menu_language'] = $_SESSION['domain']['language']['code'];
 				$parameters['menu_uuid'] = $this->menu_uuid;
 				$parameters['menu_item_parent_uuid'] = $menu_item_uuid;
-				$database = new database;
-				$sub_result = $database->select($sql, $parameters, 'all');
+				$sub_result = $this->database->select($sql, $parameters, 'all');
 				unset($sql, $parameters);
 
 			//save the child menu into an array
@@ -880,8 +878,7 @@ if (!class_exists('menu')) {
 				$sql = "select count(*) as count from v_menus ";
 				$sql .= "where menu_uuid = :menu_uuid ";
 				$parameters['menu_uuid'] = $this->menu_uuid;
-				$database = new database;
-				$num_rows = $database->select($sql, $parameters, 'column');
+				$num_rows = $this->database->select($sql, $parameters, 'column');
 				if ($num_rows == 0) {
 					//built insert array
 						$array['menus'][0]['menu_uuid'] = $this->menu_uuid;
@@ -894,10 +891,9 @@ if (!class_exists('menu')) {
 						$p->add('menu_add', 'temp');
 
 					//execute insert
-						$database = new database;
-						$database->app_name = 'menu';
-						$database->app_uuid = 'f4b3b3d2-6287-489c-2a00-64529e46f2d7';
-						$database->save($array);
+						$this->database->app_name = 'menu';
+						$this->database->app_uuid = 'f4b3b3d2-6287-489c-2a00-64529e46f2d7';
+						$this->database->save($array);
 						unset($array);
 
 					//revoke temporary permissions