diff --git a/core/users/resources/classes/permission.php b/core/users/resources/classes/permission.php index e175f258fd..4f658f330a 100644 --- a/core/users/resources/classes/permission.php +++ b/core/users/resources/classes/permission.php @@ -31,15 +31,33 @@ function delete() { //set the variables $db = $this->db; - //delete the group permisisons - $sql = "delete from v_group_permissions "; - if (!$db->exec($sql)) { - //echo $db->errorCode() . "
"; - $info = $db->errorInfo(); - print_r($info); - // $info[0] == $db->errorCode() unified error code - // $info[1] is the driver specific error code - // $info[2] is the driver specific error string + //get unprotected groups and their domain uuids (if any) + $sql = "select group_name, domain_uuid from v_groups where group_protected <> 'true' "; + $prep_statement = $db->prepare(check_sql($sql)); + $prep_statement->execute(); + $result = $prep_statement->fetchAll(PDO::FETCH_NAMED); + $result_count = count($result); + if ($result_count > 0) { + foreach($result as $row) { + $unprotected_groups[$row['group_name']] = $row['domain_uuid']; + } + } + unset ($prep_statement, $sql, $result, $result_count); + //delete unprotected group permissions + if (is_array($unprotected_groups) && sizeof($unprotected_groups) > 0) { + foreach ($unprotected_groups as $unprotected_group_name => $unprotected_domain_uuid) { + $sql = "delete from v_group_permissions where "; + $sql .= "group_name = '".$unprotected_group_name."' "; + $sql .= "and domain_uuid ".(($unprotected_domain_uuid != '') ? " = '".$unprotected_domain_uuid."' " : " is null "); + if (!$db->exec($sql)) { + //echo $db->errorCode() . "
"; + $info = $db->errorInfo(); + print_r($info); + // $info[0] == $db->errorCode() unified error code + // $info[1] is the driver specific error code + // $info[2] is the driver specific error string + } + } } }