diff --git a/core/menu/menu_restore_all_default.php b/core/menu/menu_restore_all_default.php index c5ae851483..2dd43b2b0a 100644 --- a/core/menu/menu_restore_all_default.php +++ b/core/menu/menu_restore_all_default.php @@ -36,14 +36,14 @@ else { //get the http value and set as a php variable $menu_uuid = check_str($_REQUEST["menu_uuid"]); - $menu_language = check_str($_REQUEST["menu_language"]); + $menu_language = check_str($_REQUEST["menu_language"]); //menu restore default require_once "resources/classes/menu.php"; $menu = new menu; $menu->db = $db; $menu->menu_uuid = $menu_uuid; - $menu->menu_language = $menu_language; + $menu->menu_language = $menu_language; $menu->delete(); $menu->restore2(); diff --git a/resources/classes/menu.php b/resources/classes/menu.php index 7411e559b2..1e7b719d82 100644 --- a/resources/classes/menu.php +++ b/resources/classes/menu.php @@ -27,6 +27,7 @@ //define the menu class class menu { public $menu_uuid; + public $menu_language; //delete items in the menu that are not protected function delete() { @@ -57,12 +58,19 @@ $x++; } + //begin the transaction + $db->beginTransaction(); + //use the app array to restore the default menu - //$db->beginTransaction(); foreach ($apps as $row) { foreach ($row['menu'] as $menu) { //set the variables - $menu_item_title = $menu['title']['en-us']; + if (strlen($menu['title'][$this->menu_language]) > 0) { + $menu_item_title = $menu['title'][$this->menu_language]; + } + else { + $menu_item_title = $menu['title']['en-us']; + } $menu_item_uuid = $menu['uuid']; $menu_item_parent_uuid = $menu['parent_uuid']; $menu_item_category = $menu['category']; @@ -73,7 +81,7 @@ //if the item uuid is not currently in the db then add it $sql = "select * from v_menu_items "; $sql .= "where menu_uuid = '".$this->menu_uuid."' "; - $sql .= "and menu_item_uuid = '$menu_item_uuid' "; + $sql .= "and menu_item_uuid = '".$menu_item_uuid."' "; $prep_statement = $db->prepare(check_sql($sql)); if ($prep_statement) { $prep_statement->execute(); @@ -84,7 +92,6 @@ $sql .= "("; $sql .= "menu_item_uuid, "; $sql .= "menu_uuid, "; - //$sql .= "menu_item_language, "; $sql .= "menu_item_title, "; $sql .= "menu_item_link, "; $sql .= "menu_item_category, "; @@ -100,8 +107,7 @@ $sql .= "("; $sql .= "'".$menu_item_uuid."', "; $sql .= "'".$this->menu_uuid."', "; - //$sql .= "'$menu_item_language', "; - $sql .= "'$menu_item_title', "; + $sql .= "'".check_str($menu_item_title)."', "; $sql .= "'$menu_item_path', "; $sql .= "'$menu_item_category', "; if (strlen($menu_item_order) > 0) { @@ -119,6 +125,7 @@ $db->exec(check_sql($sql)); } unset($sql); + //set the menu languages foreach ($menu["title"] as $menu_language => $menu_item_title) { $menu_language_uuid = uuid(); @@ -135,8 +142,8 @@ $sql .= "'".$menu_language_uuid."', "; $sql .= "'".$menu_item_uuid."', "; $sql .= "'".$this->menu_uuid."', "; - $sql .= "'$menu_language', "; - $sql .= "'$menu_item_title' "; + $sql .= "'".$menu_language."', "; + $sql .= "'".check_str($menu_item_title)."' "; $sql .= ")"; $db->exec(check_sql($sql)); unset($sql); @@ -146,139 +153,12 @@ } } - foreach($apps as $row) { - foreach ($row['permissions'] as $menu) { - //set the variables - if ($menu['groups']) { - foreach ($menu['groups'] as $group) { - //if the item uuid is not currently in the db then add it - $sql = "select * from v_group_permissions "; - $sql .= "where permission_name = '".$menu['name']."' "; - $sql .= "and domain_uuid = '".$row2['domain_uuid']."' "; - $sql .= "and group_name = '$group' "; - $prep_statement = $db->prepare(check_sql($sql)); - if ($prep_statement) { - $prep_statement->execute(); - $result = $prep_statement->fetchAll(PDO::FETCH_ASSOC); - unset ($prep_statement); - if (count($result) == 0) { - //insert the default menu into the database - $sql = "insert into v_group_permissions "; - $sql .= "("; - $sql .= "group_permission_uuid, "; - $sql .= "domain_uuid, "; - $sql .= "permission_name, "; - $sql .= "group_name "; - $sql .= ") "; - $sql .= "values "; - $sql .= "("; - $sql .= "'".uuid()."', "; - $sql .= "'".$row2["domain_uuid"]."', "; - $sql .= "'".$menu['name']."', "; - $sql .= "'".$group."' "; - $sql .= ");"; - $db->exec(check_sql($sql)); - unset($sql); - } - } - } - } - } - } - - //use the app array to restore the default menu - //$db->beginTransaction(); - foreach ($apps as $row) { - foreach ($row['menu'] as $menu) { - //set the variables - $menu_item_title = $menu['title']['en-us']; - $menu_item_uuid = $menu['uuid']; - $menu_item_parent_uuid = $menu['parent_uuid']; - $menu_item_category = $menu['category']; - $menu_item_path = $menu['path']; - $menu_item_order = $menu['order']; - $menu_item_description = $menu['desc']; - - //if the item uuid is not currently in the db then add it - $sql = "select * from v_menu_items "; - $sql .= "where menu_uuid = '".$this->menu_uuid."' "; - $sql .= "and menu_item_uuid = '$menu_item_uuid' "; - $prep_statement = $db->prepare(check_sql($sql)); - if ($prep_statement) { - $prep_statement->execute(); - $result = $prep_statement->fetchAll(PDO::FETCH_ASSOC); - if (count($result) == 0) { - //insert the default menu into the database - $sql = "insert into v_menu_items "; - $sql .= "("; - $sql .= "menu_item_uuid, "; - $sql .= "menu_uuid, "; - //$sql .= "menu_item_language, "; - $sql .= "menu_item_title, "; - $sql .= "menu_item_link, "; - $sql .= "menu_item_category, "; - if (strlen($menu_item_order) > 0) { - $sql .= "menu_item_order, "; - } - if (strlen($menu_item_parent_uuid) > 0) { - $sql .= "menu_item_parent_uuid, "; - } - $sql .= "menu_item_description "; - $sql .= ") "; - $sql .= "values "; - $sql .= "("; - $sql .= "'".$menu_item_uuid."', "; - $sql .= "'".$this->menu_uuid."', "; - //$sql .= "'$menu_item_language', "; - $sql .= "'$menu_item_title', "; - $sql .= "'$menu_item_path', "; - $sql .= "'$menu_item_category', "; - if (strlen($menu_item_order) > 0) { - $sql .= "'$menu_item_order', "; - } - if (strlen($menu_item_parent_uuid) > 0) { - $sql .= "'$menu_item_parent_uuid', "; - } - $sql .= "'$menu_item_description' "; - $sql .= ")"; - if ($menu_item_uuid == $menu_item_parent_uuid) { - //echo $sql."
\n"; - } - else { - $db->exec(check_sql($sql)); - } - unset($sql); - //set the menu languages - foreach ($menu["title"] as $menu_language => $menu_item_title) { - $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 .= "'$menu_item_title' "; - $sql .= ")"; - $db->exec(check_sql($sql)); - unset($sql); - } - } - } - } - } - $sql = "delete from v_group_permissions "; + //set default group permissions + $sql = "DELETE FROM v_group_permissions "; $db->query($sql); unset($sql); - $sql2 = " Select domain_uuid from v_domains "; + $sql2 = "SELECT domain_uuid FROM v_domains "; $prep_statement2 = $db->prepare(check_sql($sql2)); $prep_statement2->execute(); $result2 = $prep_statement2->fetchAll(PDO::FETCH_ASSOC); @@ -289,11 +169,11 @@ //set the variables if ($menu['groups']) { foreach ($menu['groups'] as $group) { - //if the item uuid is not currently in the db then add it - $sql = "select * from v_group_permissions "; - $sql .= "where permission_name = '".$menu['name']."' "; - $sql .= "and domain_uuid = '".$row2['domain_uuid']."' "; - $sql .= "and group_name = '$group' "; + //assign the groups to the permissions + $sql = "SELECT * FROM v_group_permissions "; + $sql .= "WHERE permission_name = '".$menu['name']."' "; + $sql .= "AND domain_uuid = '".$row2['domain_uuid']."' "; + $sql .= "AND group_name = '$group' "; $prep_statement = $db->prepare(check_sql($sql)); if ($prep_statement) { $prep_statement->execute(); @@ -326,7 +206,7 @@ } unset($sql2, $result2); - //if there are no groups listed in v_menu_item_groups under menu_uuid then add the default groups + //if there are no groups listed in v_menu_item_groups under menu_item_uuid then add the default groups foreach($apps as $app) { foreach ($app['menu'] as $sub_row) { foreach ($sub_row['groups'] as $group) { @@ -357,6 +237,9 @@ } } } + + //commit the transaction + $db->commit(); } //end function //restore the menu @@ -364,6 +247,9 @@ //set the variables $db = $this->db; + //begin the transaction + $db->beginTransaction(); + //get the $apps array from the installed apps from the core and mod directories $config_list = glob($_SERVER["DOCUMENT_ROOT"] . PROJECT_PATH . "/*/*/app_config.php"); $x=0; @@ -377,7 +263,12 @@ foreach ($apps as $row) { foreach ($row['menu'] as $menu) { //set the variables - $menu_item_title = $menu['title']['en-us']; + if (strlen($menu['title'][$this->menu_language]) > 0) { + $menu_item_title = $menu['title'][$this->menu_language]; + } + else { + $menu_item_title = $menu['title']['en-us']; + } $menu_item_uuid = $menu['uuid']; $menu_item_parent_uuid = $menu['parent_uuid']; $menu_item_category = $menu['category']; @@ -399,7 +290,6 @@ $sql .= "("; $sql .= "menu_item_uuid, "; $sql .= "menu_uuid, "; - //$sql .= "menu_item_language, "; $sql .= "menu_item_title, "; $sql .= "menu_item_link, "; $sql .= "menu_item_category, "; @@ -415,8 +305,7 @@ $sql .= "("; $sql .= "'".$menu_item_uuid."', "; $sql .= "'".$this->menu_uuid."', "; - //$sql .= "'$menu_item_language', "; - $sql .= "'$menu_item_title', "; + $sql .= "'".check_str($menu_item_title)."', "; $sql .= "'$menu_item_path', "; $sql .= "'$menu_item_category', "; if (strlen($menu_item_order) > 0) { @@ -434,6 +323,7 @@ $db->exec(check_sql($sql)); } unset($sql); + //set the menu languages foreach ($menu["title"] as $menu_language => $menu_item_title) { $menu_language_uuid = uuid(); @@ -450,8 +340,8 @@ $sql .= "'".$menu_language_uuid."', "; $sql .= "'".$menu_item_uuid."', "; $sql .= "'".$this->menu_uuid."', "; - $sql .= "'$menu_language', "; - $sql .= "'$menu_item_title' "; + $sql .= "'".$menu_language."', "; + $sql .= "'".check_str($menu_item_title)."' "; $sql .= ")"; $db->exec(check_sql($sql)); unset($sql); @@ -460,6 +350,8 @@ } } } + + //set default group permissions $sql = "delete from v_group_permissions "; $db->query($sql); unset($sql); @@ -512,7 +404,7 @@ } unset($sql2, $result2); - //if there are no groups listed in v_menu_item_groups under menu_uuid then add the default groups + //set the default groups in v_menu_item_groups $sql = "delete from v_menu_item_groups "; $db->query($sql); unset($sql); @@ -520,6 +412,7 @@ foreach($apps as $app) { foreach ($app['menu'] as $sub_row) { foreach ($sub_row['groups'] as $group) { + //if there are no groups listed in v_menu_item_groups under menu_uuid then add the default groups $sql = "select count(*) as count from v_menu_item_groups "; $sql .= "where menu_item_uuid = '".$sub_row['uuid']."' "; $sql .= "and group_name = '$group' "; @@ -547,6 +440,9 @@ } } } + + //commit the transaction + $db->commit(); } //end function //create the menu