|
@@ -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;
|