diff --git a/core/users/groupdelete.php b/core/users/groupdelete.php
index ba9d58a801..861642acb3 100644
--- a/core/users/groupdelete.php
+++ b/core/users/groupdelete.php
@@ -36,6 +36,10 @@ require_once "resources/require.php";
return;
}
+//add multi-lingual support
+ $language = new text;
+ $text = $language->get();
+
//get the http value and set as a variable
$group_uuid = check_str($_GET["id"]);
diff --git a/core/users/groupedit.php b/core/users/groupedit.php
index 4d4e2106b6..5af3540d14 100644
--- a/core/users/groupedit.php
+++ b/core/users/groupedit.php
@@ -45,7 +45,9 @@ require_once "resources/require.php";
//set the variables
$group_uuid = check_str($_POST['group_uuid']);
$group_name = check_str($_POST['group_name']);
+ $group_name_previous = check_str($_POST['group_name_previous']);
$domain_uuid = check_str($_POST["domain_uuid"]);
+ $domain_uuid_previous = check_str($_POST["domain_uuid_previous"]);
$group_description = check_str($_POST["group_description"]);
//check for global/domain duplicates
@@ -64,7 +66,7 @@ require_once "resources/require.php";
}
unset($sql, $prep_statement, $row);
- //insert group
+ //update group
if (!$group_exists) {
$sql = "update v_groups ";
$sql .= "set ";
@@ -73,13 +75,115 @@ require_once "resources/require.php";
$sql .= "group_description = '".$group_description."' ";
$sql .= "where group_uuid = '".$group_uuid."' ";
if (!$db->exec(check_sql($sql))) {
- //echo $db->errorCode() . "
";
- $info = $db->errorInfo();
- echo "
".print_r($info, true).""; + $error = $db->errorInfo(); + echo "
".print_r($error, true).""; exit; - // $info[0] == $db->errorCode() unified error code - // $info[1] is the driver specific error code - // $info[2] is the driver specific error string + } + + //group changed from global to domain-specific + if ($domain_uuid_previous == '' && $domain_uuid != '') { + //remove any users assigned to the group from the old domain + $sql = "delete from v_group_users where group_uuid = '".$group_uuid."' and domain_uuid <> '".$domain_uuid."' "; + if (!$db->exec(check_sql($sql))) { + $error = $db->errorInfo(); + //echo "
".print_r($error, true).""; exit; + } + //update permissions to use new domain uuid + $sql = "update v_group_permissions set domain_uuid = '".$domain_uuid."' where group_name = '".$group_name_previous."' and domain_uuid is null "; + if (!$db->exec(check_sql($sql))) { + $error = $db->errorInfo(); + //echo "
".print_r($error, true).""; exit; + } + //change group name + if ($group_name != $group_name_previous && $group_name != '') { + //change group name in group users + $sql = "update v_group_users set group_name = '".$group_name."' where group_uuid = '".$group_uuid."' and group_name = '".$group_name_previous."' "; + if (!$db->exec(check_sql($sql))) { + $error = $db->errorInfo(); + //echo "
".print_r($error, true).""; exit; + } + //change group name in permissions + $sql = "update v_group_permissions set group_name = '".$group_name."' where domain_uuid = '".$domain_uuid."' and group_name = '".$group_name_previous."' "; + if (!$db->exec(check_sql($sql))) { + $error = $db->errorInfo(); + //echo "
".print_r($error, true).""; exit; + } + } + } + + //group changed from one domain to another + else if ($domain_uuid_previous != '' && $domain_uuid != '' && $domain_uuid_previous != $domain_uuid) { + //remove any users assigned to the group from the old domain + $sql = "delete from v_group_users where group_uuid = '".$group_uuid."' and domain_uuid = '".$domain_uuid_previous."' "; + if (!$db->exec(check_sql($sql))) { + $error = $db->errorInfo(); + //echo "
".print_r($error, true).""; exit; + } + //update permissions to use new domain uuid + $sql = "update v_group_permissions set domain_uuid = '".$domain_uuid."' where group_name = '".$group_name_previous."' and domain_uuid = '".$domain_uuid_previous."' "; + if (!$db->exec(check_sql($sql))) { + $error = $db->errorInfo(); + //echo "
".print_r($error, true).""; exit; + } + //change group name + if ($group_name != $group_name_previous && $group_name != '') { + //change group name in group users + $sql = "update v_group_users set group_name = '".$group_name."' where group_uuid = '".$group_uuid."' and group_name = '".$group_name_previous."' "; + if (!$db->exec(check_sql($sql))) { + $error = $db->errorInfo(); + //echo "
".print_r($error, true).""; exit; + } + //change group name in permissions + $sql = "update v_group_permissions set group_name = '".$group_name."' where domain_uuid = '".$domain_uuid."' and group_name = '".$group_name_previous."' "; + if (!$db->exec(check_sql($sql))) { + $error = $db->errorInfo(); + //echo "
".print_r($error, true).""; exit; + } + } + } + + //group changed from domain-specific to global + else if ($domain_uuid_previous != '' && $domain_uuid == '') { + //change group name + if ($group_name != $group_name_previous && $group_name != '') { + //change group name in group users + $sql = "update v_group_users set group_name = '".$group_name."' where group_uuid = '".$group_uuid."' and group_name = '".$group_name_previous."' "; + if (!$db->exec(check_sql($sql))) { + $error = $db->errorInfo(); + //echo "
".print_r($error, true).""; exit; + } + //change group name in permissions + $sql = "update v_group_permissions set group_name = '".$group_name."' where domain_uuid = '".$domain_uuid_previous."' and group_name = '".$group_name_previous."' "; + if (!$db->exec(check_sql($sql))) { + $error = $db->errorInfo(); + //echo "
".print_r($error, true).""; exit; + } + } + //update permissions to not use a domain uuid + $sql = "update v_group_permissions set domain_uuid = null where group_name = '".$group_name."' and domain_uuid = '".$domain_uuid_previous."' "; + if (!$db->exec(check_sql($sql))) { + $error = $db->errorInfo(); + //echo "
".print_r($error, true).""; exit; + } + } + + //domain didn't change, but name may still + else { + //change group name + if ($group_name != $group_name_previous && $group_name != '') { + //change group name in group users + $sql = "update v_group_users set group_name = '".$group_name."' where group_uuid = '".$group_uuid."' and group_name = '".$group_name_previous."' "; + if (!$db->exec(check_sql($sql))) { + $error = $db->errorInfo(); + //echo "
".print_r($error, true).""; exit; + } + //change group name in permissions + $sql = "update v_group_permissions set group_name = '".$group_name."' where domain_uuid ".(($domain_uuid != '') ? " = '".$domain_uuid."' " : " is null ")." and group_name = '".$group_name_previous."' "; + if (!$db->exec(check_sql($sql))) { + $error = $db->errorInfo(); + //echo "
".print_r($error, true).""; exit; + } + } } $_SESSION["message"] = $text['message-update']; @@ -140,6 +244,7 @@ require_once "resources/require.php"; echo $text['label-group_name']."\n"; echo "\n"; echo "