Update menu.php

This commit is contained in:
FusionPBX
2019-10-12 15:37:22 -06:00
committed by GitHub
parent 8f628a2bed
commit 80d95fe0c2

View File

@@ -17,7 +17,7 @@
The Initial Developer of the Original Code is
Mark J Crane <markjcrane@fusionpbx.com>
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;