diff options
Diffstat (limited to 'OpenSim/Addons/Groups')
-rw-r--r-- | OpenSim/Addons/Groups/GroupsMessagingModule.cs | 13 | ||||
-rw-r--r-- | OpenSim/Addons/Groups/Service/GroupsService.cs | 18 |
2 files changed, 17 insertions, 14 deletions
diff --git a/OpenSim/Addons/Groups/GroupsMessagingModule.cs b/OpenSim/Addons/Groups/GroupsMessagingModule.cs index 3cece77..5de1fb4 100644 --- a/OpenSim/Addons/Groups/GroupsMessagingModule.cs +++ b/OpenSim/Addons/Groups/GroupsMessagingModule.cs | |||
@@ -246,7 +246,7 @@ namespace OpenSim.Groups | |||
246 | public void SendMessageToGroup(GridInstantMessage im, UUID groupID) | 246 | public void SendMessageToGroup(GridInstantMessage im, UUID groupID) |
247 | { | 247 | { |
248 | UUID fromAgentID = new UUID(im.fromAgentID); | 248 | UUID fromAgentID = new UUID(im.fromAgentID); |
249 | List<GroupMembersData> groupMembers = m_groupData.GetGroupMembers(fromAgentID.ToString(), groupID); | 249 | List<GroupMembersData> groupMembers = m_groupData.GetGroupMembers("all", groupID); |
250 | int groupMembersCount = groupMembers.Count; | 250 | int groupMembersCount = groupMembers.Count; |
251 | PresenceInfo[] onlineAgents = null; | 251 | PresenceInfo[] onlineAgents = null; |
252 | 252 | ||
@@ -403,15 +403,12 @@ namespace OpenSim.Groups | |||
403 | Scene aScene = m_sceneList[0]; | 403 | Scene aScene = m_sceneList[0]; |
404 | GridRegion regionOfOrigin = aScene.GridService.GetRegionByUUID(aScene.RegionInfo.ScopeID, regionID); | 404 | GridRegion regionOfOrigin = aScene.GridService.GetRegionByUUID(aScene.RegionInfo.ScopeID, regionID); |
405 | 405 | ||
406 | // Let's find out who sent it | 406 | List<GroupMembersData> groupMembers = m_groupData.GetGroupMembers("all", GroupID); |
407 | string requestingAgent = m_UserManagement.GetUserUUI(new UUID(msg.fromAgentID)); | ||
408 | |||
409 | List<GroupMembersData> groupMembers = m_groupData.GetGroupMembers(requestingAgent, GroupID); | ||
410 | List<UUID> alreadySeen = new List<UUID>(); | 407 | List<UUID> alreadySeen = new List<UUID>(); |
411 | 408 | ||
412 | if (m_debugEnabled) | 409 | //if (m_debugEnabled) |
413 | foreach (GroupMembersData m in groupMembers) | 410 | // foreach (GroupMembersData m in groupMembers) |
414 | m_log.DebugFormat("[Groups.Messaging]: member {0}", m.AgentID); | 411 | // m_log.DebugFormat("[Groups.Messaging]: member {0}", m.AgentID); |
415 | 412 | ||
416 | foreach (Scene s in m_sceneList) | 413 | foreach (Scene s in m_sceneList) |
417 | { | 414 | { |
diff --git a/OpenSim/Addons/Groups/Service/GroupsService.cs b/OpenSim/Addons/Groups/Service/GroupsService.cs index a2ef13a..24eb7f3 100644 --- a/OpenSim/Addons/Groups/Service/GroupsService.cs +++ b/OpenSim/Addons/Groups/Service/GroupsService.cs | |||
@@ -255,13 +255,19 @@ namespace OpenSim.Groups | |||
255 | return members; | 255 | return members; |
256 | List<RoleData> rolesList = new List<RoleData>(roles); | 256 | List<RoleData> rolesList = new List<RoleData>(roles); |
257 | 257 | ||
258 | // Is the requester a member of the group? | 258 | // Check visibility? |
259 | bool isInGroup = false; | 259 | // When we don't want to check visibility, we pass it "all" as the requestingAgentID |
260 | if (m_Database.RetrieveMember(GroupID, RequestingAgentID) != null) | 260 | bool checkVisibility = !RequestingAgentID.Equals("all"); |
261 | isInGroup = true; | 261 | if (checkVisibility) |
262 | { | ||
263 | // Is the requester a member of the group? | ||
264 | bool isInGroup = false; | ||
265 | if (m_Database.RetrieveMember(GroupID, RequestingAgentID) != null) | ||
266 | isInGroup = true; | ||
262 | 267 | ||
263 | if (!isInGroup) // reduce the roles to the visible ones | 268 | if (!isInGroup) // reduce the roles to the visible ones |
264 | rolesList = rolesList.FindAll(r => (UInt64.Parse(r.Data["Powers"]) & (ulong)GroupPowers.MemberVisible) != 0); | 269 | rolesList = rolesList.FindAll(r => (UInt64.Parse(r.Data["Powers"]) & (ulong)GroupPowers.MemberVisible) != 0); |
270 | } | ||
265 | 271 | ||
266 | MembershipData[] datas = m_Database.RetrieveMembers(GroupID); | 272 | MembershipData[] datas = m_Database.RetrieveMembers(GroupID); |
267 | if (datas == null || (datas != null && datas.Length == 0)) | 273 | if (datas == null || (datas != null && datas.Length == 0)) |