Pārlūkot izejas kodu

Update menu.php

FusionPBX 5 gadi atpakaļ
vecāks
revīzija
c286bb1e33
1 mainītis faili ar 57 papildinājumiem un 30 dzēšanām
  1. 57 30
      resources/classes/menu.php

+ 57 - 30
resources/classes/menu.php

@@ -17,7 +17,7 @@
 
 	The Initial Developer of the Original Code is
 	Mark J Crane <[email protected]>
-	Copyright (C) 2010 - 2014
+	Copyright (C) 2010 - 2019
 	All Rights Reserved.
 
 	Contributor(s):
@@ -49,6 +49,7 @@ if (!class_exists('menu')) {
 					$database = new database;
 					$database->execute($sql, $parameters);
 					unset($sql, $parameters);
+
 				//remove existing unprotected menu item groups
 					$sql = "delete from v_menu_item_groups ";
 					$sql .= "where menu_uuid = :menu_uuid ";
@@ -65,6 +66,7 @@ if (!class_exists('menu')) {
 					$database = new database;
 					$database->execute($sql, $parameters);
 					unset($sql, $parameters);
+
 				//remove existing unprotected menu items
 					$sql  = "delete from v_menu_items ";
 					$sql .= "where menu_uuid = :menu_uuid ";
@@ -102,6 +104,26 @@ if (!class_exists('menu')) {
 				//get the list of languages
 					$language = new text;
 
+				//create a uuid array of the original uuid used as the key and new uuid as the value
+					if (is_array($apps)) {
+						$x = 0;
+						foreach ($apps as $row) {
+							if (is_array($row['menu'])) {
+								foreach ($row['menu'] as $menu) {
+									$uuid_array[$menu['uuid']] = uuid();
+								}
+							}
+						}
+					}
+
+				//if the item uuid is not currently in the db then add it
+					$sql = "select * from v_menu_items ";
+					$sql .= "where menu_uuid = :menu_uuid ";
+					$parameters['menu_uuid'] = $this->menu_uuid;
+					$parameters['uuid'] = $uuid;
+					$database = new database;
+					$menu_items = $database->select($sql, $parameters, 'all');
+
 				//use the app array to restore the default menu
 					if (is_array($apps)) {
 						$x = 0;
@@ -115,8 +137,9 @@ if (!class_exists('menu')) {
 										else {
 											$menu_item_title = $menu['title']['en-us'];
 										}
-										$menu_item_uuid = $menu['uuid'];
-										$menu_item_parent_uuid = $menu['parent_uuid'];
+										$uuid = $menu['uuid'];
+										$menu_item_uuid = $uuid_array[$menu['uuid']];
+										$menu_item_parent_uuid = $uuid_array[$menu['parent_uuid']];
 										$menu_item_category = $menu['category'];
 										$menu_item_icon = $menu['icon'];
 										$menu_item_path = $menu['path'];
@@ -129,32 +152,34 @@ if (!class_exists('menu')) {
 									//if the item uuid is not currently in the db then add it
 										$sql = "select count(*) from v_menu_items ";
 										$sql .= "where menu_uuid = :menu_uuid ";
-										$sql .= "and menu_item_uuid = :menu_item_uuid ";
+										$sql .= "and uuid = :uuid ";
 										$parameters['menu_uuid'] = $this->menu_uuid;
-										$parameters['menu_item_uuid'] = $menu_item_uuid;
+										$parameters['uuid'] = $uuid;
 										$database = new database;
 										$num_rows = $database->select($sql, $parameters, 'column');
 										if ($num_rows == 0) {
+
 											//menu found the menu
 												$menu_item_exists = false;
 
-											if ($menu_item_uuid != $menu_item_parent_uuid) {
-												//build insert array
-													$array['menu_items'][$x]['menu_item_uuid'] = $menu_item_uuid;
-													$array['menu_items'][$x]['menu_uuid'] = $this->menu_uuid;
-													$array['menu_items'][$x]['menu_item_title'] = $menu_item_title;
-													$array['menu_items'][$x]['menu_item_link'] = $menu_item_path;
-													$array['menu_items'][$x]['menu_item_category'] = $menu_item_category;
-													$array['menu_items'][$x]['menu_item_icon'] = $menu_item_icon;
-													if (strlen($menu_item_order) > 0) {
-														$array['menu_items'][$x]['menu_item_order'] = $menu_item_order;
-													}
-													if (is_uuid($menu_item_parent_uuid)) {
-														$array['menu_items'][$x]['menu_item_parent_uuid'] = $menu_item_parent_uuid;
-													}
-													$array['menu_items'][$x]['menu_item_description'] = $menu_item_description;
-													$x++;
-											}
+											//build the menu array
+												if ($menu_item_uuid != $menu_item_parent_uuid) {
+														$array['menu_items'][$x]['menu_item_uuid'] = $menu_item_uuid;
+														$array['menu_items'][$x]['menu_uuid'] = $this->menu_uuid;
+														$array['menu_items'][$x]['uuid'] = $uuid;
+														$array['menu_items'][$x]['menu_item_title'] = $menu_item_title;
+														$array['menu_items'][$x]['menu_item_link'] = $menu_item_path;
+														$array['menu_items'][$x]['menu_item_category'] = $menu_item_category;
+														$array['menu_items'][$x]['menu_item_icon'] = $menu_item_icon;
+														if (strlen($menu_item_order) > 0) {
+															$array['menu_items'][$x]['menu_item_order'] = $menu_item_order;
+														}
+														if (is_uuid($menu_item_parent_uuid)) {
+															$array['menu_items'][$x]['menu_item_parent_uuid'] = $menu_item_parent_uuid;
+														}
+														$array['menu_items'][$x]['menu_item_description'] = $menu_item_description;
+														$x++;
+												}
 
 										}
 										unset($sql, $parameters, $num_rows);
@@ -162,13 +187,14 @@ if (!class_exists('menu')) {
 									//set the menu languages
 										if (!$menu_item_exists && is_array($language->languages)) {
 											foreach ($language->languages as $menu_language) {
-												$menu_item_title = $menu["title"][$menu_language];
-												if (strlen($menu_item_title) == 0) {
-													$menu_item_title = $menu["title"]['en-us'];
-												}
-												$menu_language_uuid = uuid();
+												//set the menu item title
+													$menu_item_title = $menu["title"][$menu_language];
+													if (strlen($menu_item_title) == 0) {
+														$menu_item_title = $menu["title"]['en-us'];
+													}
+
 												//build insert array
-													$array['menu_languages'][$x]['menu_language_uuid'] = $menu_language_uuid;
+													$array['menu_languages'][$x]['menu_language_uuid'] = uuid();
 													$array['menu_languages'][$x]['menu_item_uuid'] = $menu_item_uuid;
 													$array['menu_languages'][$x]['menu_uuid'] = $this->menu_uuid;
 													$array['menu_languages'][$x]['menu_language'] = $menu_language;
@@ -226,7 +252,7 @@ if (!class_exists('menu')) {
 											$sql .= "and menu_uuid = :menu_uuid ";
 											$sql .= "and group_name = :group_name ";
 											$sql .= "and group_uuid = :group_uuid ";
-											$parameters['menu_item_uuid'] = $sub_row['uuid'];
+											$parameters['menu_item_uuid'] = $uuid_array[$sub_row['uuid']];
 											$parameters['menu_uuid'] = $this->menu_uuid;
 											$parameters['group_name'] = $group;
 											$parameters['group_uuid'] = $group_uuids[$group];
@@ -236,7 +262,7 @@ if (!class_exists('menu')) {
 												//no menu item groups found, build insert array for defaults
 													$array['menu_item_groups'][$x]['menu_item_group_uuid'] = uuid();
 													$array['menu_item_groups'][$x]['menu_uuid'] = $this->menu_uuid;
-													$array['menu_item_groups'][$x]['menu_item_uuid'] = $sub_row['uuid'];
+													$array['menu_item_groups'][$x]['menu_item_uuid'] = $uuid_array[$sub_row['uuid']];
 													$array['menu_item_groups'][$x]['group_name'] = $group;
 													$array['menu_item_groups'][$x]['group_uuid'] = $group_uuids[$group];
 													$x++;
@@ -247,6 +273,7 @@ if (!class_exists('menu')) {
 								}
 							}
 						}
+
 						if (is_array($array) && @sizeof($array) != 0) {
 							//grant temporary permissions
 								$p = new permissions;