diff --git a/resources/classes/menu.php b/resources/classes/menu.php index a01d915337..bd1574c786 100644 --- a/resources/classes/menu.php +++ b/resources/classes/menu.php @@ -37,7 +37,16 @@ if (!class_exists('menu')) { $db = $this->db; //remove existing menu languages $sql = "delete from v_menu_languages "; - $sql .= "where menu_uuid = '".$this->menu_uuid."';"; + $sql .= "where menu_uuid = '".$this->menu_uuid."' "; + $sql .= "and menu_item_uuid in ( "; + $sql .= " select menu_item_uuid "; + $sql .= " from v_menu_items "; + $sql .= " where menu_uuid = '".$this->menu_uuid."' "; + $sql .= " and ( "; + $sql .= " menu_item_protected <> 'true' "; + $sql .= " or menu_item_protected is null "; + $sql .= " ) "; + $sql .= ");"; $db->exec(check_sql($sql)); //remove existing unprotected menu item groups $sql = "delete from v_menu_item_groups "; @@ -111,7 +120,7 @@ if (!class_exists('menu')) { $menu_item_description = $menu['desc']; //menu found set the default - $menu_item_found = false; + $menu_item_exists = true; //if the item uuid is not currently in the db then add it $sql = "select * from v_menu_items "; @@ -124,7 +133,7 @@ if (!class_exists('menu')) { if (count($result) == 0) { //menu found the menu - $menu_item_found = true; + $menu_item_exists = false; //insert the default menu into the database $sql = "insert into v_menu_items "; @@ -170,30 +179,32 @@ if (!class_exists('menu')) { } //set the menu 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']; + if (!$menu_item_exists) { + 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(); + $sql = "insert into v_menu_languages "; + $sql .= "("; + $sql .= "menu_language_uuid, "; + $sql .= "menu_item_uuid, "; + $sql .= "menu_uuid, "; + $sql .= "menu_language, "; + $sql .= "menu_item_title "; + $sql .= ") "; + $sql .= "values "; + $sql .= "("; + $sql .= "'".$menu_language_uuid."', "; + $sql .= "'".$menu_item_uuid."', "; + $sql .= "'".$this->menu_uuid."', "; + $sql .= "'".$menu_language."', "; + $sql .= "'".check_str($menu_item_title)."' "; + $sql .= ")"; + $db->exec(check_sql($sql)); + unset($sql); } - $menu_language_uuid = uuid(); - $sql = "insert into v_menu_languages "; - $sql .= "("; - $sql .= "menu_language_uuid, "; - $sql .= "menu_item_uuid, "; - $sql .= "menu_uuid, "; - $sql .= "menu_language, "; - $sql .= "menu_item_title "; - $sql .= ") "; - $sql .= "values "; - $sql .= "("; - $sql .= "'".$menu_language_uuid."', "; - $sql .= "'".$menu_item_uuid."', "; - $sql .= "'".$this->menu_uuid."', "; - $sql .= "'".$menu_language."', "; - $sql .= "'".check_str($menu_item_title)."' "; - $sql .= ")"; - $db->exec(check_sql($sql)); - unset($sql); } }