mirror of
https://github.com/fusionpbx/fusionpbx.git
synced 2026-01-06 11:43:50 +00:00
Improve the efficiency of the Menu PHP class by removing redundant code in the restore method of the PHP class and add PDO transactions. Improve the menu language for better multi-lingual support, escape the menu item title to so it will work correctly for French and other languages.
This commit is contained in:
@@ -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();
|
||||
|
||||
|
||||
@@ -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."<br />\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
|
||||
|
||||
Reference in New Issue
Block a user