mirror of
https://github.com/opensim/opensim.git
synced 2026-08-13 05:05:43 +08:00
Bring Core Groups up to current version
This commit is contained in:
@@ -130,6 +130,13 @@ namespace OpenSim.Groups
|
||||
{
|
||||
reason = string.Empty;
|
||||
|
||||
// Check if the group already exists
|
||||
if (m_Database.RetrieveGroup(name) != null)
|
||||
{
|
||||
reason = "A group with that name already exists";
|
||||
return UUID.Zero;
|
||||
}
|
||||
|
||||
// Create the group
|
||||
GroupData data = new GroupData();
|
||||
data.GroupID = UUID.Random();
|
||||
@@ -248,13 +255,20 @@ namespace OpenSim.Groups
|
||||
return members;
|
||||
List<RoleData> rolesList = new List<RoleData>(roles);
|
||||
|
||||
// Is the requester a member of the group?
|
||||
bool isInGroup = false;
|
||||
if (m_Database.RetrieveMember(GroupID, RequestingAgentID) != null)
|
||||
isInGroup = true;
|
||||
// Check visibility?
|
||||
// When we don't want to check visibility, we pass it "all" as the requestingAgentID
|
||||
bool checkVisibility = !RequestingAgentID.Equals(UUID.Zero.ToString());
|
||||
|
||||
if (!isInGroup) // reduce the roles to the visible ones
|
||||
rolesList = rolesList.FindAll(r => (UInt64.Parse(r.Data["Powers"]) & (ulong)GroupPowers.MemberVisible) != 0);
|
||||
if (checkVisibility)
|
||||
{
|
||||
// Is the requester a member of the group?
|
||||
bool isInGroup = false;
|
||||
if (m_Database.RetrieveMember(GroupID, RequestingAgentID) != null)
|
||||
isInGroup = true;
|
||||
|
||||
if (!isInGroup) // reduce the roles to the visible ones
|
||||
rolesList = rolesList.FindAll(r => (UInt64.Parse(r.Data["Powers"]) & (ulong)GroupPowers.MemberVisible) != 0);
|
||||
}
|
||||
|
||||
MembershipData[] datas = m_Database.RetrieveMembers(GroupID);
|
||||
if (datas == null || (datas != null && datas.Length == 0))
|
||||
@@ -723,12 +737,12 @@ namespace OpenSim.Groups
|
||||
|
||||
#region Actions without permission checks
|
||||
|
||||
private void _AddAgentToGroup(string RequestingAgentID, string AgentID, UUID GroupID, UUID RoleID)
|
||||
protected void _AddAgentToGroup(string RequestingAgentID, string AgentID, UUID GroupID, UUID RoleID)
|
||||
{
|
||||
_AddAgentToGroup(RequestingAgentID, AgentID, GroupID, RoleID, string.Empty);
|
||||
}
|
||||
|
||||
public void _RemoveAgentFromGroup(string RequestingAgentID, string AgentID, UUID GroupID)
|
||||
protected void _RemoveAgentFromGroup(string RequestingAgentID, string AgentID, UUID GroupID)
|
||||
{
|
||||
// 1. Delete membership
|
||||
m_Database.DeleteMember(GroupID, AgentID);
|
||||
@@ -780,7 +794,7 @@ namespace OpenSim.Groups
|
||||
|
||||
}
|
||||
|
||||
private bool _AddOrUpdateGroupRole(string RequestingAgentID, UUID groupID, UUID roleID, string name, string description, string title, ulong powers, bool add)
|
||||
protected bool _AddOrUpdateGroupRole(string RequestingAgentID, UUID groupID, UUID roleID, string name, string description, string title, ulong powers, bool add)
|
||||
{
|
||||
RoleData data = m_Database.RetrieveRole(groupID, roleID);
|
||||
|
||||
@@ -810,12 +824,12 @@ namespace OpenSim.Groups
|
||||
return m_Database.StoreRole(data);
|
||||
}
|
||||
|
||||
private void _RemoveGroupRole(UUID groupID, UUID roleID)
|
||||
protected void _RemoveGroupRole(UUID groupID, UUID roleID)
|
||||
{
|
||||
m_Database.DeleteRole(groupID, roleID);
|
||||
}
|
||||
|
||||
private void _AddAgentToGroupRole(string RequestingAgentID, string AgentID, UUID GroupID, UUID RoleID)
|
||||
protected void _AddAgentToGroupRole(string RequestingAgentID, string AgentID, UUID GroupID, UUID RoleID)
|
||||
{
|
||||
RoleMembershipData data = m_Database.RetrieveRoleMember(GroupID, RoleID, AgentID);
|
||||
if (data != null)
|
||||
@@ -840,7 +854,7 @@ namespace OpenSim.Groups
|
||||
|
||||
}
|
||||
|
||||
private List<GroupRolesData> _GetGroupRoles(UUID groupID)
|
||||
protected List<GroupRolesData> _GetGroupRoles(UUID groupID)
|
||||
{
|
||||
List<GroupRolesData> roles = new List<GroupRolesData>();
|
||||
|
||||
@@ -865,7 +879,7 @@ namespace OpenSim.Groups
|
||||
return roles;
|
||||
}
|
||||
|
||||
private List<ExtendedGroupRoleMembersData> _GetGroupRoleMembers(UUID GroupID, bool isInGroup)
|
||||
protected List<ExtendedGroupRoleMembersData> _GetGroupRoleMembers(UUID GroupID, bool isInGroup)
|
||||
{
|
||||
List<ExtendedGroupRoleMembersData> rmembers = new List<ExtendedGroupRoleMembersData>();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user