From 80d95fe0c2c0b1c21dfacd25e885aeaffc0dbe40 Mon Sep 17 00:00:00 2001 From: FusionPBX Date: Sat, 12 Oct 2019 15:37:22 -0600 Subject: [PATCH] Update menu.php --- resources/classes/menu.php | 87 +++++++++++++++++++++++++------------- 1 file changed, 57 insertions(+), 30 deletions(-) diff --git a/resources/classes/menu.php b/resources/classes/menu.php index 8ce4920b07..8dcae2ccde 100644 --- a/resources/classes/menu.php +++ b/resources/classes/menu.php @@ -17,7 +17,7 @@ The Initial Developer of the Original Code is Mark J Crane - 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;